package org.zkoss.zktest.bind.basic;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
public class ChildrenComplexVM {
List<Node> nodes;
public ChildrenComplexVM(){
nodes = new ArrayList<Node>();
nodes.add(createNode("Item A",0,0));
nodes.add(createNode("Item B",3,1));
nodes.add(createNode("Item C",2,2));
}
public List<Node> getNodes(){
return nodes;
}
Node createNode(String name,int children,int nested){
Node n = new Node(name);
if(nested>0){
for(int i=0;i<children;i++){
n.addChild(createNode(name+"_"+i,children,nested-1));
}
}
return n;
}
@Command @NotifyChange("nodes")
public void cmd1(){
nodes.add(createNode("Item D",2,2));
}
@Command
public void cmd2(){
nodes.add(createNode("Item E",2,2));
}
@Command @NotifyChange("nodes")
public void clear(){
nodes.clear();
}
static public class Node{
List<Node> children;
String name;
public Node(String name){
this.name = name;
children = new ArrayList<Node>();
}
public void addChild(Node node){
children.add(node);
}
public List<Node> getChildren(){
return children;
}
public String getName(){
return name;
}
}
}