Hi Dennis, how can I use this code in my jsp code, considering that I have a copy of the nightly build src code?
Edwin newbie -----Original Message----- From: Dennis Byrne [mailto:[EMAIL PROTECTED] Sent: Wednesday, July 13, 2005 12:43 PM To: MyFaces Discussion Subject: Re: extending tree2 Code for TreeTag class after putting it on a diet. package org.apache.myfaces.custom.tree3; import javax.faces.component.UIComponent; public class TreeTag extends org.apache.myfaces.custom.tree2.TreeTag { private String expandAllInit = "false"; public static String EXPAND_ALL_INIT = "org.apache.myfaces.tree.EXPAND_ALL_INIT"; private static String COMPONENT_TYPE = "org.apache.myfaces.HtmlTree3"; public String getExpandAllInit() { return expandAllInit; } public void setExpandAllInit(String expandAllInit) { this.expandAllInit = expandAllInit; } public String getComponentType() { return COMPONENT_TYPE; } protected void setProperties(UIComponent component) { super.setProperties(component); // ideally, we would add a static var to JSFAttr setBooleanProperty(component, EXPAND_ALL_INIT, expandAllInit); } } ---- Original message ---- >Date: Tue, 12 Jul 2005 12:23:22 -0800 >From: [EMAIL PROTECTED] >Subject: Re: extending tree2 >To: "MyFaces Discussion" <[email protected]> > > I figured out how to expand all nodes the first time > tree2 is rendered. For those interested, below is > the source of two java files and snippets from a tld > and faces configuration file. Constructive > criticism is appreciated. > > package org.apache.myfaces.custom.tree3; > > import javax.faces.context.FacesContext; > > import org.apache.myfaces.custom.tree2.TreeNode; > > import java.util.Iterator; > import java.util.Map; > import java.util.Set; > > /** > * Child of tree2 UI component; this control will > repect the > * expandAllInit attribute. > * > */ > public class HtmlTree extends > org.apache.myfaces.custom.tree2.HtmlTree{ > > private boolean justCreated = true; > > public boolean isJustCreated() { > return justCreated; > } > > public void setJustCreated(boolean > justCreated) { > this.justCreated = justCreated; > } > > // see superclass for documentation > public void restoreState(FacesContext context, > Object state) > { > this.setJustCreated(false); > super.restoreState(context, state); > } > > /** > * Indicates whether or not the current [EMAIL PROTECTED] > TreeNode} is expanded. > * > * if this is before a restoreState call, and > the expandAllInit att. is set to true > * and this is not a leaf, and the node is not > expanded ... otherwise it will behave > * as the parent would. > * > * @return boolean > */ > public boolean isNodeExpanded() > { > boolean ret = super.isNodeExpanded(); > > if(justCreated && getExpandAllInit() && > getNode().getChildCount() != 0 && ! ret){ > toggleExpanded(); > return true; > } > return ret; > } > > /** > * Iterates through the prop.s of the component, > determines if all nodes are > * expanded the first time they are rendered. > * > * @return boolean > */ > > protected boolean getExpandAllInit() { > String key = null; > Boolean value = null; > Map map = null; > Set set = null; > Iterator iterator = null; > > map = getAttributes(); > iterator = map.keySet().iterator(); > > while(iterator.hasNext()){ > key = (String) > iterator.next(); > > if(TreeTag.EXPAND_ALL_INIT.equals(key) ){ > value = (Boolean) > map.get(key); > return > value.booleanValue(); > } > } > > return false; > } > > } > > package org.apache.myfaces.custom.tree3; > > import javax.faces.component.UIComponent; > import javax.faces.context.FacesContext; > import javax.faces.el.ValueBinding; > > import org.apache.myfaces.renderkit.JSFAttr; > > public class TreeTag extends > org.apache.myfaces.custom.tree2.TreeTag { > > private String _value; > private String _var; > private String _varNodeToggler; > private String _showLines; > private String _showNav; > private String _clientSideToggle; > private String _showRootNode; > > private String expandAllInit = "false"; > public static String EXPAND_ALL_INIT = > "org.apache.myfaces.tree.EXPAND_ALL_INIT"; > > private static String COMPONENT_TYPE = > "org.apache.myfaces.HtmlTree3"; > > public String getExpandAllInit() { > return expandAllInit; > } > > public void setExpandAllInit(String > expandAllInit) { > this.expandAllInit = expandAllInit; > } > > public String getComponentType() { > return COMPONENT_TYPE; > } > > public void setValue(String value) > { > _value = value; > } > > /** > * @param var The var to set. > */ > public void setVar(String var) > { > _var = var; > } > > public void setVarNodeToggler(String > varNodeToggler) > { > _varNodeToggler = varNodeToggler; > } > > public void setShowLines(String showLines) > { > _showLines = showLines; > } > > public void setShowNav(String showNav) > { > _showNav = showNav; > } > > public void setClientSideToggle(String > clientSideToggle) > { > _clientSideToggle = clientSideToggle; > } > > public void setShowRootNode(String showRootNode) > { > _showRootNode = showRootNode; > } > > protected void setProperties(UIComponent > component) > { > super.setProperties(component); > > FacesContext context = > getFacesContext(); > > if (_value != null) > { > ValueBinding vb = > context.getApplication().createValueBinding(_value); > > component.setValueBinding("value", vb); > } > > if (_var != null) > { > > ((HtmlTree)component).setVar(_var); > } > > if (_varNodeToggler != null) > { > > ((HtmlTree)component).setVarNodeToggler(_varNodeToggler); > } > > setBooleanProperty(component, > JSFAttr.SHOW_NAV, _showNav); > setBooleanProperty(component, > JSFAttr.SHOW_LINES, _showLines); > setBooleanProperty(component, > JSFAttr.CLIENT_SIDE_TOGGLE, _clientSideToggle); > setBooleanProperty(component, > JSFAttr.SHOW_ROOT_NODE, _showRootNode); > // ideally, we would add a static > var to JSFAttr > setBooleanProperty(component, > EXPAND_ALL_INIT, expandAllInit); > } > > } > > In your JSF config file: > > <component> > > <component-type>org.apache.myfaces.HtmlTree3</component- type> > > <component- class>org.apache.myfaces.custom.tree3.HtmlTree</component- class> > </component> > > In your TLD: > > <tag> > <name>tree3</name> > > <tag-class>org.apache.myfaces.custom.tree3.TreeTag</tag- class> > <body-content>JSP</body-content> > > ... the same att.s you find in the tld > extensions file for JSF 1.0.9 > > <attribute> > <description>Expand all nodes the > initial time this control is rendered.</description> > > <name>expandAllInit</name> > <required>false</required> > <rtexprvalue>false</rtexprvalue> > </attribute> > </tag> Dennis Byrne

