0

我有一个添加到XViewer(XViewer本质上是增强的TreeViewer) 的树结构。我想使用两个不同的视图显示数据(取决于用户单击的单选按钮)。如果用户选择第一个视图,他们将看到树形的数据。如果用户选择第二个视图,他们将看到一个扁平版本的数据,类似于表格。

是否可以使用ViewerFilter(可能还有其他类型的过滤)来动态切换数据的显示?还是我必须跟踪不同的数据结构并在用户单击单选按钮时手动切换它们?例如:维护setInput(tree)setInput(List)?我宁愿只维护一个数据结构作为输入,并以不同的方式呈现它。

下面显示了一个简单的示例。

public class Foo{
 int myIntOne;
 String myStringOne;
 String myStringTwo;
 public Foo(int i, String s1, String s2){
    myIntOne = i;
    myStringOne = s1;    
    myStringTwo = s2;
 }
}

public class Example extends XViewer{
 public void someMethod(){
    //Create some fake data
    Foo a = new Foo(1,"John","Doe");
    Foo a1 = new Foo(1,"Mike","Doe");
    Foo b = new Foo(2,"Steve","Smith");
    Foo c = new Foo(3,"Roger","Jones");

    // Combine them into a tree structure
    // Not shown since outside scope of question

    setInput(treeStructure);
 }
}

========
View one
========
All
-----
Doe
 -John
 -Mike
Smith
 - Steve
Jones
 - Roger

========
View Two
========
FName | LName | Number
----------------------
John  | Doe   | 1
Mike  | Doe   | 1
Steve | Smith | 2
Roger | Jones | 3

使用的问题ViewerFilter是它显示所有父节点的行。我不希望父节点可见,也不希望能够钻入我想要显示的节点。有没有办法删除/隐藏这些行?

基本上,我的问题看起来与这篇文章中显示的图片非常相似(视觉上): 隐藏空父母 - JFace 的 TreeViewer

我不能使用 a FilteredTree,因为我已经在使用 anXViewer并且不需要文本输入字段。

我尝试使用XViewerLabelProvider,但它仍然为我不感兴趣的节点返回空白树行。

有什么建议么?谢谢!

4

0 回答 0