private int pCount = 0;
private DialogBox db = new DialogBox(true);
public void onModuleLoad() {
EventList el = true ? new ObservingEventList() : EventLists.eventList(); this.el = el;
sel = EventLists.sortedEventList(el); el = sel;
fel = EventLists.filteredEventList(el); el = fel;
rel = EventLists.rangedEventList(el, 4); el = rel;
//rel = EventLists.steadyRangedEventList(el, 4); el = rel;
ot = new ObjectListTable(new OLTR(), el);
ot.setWidth("100%");
RootPanel.get("log").add(vp);
db.setText("ObjectListTable in a DialogBox");
db.setPopupPosition(100, 100);
final List objects = ot.getObjects();
objects.add(new Person("Sandy", 28));
objects.add(0, new Person("Keebz", 25));
objects.add(new Person("Bill", 33));
objects.add(new Person("Ted", 55));
if (!false) {
final List l = new ArrayList();
l.add(objects.get(0));
l.add(objects.get(1));
l.add(objects.get(3));
objects.retainAll(l);
} else {
objects.remove(1);
}
RootPanel.get("tableDiv").add(ot);
final FlowPanel fp = new FlowPanel();
final Button remove2 = new Button("Remove 2");
remove2.setTitle("Removes the first and last Person from the list.");
remove2.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
if (objects.size() > 0) {
final List two = new ArrayList();
if (objects.size() > 1) two.add(objects.get(objects.size() - 1));
two.add(objects.get(0));
objects.removeAll(two);
}
}
});
fp.add(remove2);
final Button addPerson = new Button("Add Person");
addPerson.setTitle("Add a Person instance to the List.");
addPerson.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
objects.add(new Person("Person " + (pCount++), (int)(Math.random() * 100)));
}
});
fp.add(addPerson);
if (sel == null) {
final Button transpose = new Button("Transpose");
transpose.setTitle("Switch two Person instances in the List");
transpose.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
final int a = (int)(Math.random() * objects.size());
int b;
do {
b = (int)(Math.random() * objects.size());
} while (a == b);
final Object oa = objects.get(a);
final Object ob = objects.get(b);
objects.set(b, oa);
objects.set(a, ob);
}
});
fp.add(transpose);
}
final int instances = 500;
final Button oneK = new Button("" + instances);
oneK.setTitle("Add " + instances + " Person instances");
oneK.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
final List l = new ArrayList();
for (int i=0; i < instances; i++) {
l.add(new Person("Person " + (pCount++), (int)(Math.random() * 100)));
}
final long start = System.currentTimeMillis();
DeferredCommand.addCommand(new Command() {
public void execute() {
final long end = System.currentTimeMillis();
vp.add(new Label("addAll took: " + (end - start)));
Window.setTitle("addAll took: " + (end - start));
}
});
objects.addAll(l);
}
});
fp.add(oneK);
final Button clear = new Button("Clear");
clear.setTitle("Calls clear() on the backing EventList.");
clear.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
TestObjectListTable.this.el.clear();
}
});
fp.add(clear);
final Button attach = new Button("Detach");
attach.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
final Button attach = (Button)sender;
final long start = System.currentTimeMillis();
DeferredCommand.addCommand(new Command() {
public void execute() {
final long end = System.currentTimeMillis();
vp.add(new Label("Attach/Detach took: " + (end - start)));
Window.setTitle("Attach/Detach took: " + (end - start));
}
});
if (ot.isAttached()) {
// detach
RootPanel.get("tableDiv").remove(ot);
attach.setText("Attach");
} else {
// attach
RootPanel.get("tableDiv").add(ot);
attach.setText("Detach");
}
}
});
fp.add(attach);
final Button dbb = new Button("DialogBox");
dbb.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
Widget w = db.getWidget();
if (w instanceof HTMLTable) {
w = ((HTMLTable)w).getWidget(1,0);
}
if (w == null) {
db.setWidget(new ObjectListTable(new OLTR(), ot.getObjects()));
}
db.show();
}
});
fp.add(dbb);
if (fel != null) {
final TextBox lower = new TextBox();
lower.setWidth("3em");
final TextBox upper = new TextBox();
upper.setWidth("3em");
final Button filterButton = new Button("Filter Ages");
filterButton.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
final String lowerText = lower.getText().trim();
final int l;
try {
l = Integer.parseInt(lowerText.length() > 0 ? lowerText : "0");
} catch (NumberFormatException nfe) {
Window.alert("Lower age bound must be empty or a number.");
return;
}
final String upperText = upper.getText().trim();
final int u;
try {
u = Integer.parseInt(upperText.length() > 0 ? upperText : "999999");
} catch (NumberFormatException nfe) {
Window.alert("Upper age bound must be empty or a number.");
return;
}
fel.setFilter(new FilteredEventList.Filter() {
public boolean accept(final Object element) {
final Person person = (Person)element;
return l < person.getAge() && person.getAge() < u;
}
});
}
});
lower.addKeyboardListener(new KeyboardListenerAdapter(){
public void onKeyUp(final Widget sender, final char keyCode, final int modifiers) {
super.onKeyUp(sender, keyCode, modifiers);
if (KeyboardListener.KEY_ENTER == keyCode) {
filterButton.click();
}
}
});
upper.addKeyboardListener(new KeyboardListenerAdapter(){
public void onKeyUp(final Widget sender, final char keyCode, final int modifiers) {
super.onKeyUp(sender, keyCode, modifiers);
if (KeyboardListener.KEY_ENTER == keyCode) {
filterButton.click();
}
}
});
final HorizontalPanel hp = new HorizontalPanel();
hp.add(new Label("From:"));
hp.add(lower);
hp.add(new Label("to:"));
hp.add(upper);
hp.add(filterButton);
fp.add(hp);
}
if (rel != null) {
final TextBox maxSize = new TextBox();
maxSize.setWidth("3em");
maxSize.setText(Integer.toString(rel.getMaxSize()));
rel.addListEventListener(new ListEventListener() {
public void listChanged(final ListEvent listEvent) {
maxSize.setText(Integer.toString(rel.getMaxSize()));
}
});
maxSize.setTitle("Enter the size of each page");
final Button setMaxSize = new Button("Set maxSize");
setMaxSize.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
try {
rel.setMaxSize(Integer.parseInt(maxSize.getText()));
} catch (NumberFormatException nfe) {
Window.alert("maxSize must be a integer");
}
}
});
maxSize.addKeyboardListener(new KeyboardListenerAdapter() {
public void onKeyUp(final Widget sender, final char keyCode, final int modifiers) {
super.onKeyUp(sender, keyCode, modifiers);
if (KeyboardListener.KEY_ENTER == keyCode) {
setMaxSize.click();
}
}
});
final TextBox start = new TextBox();
start.setWidth("3em");
start.setText(Integer.toString(rel.getStart()));
rel.addListEventListener(new ListEventListener() {
public void listChanged(final ListEvent listEvent) {
start.setText(Integer.toString(rel.getStart()));
}
});
start.setTitle("Enter the offset for the page.");
final Button setStart = new Button("Set start offset");
setStart.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
try {
rel.setStart(Integer.parseInt(start.getText()));
} catch (NumberFormatException nfe) {
Window.alert("start offset must be a integer");
}
}
});
start.addKeyboardListener(new KeyboardListenerAdapter() {
public void onKeyUp(final Widget sender, final char keyCode, final int modifiers) {
super.onKeyUp(sender, keyCode, modifiers);
if (KeyboardListener.KEY_ENTER == keyCode) {
setStart.click();
}
}
});
final Button nextPage = new Button("Next Page");
nextPage.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
final int m = Integer.parseInt(maxSize.getText());
final int s = Integer.parseInt(start.getText()) + m;
start.setText("" + s);
setStart.click();
}
});
final Button r1 = new Button("Deep Remove");
r1.setTitle("Removes first element of deepest EventList");
r1.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
final List el = TestObjectListTable.this.el;
if (el.size() > 0) {
el.remove(0);
}
}
});
final HorizontalPanel hp = new HorizontalPanel();