Richfaces Tree
mokua_ombati Aug 17, 2007 8:42 AMHi everyone
I have tried using rich-faces tree, but quite frankly
am not able to display a tree.
Note that other rich-faces components are being displayed correctly.
I followed this
http://www.jboss.com/index.html?op=loginscreen&module=user
and this http://www.jboss.com/index.html?op=loginscreen&module=user
but still got no-where!
Is there anyone using rich-faces tree?I will greatly appreciate any help.
Environment:
seam 1.2.1 GA
jboss-4.0.5 GA
richfaces-3.0.1-SNAPSHOT.jar
Here is the Node :
package com.triad.treeNodes;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.richfaces.component.TreeNode;
@Name("tree")
@Scope(ScopeType.PAGE)
public class RichTreeNode implements TreeNode {
/**
*
*/
private static final long serialVersionUID = 1L;
// private TreeNode treeNode;
private String name;
private String type;
private Map<Object, TreeNode> childrenMap = new LinkedHashMap<Object, TreeNode>();
public Object getData() {
// return treeNode;
return this;
}
public void setData(Object arg0) {
}
public boolean isLeaf() {
return childrenMap.size() == 0;
}
public Iterator getChildren() {
return childrenMap.entrySet().iterator();
}
public TreeNode getChild(Object identifier) {
return childrenMap.get(identifier);
}
public void addChild(Object identifier, TreeNode treeNode) {
childrenMap.put(identifier, treeNode);
}
public void removeChild(Object arg0) {
// TODO Auto-generated method stub
}
public TreeNode getParent() {
return null;
}
public RichTreeNode() {
this.name = "parent-node";
this.type = "root";
}
public void setParent(TreeNode arg0) {
// TODO Auto-generated method stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
Manager bean:
package com.triad.sessionBeans.tree;
import java.io.Serializable;
import java.util.Iterator;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.component.html.HtmlPanelGroup;
import javax.faces.context.FacesContext;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.log.Log;
import org.richfaces.component.html.HtmlPanel;
import org.richfaces.component.html.HtmlTree;
import org.richfaces.component.html.HtmlTreeNode;
import com.triad.treeNodes.RichTreeNode;
@Name("menu")
@Scope(ScopeType.SESSION)
public class MenuBean implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Logger
private Log log;
private RichTreeNode richTree;
@Create
public void init(){
log.info("********* init **********************");
richTree=new RichTreeNode();
richTree.setName("Ka-Name");
richTree.setType("root");
log.info("has created the tree==>"+richTree);
RichTreeNode node1=new RichTreeNode();
node1.setName("Node 1");
node1.setType("leaf");
richTree.addChild("node1",node1);
log.info("the tree with children *********");
Iterator it=richTree.getChildren();
while(it.hasNext()){
log.info("***** the node ==>"+it.next());
}
}
public RichTreeNode getRichTree() {
return richTree;
}
public void setRichTree(RichTreeNode richTree) {
this.richTree = richTree;
}
public MenuBean() {
}
}
Now display:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
xmlns:a="https://ajax4jsf.dev.java.net/ajax"
template="layout/template.xhtml">
<ui:define name="body">
<h:messages globalOnly="true" styleClass="message" />
<rich:panel>
<h:form >
<h:outputText value="Node - Test"/>
<a:outputPanel ajaxRendered="true">
<rich:tree id="directoryTree" switchType="ajax"
value="#{menu.richTree}" var="d"
style="margin: 10px;width:300px"
>
<rich:treeNode>
<h:outputText value="Node - ** #{d.name}"/>
</rich:treeNode>
</rich:tree>
</a:outputPanel>
</h:form>
</rich:panel>
</ui:define>
</ui:composition>