Я применяю ViewerFilter
к дереву из нескольких ветвей, но в основном уходит. Фильтр действительно применим к листьям, используя свойства внутри листа. Все ветви остаются нетронутыми, так что их листья могут появиться.Как лучше всего использовать ViewerFilter на TreeViewer?
Однако я бы хотел отфильтровать ветки, которые не содержат выбранных листьев, и я не вижу никакого механизма в пределах ViewerFilter
, который позволяет это.
Возможно ли это вообще?
Например, с учетом условной дерево ниже (где b
является ветвь, L
является листом)
b0
b1
L2
L4
L8
b2
L1
L3
L5
Я хотел бы применить ViewerFilter
, что только выбирает даже листья и ветки, которые содержат даже листья , Полученное дерево будет ..
b0
b1
L2
L4
L8
.. где филиал b2
не отображается, как она не содержит выбранные детей, но ветви b0
и b1
делать.
Я подозреваю, что время работы этого довольно плохо для больших коллекций элементов. Например, все ресурсы являются рабочей областью. Я думаю, что для каждого ресурса он будет посещать все свои ресурсы. Следовательно, * O (n^2) *. Должно быть решение * O (n) *. – Lii
Это решение работает очень плохо, когда у зрителя есть другие фильтры. Например, в случае ресурсов рабочей области, когда другой фильтр отфильтровывает все ресурсы из папки, этот фильтр все равно будет сообщать папке как непустую, так как этот фильтр не знает о другом фильтре. – Lii