Может ли TreeViewer применять разные фильтры к одним и тем же данным?
У меня есть древовидная структура, которая добавляется к 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
является то, что он показывает строки для всех родительских узлов. Я не хочу, чтобы родительские узлы были видны, и я не хочу быть в состоянии развернуть узел, который я хочу отобразить. Есть ли способ удалить / скрыть эти строки?
По сути, моя проблема выглядит очень похоже (визуально) на изображение, показанное в этом посте: Скрытие пустых родителей - TreeViewer JFace
Я не могу использовать FilteredTree
так как я уже использую XViewer
и мне не нужно поле для ввода текста.
Я пытался поиграть с XViewerLabelProvider
, но он по-прежнему возвращает пустые строки дерева для узлов, которые меня не интересуют.
Какие-либо предложения? Спасибо!