0

Tree menu that works dynamically with a GenericForwardComposer

asked 2010-03-19 19:43:19 +0800

xnguyen gravatar image xnguyen
30 3

For those of you developers that need to generate a Tree menu dynamically with a GenericForwardComposer, I would like to share my source code. I hope this helps everyone:

navigation.zul

<?xml version="1.0" encoding="UTF-8"?>
<zk xmlns="http://www.zkoss.org/2005/zul"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">
	<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
	<window id="navWin" title="Navigation" width="200px"
		apply="com.loquatic.cerescan.controller.NavigationController">
		<tree id="tree"/>
	</window>
</zk>

NavigationController.java

package com.loquatic.cerescan.controller;

import java.util.ArrayList;
import java.util.List;

import javax.swing.tree.TreeNode;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Sessions;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Menubar;
import org.zkoss.zul.Menuitem;
import org.zkoss.zul.SimpleTreeModel;
import org.zkoss.zul.SimpleTreeNode;
import org.zkoss.zul.Tree;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.Treechildren;
import org.zkoss.zul.Treecol;
import org.zkoss.zul.Treecols;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
import org.zkoss.zul.Treerow;

import com.loquatic.cerescan.api.entities.Patient;
import com.loquatic.cerescan.api.entities.SessionInfo;
import com.loquatic.cerescan.api.persistence.managers.PatientManager;
import com.loquatic.cerescan.controller.patient.EditPatientDemographicsController;

public class NavigationController extends GenericForwardComposer {
	private static Log log = LogFactory.getLog(NavigationController.class);
	private Tree tree;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		super.doAfterCompose(comp);
		comp.setAttribute("controller", this);

		Treechildren child = new Treechildren();

		Treeitem dashboardItem = new Treeitem();
		Treerow dashboardRow = new Treerow();
		Treecell dashboard = new Treecell();
		dashboard.setLabel("Dashboard");
		dashboard.setParent(dashboardRow);
		dashboardRow.setParent(dashboardItem);
		dashboardItem.setParent(child);

		Treeitem patientItem = new Treeitem();
		Treerow patientRow = new Treerow();
		Treecell patient = new Treecell();
		patient.setLabel("Edit Patient Information");
		patient.setParent(patientRow);
		patientRow.setParent(patientItem);
		patientItem.setParent(child);
		
		Treeitem sessionItem = new Treeitem();
		Treerow sessionRow = new Treerow();
		Treecell session = new Treecell();
		session.setLabel("Patient Sessions");
		session.setParent(sessionRow);
		sessionRow.setParent(sessionItem);
		sessionItem.setParent(child);

		Treechildren session1Children = new Treechildren();
		Treeitem session1Item = new Treeitem();
		Treerow session1Row = new Treerow();
		Treecell session1 = new Treecell();
		session1.setLabel("Mar 12, 2010");
		session1.setParent(session1Row);
		session1Row.setParent(session1Item);
		session1Item.setParent(session1Children);
		session1Children.setParent(sessionItem);
		
		Treechildren demographicsChildren = new Treechildren();
		Treeitem demographicsItem = new Treeitem();
		Treerow demographicsRow = new Treerow();
		Treecell demographics = new Treecell();
		demographics.setLabel("Demographics");
		demographics.setParent(demographicsRow);
		demographicsRow.setParent(demographicsItem);
		demographicsItem.setParent(demographicsChildren);
		demographicsChildren.setParent(session1Item);
		
		Treeitem attorneyItem = new Treeitem();
		Treerow attorneyRow = new Treerow();
		Treecell attorney = new Treecell();
		attorney.setLabel("Attorney");
		attorney.setParent(attorneyRow);
		attorneyRow.setParent(attorneyItem);
		attorneyItem.setParent(demographicsChildren);
		
		Treeitem referringPhysicianItem = new Treeitem();
		Treerow referringPhysicianRow = new Treerow();
		Treecell referringPhysician = new Treecell();
		referringPhysician.setLabel("Referring Physician");
		referringPhysician.setParent(referringPhysicianRow);
		referringPhysicianRow.setParent(referringPhysicianItem);
		referringPhysicianItem.setParent(demographicsChildren);
		
		Treeitem additionalTreatmentProvidersItem = new Treeitem();
		Treerow additionalTreatmentProvidersRow = new Treerow();
		Treecell additionalTreatmentProviders = new Treecell();
		additionalTreatmentProviders.setLabel("Treatment Providers");
		additionalTreatmentProviders.setParent(additionalTreatmentProvidersRow);
		additionalTreatmentProvidersRow.setParent(additionalTreatmentProvidersItem);
		additionalTreatmentProvidersItem.setParent(demographicsChildren);
		
		Treeitem newSessionItem = new Treeitem();
		Treerow newSessionRow = new Treerow();
		Treecell newSession = new Treecell();
		newSession.setLabel("Create New Session");
		newSession.setParent(newSessionRow);
		newSessionRow.setParent(newSessionItem);
		newSessionItem.setParent(session1Children);

		Treeitem logoutItem = new Treeitem();
		Treerow logoutRow = new Treerow();
		Treecell logout = new Treecell();
		logout.setLabel("Logout");
		logout.setParent(logoutRow);
		logoutRow.setParent(logoutItem);
		logoutItem.setParent(child);

		child.setParent(tree);
	}
}

delete flag offensive retag edit

1 Reply

Sort by ยป oldest newest

answered 2010-03-21 20:05:05 +0800

samchuang gravatar image samchuang
4084 4

Thanks for your sharing~~

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2010-03-19 19:43:19 +0800

Seen: 1,369 times

Last updated: Mar 21 '10

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More