2013-06-07 2 views
3

JFace에서 트리 뷰어를 만들고 있는데 뭔가를 달성하고 싶습니다.빈 부모 숨기기 - JFace의 TreeViewer

필터를 사용합니다. 필터는 잘 작동하지만 완벽하지는 않습니다. filter.expandAll() 메서드를 사용하면 필터가 트리의 모든 항목을 필터링하지만 실제로는 짜증이납니다. 트리의 모든 항목을 필터링하지만 아이템 부모를 숨기지 않고 이제는 비어있게됩니다.

예 : "일반 /지도/새로운"당신이 볼 수 있듯이
Screen shot - empty parents aren't hided
, 필터와 일치 하나의 항목 만이있다. 그러나 실제로 부모가 모두 아이들을 포함하지는 않았지만 부모의 모든 모습이 나타납니다. 내 필터의 코드

부분 : 위에서 볼 수 있듯이

if (element instanceof HotkeyCategory) { 
    return true; 
} else if (element instanceof HotkeyItem) { 
    return ((HotkeyItem) element).getLabel().toLowerCase() 
      .matches(searchString.toLowerCase()); 
} 

return false; 

, 나는 아이들의 부모를 모두 허용합니다. 그러나 어쩌면 빈 부모를 숨기는 자동적 인 방법이 있을까요?

몇 가지 아이디어가 있습니다. 트리 뷰어로 리다이렉트하기 전에 필터링을 수행하고 허용 된 항목과 부모를 사용하여 ArrayList를 만들거나 모든 항목과 모든 부모에게 boolean show;을 추가하고 필터로 반환하십시오. 그러나 이러한 방법으로 만족스럽지 않습니다. 그들은이 작업을하기에는 너무 복잡합니다.

내 질문은 : 내가 원하는 것을 성취 할 수있는 간단한 방법이 있습니까?

감사합니다.

답변