/* CollectionIndexComposer.java
Purpose:
Description:
History:
Created by Dennis
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zktest.bind.basic;
import java.util.Map;
import org.zkoss.bind.BindComposer;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.zul.DefaultTreeModel;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.TreeModel;
import org.zkoss.zul.TreeNode;
/**
* @author Dennis Chen
*
*/
public class CollectionIndexTreeComposer extends BindComposer {
private String message1;
TreeModel<TreeNode<String>> model;
public CollectionIndexTreeComposer() {
MyTreeNode root = new MyTreeNode("Root",
new MyTreeNode[] {});
String[] labs = new String[]{"A","B","C"};
for (int i = 0; i < 3; i++) {
MyTreeNode ni = new MyTreeNode(labs[i] + i,
new MyTreeNode[] {});
for (int j = 0; j < 3; j++) {
MyTreeNode nj = new MyTreeNode(ni.getData()
+ "-" + j, new MyTreeNode[] {});
for (int k = 0; k < 2; k++) {
MyTreeNode nk = new MyTreeNode(
nj.getData() + "-" + k);
nj.add(nk);
}
ni.add(nj);
}
root.add(ni);
}
model = new DefaultTreeModel<String>(root);
}
public TreeModel<TreeNode<String>> getModel() {
return model;
}
@NotifyChange({ "message1" }) @Command
public void showIndex(@BindingParam("index") Integer index) {
int i = index.intValue();
message1 = "item index " + i;
}
@NotifyChange({ "model", "message1" }) @Command
public void delete(@BindingParam("node") MyTreeNode node) {
MyTreeNode parent = (MyTreeNode)node.getParent();
int i = parent.getIndex(node);
parent.remove(i);
message1 = "remove item index " + i;
}
@NotifyChange({ "model", "message1" }) @Command
public void addAfter(@BindingParam("node") MyTreeNode node) {
MyTreeNode parent = (MyTreeNode)node.getParent();
int i = parent.getIndex(node);
parent.insert(new MyTreeNode(node.getData()+"-after"), i + 1);
message1 = "addAfter item index " + i;
}
@NotifyChange({ "model", "message1" }) @Command
public void addBefore(@BindingParam("node") MyTreeNode node) {
TreeNode<String> parent = node.getParent();
int i = parent.getIndex(node);
parent.insert(new MyTreeNode(node.getData()+"-before"), i);
message1 = "addBefore item index " + (i + 1);
}
public String getMessage1() {
return message1;
}
static public class MyTreeNode extends DefaultTreeNode<String> {
boolean open;
public MyTreeNode(String data, MyTreeNode[] children) {
super(data,children);
}
public MyTreeNode(String data) {
super(data);
}
public boolean isOpen() {
return open;
}
public void setOpen(boolean open) {
this.open = open;
}
}
}