我遇到了GWT CellTree的问题,此时,我想知道它是否真的准备好迎接黄金时段。也许我没有得到默认的用例?
到目前为止,通过Web看到的大多数问题都与使用CellTree的CRUD操作有关,但使用简单的ListDataProvider,例如GWT - Add and remove nodes in celltree。
就我而言,我正在使用AsyncDataProvider填充CellTree的节点。 使用RequestFactory服务按需提取节点。
给定选择,我想添加子节点,删除/更新当前选择。在我看来,GWT TreeViewModel接口太基础了。
根据我目前的理解,可行的方法是使用DataProviders的映射,保留远程调用返回的基础列表的引用,并可能引用父NodeInfo对象。
例如,要删除当前选择,我可能会执行以下操作:
TreeViewModel model = cellTree.getTreeViewModel();
TreeViewModel.NodeInfo nodeInfo = model.getNodeInfo(selectionFromChangeListener);
CustomNodeInfo parent = ((CustomNodeInfo) nodeInfo).getParent();
parent.getUnderLyingNodeListFromDataProvider().remove(selectionFromChangeListener);
// maybe force refresh using dataProvider???
parent.getDataProvider().refreshDisplayAsInRepopulateData()
有什么更好的建议吗?看起来这将是一项具有挑战性的任务,除非我错了......虽然看起来有点矫枉过正。在Swing中,很容易实现,甚至在提供Tree小部件的大多数其他Web框架中也是如此。
使用默认的Tree窗口小部件并用“加载”图像替换自己的图标会更简单吗?看起来基本的树允许更多地操作节点TreeItems。
答案 0 :(得分:1)
CellTree小部件似乎基于FastTree的原始代码。
FastTree已经或多或少地拥有了我需要的东西,没有某种 setUserObject 方法,就像在Swing DefaultMutableTreeNode
中一样对于旋转图标,过去有人already investigated。
我想现在,我将从CellTree切换到FastTree和FastTreeItem的自定义版本。
开箱即用的能力有getParentItem,remove(当前节点或特定的子节点)等方法?非常感谢先生......