package e4s.tutorial; import java.util.Vector; import e4s.html.*; import e4s.html.ajax.E4AjaxTable; import e4s.servlet.E4ModuleImplementation; import e4s.servlet.E4ServletImplementation_Intf; import e4s.translate.E4LabelNone; import e4s.util.E4Long; /** * Example for E4AjaxTable. * * {@tutorial Example_E4AjaxTable} */ public class Example_E4AjaxTable extends E4ModuleImplementation { public static E4Method start; private static class SortableTest extends E4AjaxTable { private Vector m_data = new Vector(); public SortableTest() { super("TEST"); // define some behavior setEnableSorting(true); setEnableChangeColumnOrder(true); setPageSize(12); setCaption(new E4LabelNone("E4AjaxTable-Test")); defineColumn(new E4LabelNone("Alpha"),Align.CENTER); E4AjaxTableColumn cTwo = defineColumn(new E4LabelNone("Beta"),Align.CENTER); cTwo.setColspan(2); defineColumn(new E4LabelNone("Gamma"),Align.CENTER); // init test data init(); } /** * Init some test data */ private void init() { for( int i = 0; i < 200; i++ ) { String s[] = new String[1 + 3 + 1]; for( int k = 0; k < s.length; k++ ) s[k] = E4Long.format( (int) (Math.random() * 10000),5 ); m_data.addElement(s); } } /** * Draw the data for a given row/column. */ public void getData(TD td, int row, int col, E4ServletImplementation_Intf servlet) { String s[] = (String[])m_data.elementAt(row); td.println(s[col]); } /** * Provide the number of rows */ public int getNumRows() { return m_data.size(); } /** * Provide a sort function */ public void changeSort(int column, boolean ascending) { int sz = m_data.size(); for( int ia = 0; ia < sz - 1; ia++ ) { String a[] = (String[])m_data.elementAt(ia); for( int ib = ia + 1; ib < sz; ib++ ) { String b[] = (String[])m_data.elementAt(ib); int c = a[column].compareTo(b[column]); if (ascending) c *= -1; if (c > 0) { m_data.setElementAt(a,ib); m_data.setElementAt(b,ia); a = b; } } } } } /** * Create the Ajax-Table object by binding it to the HTML context. */ public void start(HTML html) { // instanciate inheritated object of E4AjaxTable object SortableTest tbl = new SortableTest(); // add it to the HTML context E4AjaxElement ae = html.AjaxElement(tbl, getServlet()); // must be shown initially ae.setShowOnLoad(true); } }