我想制作一个使用基于复选框的单元格的自定义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中实现此要求?
答案 0 :(得分:1)
您的TopologyNodeRep
班级是否分别引用了其子女和家长?
如果是这样,您可以检索特定选定TopologyNodeRep
实例的子项,并自动选择其子项。
像这样:
List<TopologyNodeRep> childs = rowValue.getChilds();
for (TopologyNodeRep child: childs) {
selectionModel.setSelected(child,true);
}