package org.zkoss.zktest.test2;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zul.DefaultTreeModel;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.Tree;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
import org.zkoss.zul.Treerow;
public class B65_ZK_1735_Composer extends SelectorComposer<Component> {
DefaultTreeModel mymodelA;
private static int count = 0;
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
Tree myTreeA = (Tree) comp.getFellow("myTreeA");
mymodelA = new DefaultTreeModel(new DefaultTreeNode(null,
new DefaultTreeNode[] {}));
fillTree(myTreeA, mymodelA, "A");
}
private void fillTree(Tree myTree, DefaultTreeModel mymodel, String treeName) {
myTree.setItemRenderer(new TreeitemRenderer() {
public void render(Treeitem treeItem, Object data, int id)
throws Exception {
DefaultTreeNode treeNode = (DefaultTreeNode) data;
treeItem.setValue(treeNode);
Treerow tr;
if (treeItem.getTreerow() == null) {
tr = new Treerow();
tr.setParent(treeItem);
} else {
tr = treeItem.getTreerow();
tr.getChildren().clear();
}
Map row = (Map) treeNode.getData();
Treecell t0 = new Treecell();
t0.setLabel(row.get("id").toString());
tr.appendChild(t0);
Treecell t1 = new Treecell();
t1.setLabel(row.get("val").toString());
tr.appendChild(t1);
}
});
myTree.setModel(mymodel);
DefaultTreeNode rootNode = (DefaultTreeNode) mymodel.getRoot();
for (int i = 0; i < 10; i++) {
Map test = new HashMap();
test.put("id", "Row " + treeName + " " + i);
test.put("val", new Integer(0));
Map test1 = new HashMap();
test1.put("id","SubRow " + treeName + " " + i + " X");
test1.put("val", new Integer(0));
rootNode.add(new DefaultTreeNode(test,
new DefaultTreeNode[] { new DefaultTreeNode(test1) }));
}
}
@Listen("onClick=treerow")
public void onCol1(Event event) {
DefaultTreeNode rootNode;
String id = ((Treecell) event.getTarget().getChildren().get(0))
.getLabel();
rootNode = (DefaultTreeNode) mymodelA.getRoot();
Iterator it = rootNode.getChildren().iterator();
Map row;
DefaultTreeNode node;
while (it.hasNext()) {
node = (DefaultTreeNode) it.next();
row = (Map) node.getData();
if (row.get("id").equals(id)) {
row.put("val", ++count);
node.setData(row);
break;
}
}
}
}