Как получить доступ к иерархии объектов, отображаемой GWT CellTree, из пользовательского SelectionEventManager? - PullRequest
1 голос
/ 14 февраля 2012

Я хотел бы сделать пользовательский CellTree, который бы использовал ячейки на основе флажков (я бы хотел использовать флажки с тремя состояниями, поэтому мне придется написать собственную ячейку). Я хотел бы сделать выбор родительского узла, чтобы выбрать все его дочерние элементы, а также, если все дочерние элементы выбраны, то флажок родительского узла также должен быть выбран. Если не все дочерние элементы выбраны только некоторые из них, родительский флажок должен находиться в так называемом «третьем состоянии».

Для этого я сделал пользовательский public class TriStateSelectionEventManager extends DefaultSelectionEventManager<TopologyNodeRep> и хотел переопределить его

public void doMultiSelection(MultiSelectionModel<? super TopologyNodeRep> selectionModel,
                                 HasData<TopologyNodeRep> display,
                                 int row,
                                 TopologyNodeRep rowValue,
                                 DefaultSelectionEventManager.SelectAction action,
                                 boolean selectRange,
                                 boolean clearOthers)

метод. Я подумал, что это наиболее подходящий способ реализовать это требование. Моя проблема в том, что из этого метода я не могу получить доступ к данным дерева. Полученный объект display содержит всю необходимую информацию, но к нему нельзя получить доступ, так как это экземпляр CellTreeNodeView.NodeCellList, который является частным внутренним классом класса доступа к пакету ..: - (

У вас есть идеи, как реализовать это требование в GWT?

1 Ответ

1 голос
/ 15 февраля 2012

Есть ли в вашем классе TopologyNodeRep ссылки на своих детей и родителей соответственно? В этом случае вы можете получить дочерние элементы определенного выбранного TopologyNodeRep экземпляра, а также автоматически выбрать его дочерние элементы. Примерно так:

List<TopologyNodeRep> childs = rowValue.getChilds();
for (TopologyNodeRep child: childs) {
    selectionModel.setSelected(child,true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...