Tôi đang áp dụng một ViewerFilter
cho một cây của một vài nhánh, nhưng chủ yếu là lá. Bộ lọc thực sự áp dụng cho lá, sử dụng các thuộc tính trong lá. Tất cả các cành cây đều bị bỏ hoang để lá của chúng có thể xuất hiện.Cách tốt nhất để sử dụng ViewerFilter trên TreeViewer?
Tuy nhiên tôi muốn lọc ra các nhánh không chứa lá đã chọn và tôi không thể thấy cơ chế nào trong phạm vi ViewerFilter
cho phép điều này.
Điều này có thể thực hiện được không?
Ví dụ, với cây danh nghĩa bên dưới (nơi b
là một chi nhánh, một L
là một lá)
b0
b1
L2
L4
L8
b2
L1
L3
L5
Tôi muốn áp dụng một ViewerFilter
mà chỉ chọn thậm chí lá và cành có chứa thậm chí lá . Cây kết quả sẽ được ..
b0
b1
L2
L4
L8
.. nơi chi nhánh b2
không hiển thị vì nó có chứa không có con được lựa chọn, nhưng chi nhánh b0
và b1
làm.
Tôi nghi ngờ rằng thời gian chạy của điều này khá xấu cho các bộ sưu tập lớn của các yếu tố. Ví dụ, tất cả các tài nguyên là một không gian làm việc. Tôi nghĩ rằng điều này sẽ, đối với mỗi tài nguyên, hãy truy cập tất cả các tài nguyên có chứa của nó. Đó là do đó * O (n^2) *. Nên có một giải pháp * O (n) *. – Lii
Giải pháp này hoạt động thực sự tồi tệ khi người xem có các bộ lọc khác. Ví dụ trong trường hợp tài nguyên không gian làm việc, khi một bộ lọc khác lọc tất cả tài nguyên khỏi một thư mục, bộ lọc này sẽ vẫn báo cáo thư mục là không trống, vì bộ lọc này không nhận biết được bộ lọc khác. – Lii