I have implemented a CellTree, I'm using GWT version 2.5.1-rc1 and it worked fine, the server response is asynchronous. But I need to implement a search in this CellTree and when find the node and open this. Any idea how I implement that in CellTree?
My View code:
VerticalPanel vPanel = new VerticalPanel();
CustomTreeModel model = new CustomTreeModel();
CellTree.Resources res = GWT.create(CellTree.BasicResources.class);
CellTree tree = new CellTree(model, null, res);
vPanel.add(tree);
My CustomTreeModel code:
public class CustomTreeModel implements TreeViewModel {
private MyCell dataTreeCell;
private SingleSelectionModel<TreeNode> selectionModel;
public CustomTreeModel() {
dataTreeCell = new MyCell();
selectionModel = new SingleSelectionModel<TreeNode>();
}
/**
* Get the {@link NodeInfo} that provides the children of the specified
* value.
*/
@Override
public <T> TreeViewModel.NodeInfo<?> getNodeInfo(T value) {
ListDataProvider<TreeNode> dataProvider = new ListDataProvider<TreeNode>();
requestData(dataProvider, (TreeNode) value);
return new DefaultNodeInfo<TreeNode>(dataProvider, dataTreeCell,
selectionModel, null);//dataTreeCell
}
@Override
public boolean isLeaf(Object value) {
return (value instanceof ...);
}
private void requestData(final ListDataProvider<TreeNode> dataProvider,
final TreeNode node) {
try {
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
rb.setCallback(new RequestCallback() {
@Override
public void onError(Request request, Throwable exception) {
Window.alert("Error occurred" + exception.getMessage());
}
@Override
public void onResponseReceived(Request request, Response response) {
if (200 == response.getStatusCode()) {
dataProvider.getList().addAll(response.branchesList());
dataProvider.refresh();
} else {
Window.alert("Error occurred" + response.getStatusCode());
}
}
});
rb.send();
} catch (RequestException e) {
Window.alert("Error occurred" + e.getMessage());
}
}
}
Any help is welcome!