/* CollectionIndexComposer.java
Purpose:
Description:
History:
Created by Dennis
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zktest.bind.basic;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
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 TreeSelectionVM{
private String message1;
DefaultTreeModel<String> model;
MyTreeNode root;
MyTreeNode selected;
public TreeSelectionVM() {
root = new MyTreeNode("Root",
new MyTreeNode[] {});
String[] labs = new String[]{"A","A"};
for (int i = 0; i < 2; i++) {
MyTreeNode ni = new MyTreeNode(labs[i] + "-" + i,
new MyTreeNode[] {});
ni.setOpen(true);
for (int j = 0; j < 3; j++) {
MyTreeNode nj = new MyTreeNode(ni.getData()
+ "-" + j, new MyTreeNode[] {});
nj.setOpen(true);
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 MyTreeNode getSelected() {
return selected;
}
public void setSelected(MyTreeNode selected) {
this.selected = selected;
}
public TreeModel<TreeNode<String>> getModel() {
return model;
}
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;
}
}
@Command @NotifyChange({"items","message1","selected"})
public void reload() {
message1 = "reloaded "+ (selected==null?"no selection":selected.getData());
}
@Command @NotifyChange({"selected","message1"})
public void select() {
message1 = "select";
selected = (MyTreeNode)root.getChildAt(1).getChildAt(1).getChildAt(1);
}
@Command @NotifyChange({"selected","message1"})
public void clean() {
message1 = "clean";
selected = null;
}
@Command @NotifyChange("message1")
public void showselection(){
if(model.isSelectionEmpty()){
message1 = "no selection";
}else{
int path[] = model.getSelectionPath();
StringBuilder sb = new StringBuilder();
sb.append("[");
for(int i=0;i<path.length;i++){
if(i!=0){
sb.append(", ");
}
sb.append(path[i]);
}
sb.append("]");
message1 = sb.toString();
}
}
}