I've succeeded in displaying a dynamic Celltree from my database of
nodes, but cannot figure out how to make the displayed TextCells
clickable so that I may edit them, add additional children, etc. I
admit I am rather a novice using the new Cell Widgets.
Here is the stripped down code. I have left out the code that
generates my arraylist of tree node (alNodes). Any help, thoughts or
suggestions would be greatly appreciated. A simple example that
popped a Window.alert when a TextCell was clicked would be more than
sufficient! Perhaps a ClickableTextCell would work?
private class CustomTreeModel implements TreeViewModel {
public <T> NodeInfo<?> getNodeInfo(T value) {
ListDataProvider<String> dataProvider = new
ListDataProvider<String>();
String type = "";
Integer parent = 0;
Integer child = 0;
// for the root of the tree
if (value == null) {
for (int i = 0; i < alNodes.size(); i++) {
if (alNodes.get(i).ruid == startnode
&& alNodes.get(i).type ==
"S") {
dataProvider.getList().add(alNodes.get(i).title);
break;
}
}
} else {
// get the current node info from
alNodes ArrayList
for (int i = 0; i < alNodes.size(); i++) {
if (alNodes.get(i).title.equals(value))
{
type = alNodes.get(i).type;
parent = alNodes.get(i).ruid;
child =
alNodes.get(i).destSituation;
}
}
// Depending on the type of the
current node, find the child or children for the dataprovider for the
next level
if (type.equals("A")) {
for (int j = 0; j < alNodes.size(); j++) {
if (alNodes.get(j).ruid ==
child) {
dataProvider.getList().add(alNodes.get(j).title);
break; // Note that
"A" type nodes will only have a single
child
}
}
} else {
for (int j = 0; j < alNodes.size();
j++) {
if
(alNodes.get(j).parentSituation == parent) {
dataProvider.getList().add(alNodes.get(j).title);
}
}
}
}
return new DefaultNodeInfo<String>(dataProvider, new
TextCell());
}
public boolean isLeaf(Object value) {
String type = "";
Integer parent = 0;
Integer child = 0;
for (int i = 0; i < alNodes.size(); i++) {
if (alNodes.get(i).title.equals(value)) {
type = alNodes.get(i).type;
parent = alNodes.get(i).ruid;
child = alNodes.get(i).destSituation;
}
}
if (type.equals("A")) {
for (int j = 0; j < alNodes.size(); j++) {
if (alNodes.get(j).ruid == child) {
return false;
}
}
} else {
for (int j = 0; j < alNodes.size(); j++) {
if (alNodes.get(j).parentSituation ==
parent) {
return false;
}
}
}
return true;
}
}
public void onModuleLoad() {
Button button = new Button("Start Simulation Editor");
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
TreeViewModel model = new CustomTreeModel();
CellTree tree = new CellTree(model, null);
RootPanel.get().add(tree);
}
});
RootPanel.get().add(button);
// There is code here that populates the alNodes ArrayList. It works
fine.
}
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.