package org.cloudgraph.web.model.navigation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.cloudgraph.web.model.Action; import org.cloudgraph.web.model.ModelBean; import org.cloudgraph.web.model.tree.ActionHandler; import org.cloudgraph.web.model.tree.TreeNodeAction; import org.cloudgraph.web.model.tree.TreeSelectionModel; public class ControlNavigationBean extends ModelBean { private static Log log = LogFactory.getLog(ControlNavigationBean.class); // RichFaces Toolbar cannot be loaded using a data iterator such as dataTable, i.e. dynamically without // using the 'binding' attribute which means we have to create all sub-components // dynamically as well. Hence declare top-nav items statically. :( private TreeNodeAction datafiltersAction; private TreeNodeAction selectedTopAction; private TreeSelectionModel topSelectionModel; public ControlNavigationBean() { ActionHandler topActionHandler = new ActionHandler() { @Override public String handleAction(Action action) { // TODO Auto-generated method stub return action.toString(); } }; topSelectionModel = new TreeSelectionModel() { @Override public void clearSelection() { datafiltersAction.setSelected(false); } @Override public void setSelection(TreeNodeAction selection) { clearSelection(); selectedTopAction = selection; selectedTopAction.setSelected(true); } @Override public TreeNodeAction getSelection() { return selectedTopAction; } }; datafiltersAction = new TreeNodeAction(Action.topnav_datafilters, topActionHandler, topSelectionModel); datafiltersAction.setSelected(true); selectedTopAction = datafiltersAction; } public void setDatafiltersSelected(Object selected) { Boolean b = new Boolean(String.valueOf(selected)); if (b.booleanValue()) this.topSelectionModel.setSelection(this.datafiltersAction); else this.datafiltersAction.setSelected(false); } public TreeNodeAction getDatafiltersAction() { return datafiltersAction; } public void setDatafiltersAction(TreeNodeAction datafiltersAction) { this.datafiltersAction = datafiltersAction; } public TreeNodeAction getSelectedTopAction() { return selectedTopAction; } public void setSelectedTopAction(TreeNodeAction selectedTopAction) { this.selectedTopAction = selectedTopAction; } }