我正在使用框架编辑器重构我的GWT应用程序。
我坚持使用包含CellTree小部件的视图。我不知道如何使用编辑器框架包装 CustomTreeViewModel 。 也许我需要继承CellTree类?
精确度:
这是我在CellTree中的数据结构:
rootLevel为null
ZoneProxy:
ZoneProxy parent;
List<ZoneProxy> childs;
List<PointProxy> points;
所以我可以拥有这个:
|_ Zone 1
| |_Zone 1.1
| |_Zone 1.2
| |_Point 1
| |_Point 2
|_ Zone 2
.
.
.
我使用两个hashMaps让CellTree在没有EditorFramework的情况下工作:
private Map<ZoneProxy,ListDataProvider<ZoneProxy>> treeListDataZones;
private Map<ZoneProxy,ListDataProvider<PointProxy>> treeListDataPoints;
当用户点击树中的一个Point时,我有一个右侧面板,应该显示点击的点的详细信息。
我使用EditorFramework获取CellTree填充数据,但是我使CellTree的CustomTreeViewModel实现了LeafValueEditor。我不知道如何更深入地了解编辑。 (我不知道我必须使用我的数据结构创建的子编辑器)
我认为我错过了使用EditorFramework的东西,我会再次阅读Google DevGuide。
我没有找到使用框架编辑器的Celltree的任何示例。如果有人有一个很好的例子,它会对我有很大的帮助。 :)
由于
答案 0 :(得分:0)
希望它会对你有所帮助。以下是示例代码,其中包含Here实际代码中的一些修改。双击文本项进行编辑。
import com.google.gwt.cell.client.EditTextCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.cellview.client.CellTree;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.TreeViewModel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class GWTTestProject implements EntryPoint {
/**
* This is the entry point method.
*/
public void onModuleLoad() {
// Create a model for the tree.
TreeViewModel model = new CustomTreeModel();
/*
* Create the tree using the model. We specify the default value of the
* hidden root node as "Item 1".
*/
CellTree tree = new CellTree(model, "Item 1");
// Add the tree to the root layout panel.
RootLayoutPanel.get().add(tree);
}
/**
* The model that defines the nodes in the tree.
*/
private static class CustomTreeModel implements TreeViewModel {
/**
* Get the {@link NodeInfo} that provides the children of the specified
* value.
*/
public <T> NodeInfo<?> getNodeInfo(T value) {
/*
* Create some data in a data provider. Use the parent value as a prefix
* for the next level.
*/
ListDataProvider<String> dataProvider = new ListDataProvider<String>();
for (int i = 0; i < 2; i++) {
dataProvider.getList().add(value + "." + String.valueOf(i));
}
EditTextCell textCell=new EditTextCell();
// Return a node info that pairs the data with a cell.
return new DefaultNodeInfo<String>(dataProvider, textCell);
}
/**
* Check if the specified value represents a leaf node. Leaf nodes cannot be
* opened.
*/
public boolean isLeaf(Object value) {
// The maximum length of a value is ten characters.
return value.toString().length() > 10;
}
}
}