package de.forsthaus.webui.testControllers;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.DefaultTreeModel;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.Tree;
import org.zkoss.zul.Treecol;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
public class AutoSortTreeCtrl extends GenericForwardComposer {
private static final long serialVersionUID = 1L;
private Treecol col;
private Tree tree;
public AutoSortTreeCtrl() {
}
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
initRenderer();
initData();
}
/**
* Ads some dummy data to the tree
*/
private void initData() {
Person steve = new Person(0, "Steve", "Jobs", "Chicago", "street", "phone number", "fax number");
Person mark = new Person(1, "Mark", "Zuckerberg", "Dallas", "street", "phone number", "fax number");
Person barack = new Person(2, "Barack", "Obama", "Chicago", "street", "phone number", "fax number");
List<Person> persons = new ArrayList<Person>();
persons.add(steve);
persons.add(mark);
persons.add(barack);
List<DefaultTreeNode> nodes = toNode(persons);
DefaultTreeNode rootNode = new DefaultTreeNode(null, nodes);
DefaultTreeModel model = new DefaultTreeModel(rootNode);
tree.setModel(model);
}
/**
* Sets a renderer for the tree
*/
private void initRenderer() {
tree.setItemRenderer(new TreeitemRenderer() {
public void render(Treeitem item, Object data) throws Exception {
String label = "?";
if (data instanceof DefaultTreeNode) {
DefaultTreeNode node = (DefaultTreeNode) data;
Object nodeData = node.getData();
label = nodeData.toString();
}
item.setLabel(label);
}
});
}
/**
* Converts the given list into a list of tree nodes
*/
private List<DefaultTreeNode> toNode(List<?> objects) {
List<DefaultTreeNode> nodes = new ArrayList<DefaultTreeNode>();
for (Object object : objects) {
nodes.add(new DefaultTreeNode(object, new ArrayList<DefaultTreeNode>()));
}
return nodes;
}
}