@Override
protected void onRender(Element parent, int index) {
super.onRender(parent, index);
setLayout(new FlowLayout(12));
final Html html = new Html("This tree is handling 1 child. Expand to get more!");
html.setStyleName("pad-text");
LayoutContainer container = new LayoutContainer();
container.setSize(300, 350);
container.setBorders(true);
container.setLayout(new FitLayout());
TreeStore<ModelData> store = new TreeStore<ModelData>();
final TreePanel<ModelData> tree = new TreePanel<ModelData>(store) {
@Override
protected boolean hasChildren(ModelData m) {
return true;
}
};
tree.setTrackMouseOver(false);
tree.setCheckable(true);
tree.setCheckStyle(CheckCascade.CHILDREN);
tree.setDisplayProperty("name");
store.setKeyProvider(new ModelKeyProvider<ModelData>() {
public String getKey(ModelData model) {
return model.get("id");
}
});
ModelData m = createModel("Fast Tree");
store.add(m, false);
tree.addListener(Events.BeforeExpand, new Listener<TreePanelEvent<ModelData>>() {
public void handleEvent(TreePanelEvent<ModelData> be) {
if (be.getNode().getItemCount() != 0) {
return;
}
List<ModelData> list = new ArrayList<ModelData>();
for (int i = 0; i < 500; i++) {
ModelData m = createModel("Tree Item " + i);
list.add(m);
}
tree.getStore().insert(be.getNode().getModel(), list, 0, true);
}
});
tree.addListener(Events.Expand, new Listener<TreePanelEvent<ModelData>>() {
public void handleEvent(TreePanelEvent<ModelData> be) {
html.setHtml("<span>This tree is handling " + tree.getStore().getAllItems().size()
+ " children. Expand to get more!</span>");
}
});