0

を実装しました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());
        }
    }
}

どんな助けでも大歓迎です!

4

1 に答える 1