を実装しましたCellTree
。GWT バージョン 2.5.1-rc1 を使用していますが、問題なく動作しました。サーバーの応答は非同期です。しかし、これで検索を実装する必要がありCellTree
、ノードを見つけてこれを開く必要があります。でそれをどのように実装するか考えていCellTree
ますか?
私のビューコード:
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);
私のCustomTreeModel
コード:
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());
}
}
}
どんな助けでも大歓迎です!