Как отсортировать TreeList с другим компаратором для каждого столбца в NatTable - PullRequest
0 голосов
/ 03 июня 2019

Я использую NatTable для отображения дерева с несколькими столбцами. Дерево сведено в SortedList, который используется для создания TreeList.

EventList<Person> eventList = GlazedLists.eventList(perfStats.getFlattenedTree());
TransformedList<Person, Person> rowObjectsGlazedList = GlazedLists.threadSafeList(eventList);
SortedList<Person> sortedList = new SortedList<(rowObjectsGlazedList, null);
TreeList treeList = new TreeList(sortedList, treeFormat, TreeList.nodesStartCollapsed());

Это работает для отображения дерева. Тем не менее, теперь моя проблема заключается в том, как мне правильно это отсортировать?

Желаемым результатом будет правильная сортировка корней, затем сортировка дочерних элементов внутри и т. Д.

Сейчас я использую модель GlazedListsSortModel, которая сортирует сплющенное дерево, а затем строит отображение из того, что не работает.

Буду признателен за любую помощь или просто указание мне в правильном направлении!

1 Ответ

0 голосов
/ 04 июня 2019

При использовании TreeList вы передаете Comparator для древовидной структуры через TreeList#Format. Это необходимо для обеспечения правильного создания дерева, поскольку оно получено из List. Таким образом, даже если сортировка применяется через SortedList, Comparator из TreeList#Format выиграет в конце.

Чтобы удовлетворить ваши требования, вам необходимо реализовать TreeList#Format, который учитывает сортировку столбцов. Это можно сделать, используя, например, NatTable SortableTreeComparator. Вы можете взглянуть на наш TreeGridExample , чтобы получить представление о том, как это может выглядеть.

Более расширенную версию можно увидеть в GroupByComparator , который используется для поддержки сортировки по столбцам с помощью функции GroupBy.

...