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);
}
}