0

次の問題で少し迷っています。「org.eclipse.dialogs.FilterTree」を展開するクラスを使用しています。filtertextが空の場合、ツリー内のすべてのノードが折りたたまれます。しかし、この場合はツリーを拡張したいと思います。

誰か、ヒントを教えてください。これを行うための最良の方法は何ですか?これまでさまざまなメソッドをオーバーライドしてきましたが、成功しませんでした。

ありがとう

4

1 に答える 1

1

を使用してすべてのツリーを展開できますTreeViewer#expandAll()

編集1:

フィルタテキストコントロールが変更されるたびにツリーが更新されますが、多少のFilteredTree遅延があります(デフォルトでは200ミリ秒)。したがって、すべてのツリーを展開するためにテキストコントロールに変更リスナーを追加すると、その時点で異なるアイテムのセット(おそらく何も表示されない)が表示され、後で更新ジョブが独自のルールを使用して状態を上書きします。したがって、doCreateRefreshJob()文字列が空の場合にすべてのツリーを展開するためにオーバーライドするかupdateToolbar(boolean)、更新ジョブの最後に常に呼び出されるオーバーライドを行う必要があります。これは私が試したものであり、うまくいきました:

FilteredTree ft = new FilteredTree(composite, SWT.FULL_SELECTION, p, true) {
    @Override
    protected void updateToolbar(boolean visible) {
        super.updateToolbar(visible);
        treeViewer.expandAll();
    }
};
于 2013-02-25T15:07:28.850 に答える