JFace でツリー ビューアーを作成していますが、何かを達成したいと考えています。
その中でフィルターを使用しています。フィルターはうまく機能しますが、完全ではありません。メソッドを使用filter.expandAll()
すると、フィルタはツリーのすべてのアイテムをフィルタリングしますが、非常に厄介なことがあります。ツリーのすべてのアイテムをフィルタリングしますが、空になったアイテムの親は非表示になりません。
例:
ご覧のとおり、フィルターに一致する項目は "General/Map/New" の 1 つだけです。ただし、実際には子が含まれていないにもかかわらず、すべての親が表示されます。
私のフィルターのコードの一部:
if (element instanceof HotkeyCategory) {
return true;
} else if (element instanceof HotkeyItem) {
return ((HotkeyItem) element).getLabel().toLowerCase()
.matches(searchString.toLowerCase());
}
return false;
上記のとおり、すべての子の親を許可します。しかし、空の親を自動的に隠す方法があるのではないでしょうか?
いくつかのアイデアがありました。ツリービューアにリダイレクトする前にフィルタリングを行い、許可されたアイテムとその親でArrayListを作成するかboolean show;
、すべてのアイテムとすべての親に追加してフィルタで返しますが、これらの方法はどれも私を満足させません。それらは、このタスクには少し複雑すぎます。
だから、私の質問は次のとおりです。私が望むものを達成する簡単な方法はありますか?
よろしく。