Mar*_*wie 9 swt eclipse-plugin jface treeviewer
我正在申请ViewerFilter一棵树上的几棵树,但大多是树叶.过滤器确实适用于叶子,使用叶子内的属性.所有树枝都保持不变,以便它们的叶子可以出现.
但是我想过滤掉不包含选定叶子的分支,我可以看到其中没有ViewerFilter允许这样的机制.
这有可能吗?
例如,给定下面的概念树(其中b是分支,a L是叶子)
b0
b1
L2
L4
L8
b2
L1
L3
L5
Run Code Online (Sandbox Code Playgroud)
我想申请一个ViewerFilter只选择甚至包含叶子的树叶和树枝.结果树将是......
b0
b1
L2
L4
L8
Run Code Online (Sandbox Code Playgroud)
..分支b2不显示,因为它不包含选定的子项,但分支b0和b1do.
San*_*uri 13
class MyFilter extends ViewerFilter{
private boolean isLeaf(Object element){
// implement this
}
private boolean isEvenLeaf(Object leaf){
// implement this
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element){
if (isLeaf(element))
return isEventLeaf(element);
else {
StructuredViewer sviewer = (StructuredViewer) viewer;
ITreeContentProvider provider = (ITreeContentProvider) sviewer.getContentProvider();
for (Object child: provider.getChildren(element)){
if (select(viewer, element, child))
return true;
}
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)