如何从自定义SelectionEventManager访问GWT CellTree显示的对象层次结构?

时间:2012-02-14 14:39:15

标签: java gwt

我想制作一个使用基于复选框的单元格的自定义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 个答案:

答案 0 :(得分:1)

您的TopologyNodeRep班级是否分别引用了其子女和家长? 如果是这样,您可以检索特定选定TopologyNodeRep实例的子项,并自动选择其子项。 像这样:

List<TopologyNodeRep> childs = rowValue.getChilds();
for (TopologyNodeRep child: childs) {
    selectionModel.setSelected(child,true);
}