/**
* Sencha GXT 3.0.0b - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.explorer.client.tree;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.TreeStore;
import com.sencha.gxt.examples.resources.client.model.BaseDto;
import com.sencha.gxt.explorer.client.model.Example;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.event.BeforeExpandItemEvent;
import com.sencha.gxt.widget.core.client.event.BeforeExpandItemEvent.BeforeExpandItemHandler;
import com.sencha.gxt.widget.core.client.event.ExpandItemEvent;
import com.sencha.gxt.widget.core.client.event.ExpandItemEvent.ExpandItemHandler;
import com.sencha.gxt.widget.core.client.tree.Tree;
import com.sencha.gxt.widget.core.client.tree.Tree.TreeNode;
@Example.Detail(name = "Fast Tree", category = "Tree", icon = "fasttree")
public class FastTreeExample implements IsWidget, EntryPoint {
private int counter = 0;
class KeyProvider implements ModelKeyProvider<BaseDto> {
@Override
public String getKey(BaseDto item) {
return item.getId().toString();
}
}
@Override
public void onModuleLoad() {
RootPanel.get().add(this);
}
@Override
public Widget asWidget() {
final ContentPanel panel = new ContentPanel();
panel.setHeadingText("Fast Tree");
panel.setPixelSize(315, 400);
panel.addStyleName("margin-10");
final TreeStore<BaseDto> store = new TreeStore<BaseDto>(new KeyProvider());
final Tree<BaseDto, String> tree = new Tree<BaseDto, String>(store, new ValueProvider<BaseDto, String>() {
@Override
public String getValue(BaseDto object) {
return object.getName();
}
@Override
public void setValue(BaseDto object, String value) {
}
@Override
public String getPath() {
return "name";
}
}) {
protected boolean hasChildren(BaseDto model) {
return true;
};
};
tree.addBeforeExpandHandler(new BeforeExpandItemHandler<BaseDto>() {
@Override
public void onBeforeExpand(BeforeExpandItemEvent<BaseDto> event) {
TreeNode<BaseDto> node = tree.findNode(event.getItem());
if (store.getChildCount(node.getModel()) != 0) {
return;
}
List<BaseDto> list = new ArrayList<BaseDto>();
for (int i = 0; i < 500; i++) {
BaseDto m = createModel("Tree Item " + i);
list.add(m);
}
tree.getStore().add(event.getItem(), list);
}
});
tree.addExpandHandler(new ExpandItemHandler<BaseDto>() {
@Override
public void onExpand(ExpandItemEvent<BaseDto> event) {
panel.setHeadingText("FastTree - This tree is handling " + store.getAllItemsCount() + " children");
}
});
BaseDto m = createModel("Fast Tree");
store.add(m);
panel.add(tree);
return panel;
}
private BaseDto createModel(String n) {
return new BaseDto(counter++, n);
}
}