/* B80_ZK_3022Test.java Purpose: Description: History: Tue, Jan 5, 2016 6:22:27 PM, Created by Christopher Copyright (C) 2016 Potix Corporation. All Rights Reserved. This program is distributed under LGPL Version 2.1 in the hope that it will be useful, but WITHOUT ANY WARRANTY. */ package org.zkoss.zktest.test2; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.select.SelectorComposer; import org.zkoss.zk.ui.select.annotation.Listen; import org.zkoss.zk.ui.select.annotation.Wire; import org.zkoss.zul.Button; import org.zkoss.zul.DefaultTreeModel; import org.zkoss.zul.DefaultTreeNode; import org.zkoss.zul.Tree; import org.zkoss.zul.TreeNode; import org.zkoss.zul.Treeitem; import org.zkoss.zul.Window; /** * * @author Christopher */ public class B80_ZK_3022Composer extends SelectorComposer<Window>{ private Tree expandAllTree; private DefaultTreeModel<String> model; @Wire private Button btn; public void doAfterCompose(Window comp) throws Exception { super.doAfterCompose(comp); // build tree when init page DefaultTreeNode<String> rootNode = new DefaultTreeNode<String>("root", new ArrayList<DefaultTreeNode<String>>()); addChildNode(rootNode, 1, 1); for (TreeNode<String> nodeLv1 : rootNode.getChildren()) { addChildNode(nodeLv1, 2, 1); for (TreeNode<String> nodeLv2 : nodeLv1.getChildren()) { addChildNode(nodeLv2, 3, 1); } } model = new DefaultTreeModel<String>(rootNode); expandAllTree = new Tree(); expandAllTree.setModel(model); comp.appendChild(expandAllTree); } @Listen("onClick=#btn") public void click() { collapseTree(expandAllTree, true); } // function add child node public void addChildNode(TreeNode<String> node, int level, int num) { for (int i = 0; i < num; i++) { DefaultTreeNode<String> child = new DefaultTreeNode<String>(String.valueOf(level) + "_" + String.valueOf(i), new ArrayList<DefaultTreeNode<String>>()); node.add(child); } } // function to expand tree protected void collapseTree(Component treeObject, boolean isOpen) { if (treeObject instanceof Treeitem) { Treeitem treeitem = (Treeitem) treeObject; treeitem.setOpen(isOpen); } Collection<?> com = treeObject.getChildren(); if (com != null) { for (Iterator<?> iterator = com.iterator(); iterator.hasNext();) { collapseTree((Component) iterator.next(), isOpen); } } } }