gwt CellTree中的自定义单元格
我有一个CellTree处理简单的文本单元格。 现在我想要,对于每个树节点,一个不同类型的单元,取决于它是否是叶子 这些单元将是: (1) 如果节点是叶(没有子节点):TextCell (2) 如果节点是根节点(它有>=子节点):。 -它必须显示与leafs相同的字符串 -+1可单击图像(这是一个用于重命名节点名称的图标)。 -+1可单击图像(这是用于删除节点的图标) 我试过: (1) 自定义单元格,扩展抽象单元格。这里的要点是,我无法让可点击的图像响应鼠标取消点击。因此无法执行任何操作(编辑名称或删除节点) (2) 合成池。这里的要点是,尽管我可以在鼠标点击时得到可点击的图像,但我无法得到一个正确选择必须显示哪种单元格的实现(基于它是否有子单元格,显示TetxCell或带有图标的自定义单元格) 有人能解释一下我是如何做到这一点的吗?到目前为止,我的代码是: 公共节点信息getNodeInfo(T值){gwt CellTree中的自定义单元格,gwt,Gwt,我有一个CellTree处理简单的文本单元格。 现在我想要,对于每个树节点,一个不同类型的单元,取决于它是否是叶子 这些单元将是: (1) 如果节点是叶(没有子节点):TextCell (2) 如果节点是根节点(它有>=子节点):。 -它必须显示与leafs相同的字符串 -+1可单击图像(这是一个用于重命名节点名称的图标)。 -+1可单击图像(这是用于删除节点的图标) 我试过: (1) 自定义单元格,扩展抽象单元格。这里的要点是,我无法让可点击的图像响应鼠标取消点击。因此无法执行任何操作(编辑名
}单元格将不取决于它将显示的值,而是取决于父节点的值
因此,您将需要一个通用单元,该单元支持两种渲染/行为,并根据要求显示的值在它们之间切换:对于可以确定为叶的值,则仅渲染文本,否则还渲染图像/按钮(注意,您也可以呈现相同的HTML–使使用
复合单元格成为可能/更容易–但使用CSS切换图像/按钮的可见性(class=xxx
在容器元素上呈现).谢谢Thomas!最后,对于我不想显示的图标,我使用了一个带有display:none属性的div。我没有尝试使用样式……这是迄今为止最好的解决方案。
if (value == null) {
return new DefaultNodeInfo<CellTreeNode>(treeData.getDataProvider(), new IconCell(!isLeaf(value)),
selectionModel, null);
}
else if (value instanceof CellTreeNode) {
CellTreeNode node = (CellTreeNode) value;
//data provider for this cell
ListDataProvider<CellTreeNode> nodeDataProvider = new ListDataProvider<CellTreeNode>(node.getChildren());
IconCell nodeCell = new IconCell(this, node, !isLeaf(node));
// add a reference to the visual representation of the element
node.setCell(nodeCell);
return new DefaultNodeInfo<CellTreeNode>(nodeDataProvider, nodeCell,
selectionModel, null);
}
// Unhandled type.
String type = value.getClass().getName();
throw new IllegalArgumentException(
"[CellLargeTreeListBox] Unsupported object type: " + type);
if (value == null) return false;
CellTreeNode node = (CellTreeNode) value;
return value instanceof CellTreeNode && !node.isRoot();