Simplest Example of RichFaces Tree
grdzeli_kaci Jun 11, 2007 11:35 AMhi all, i found tree example and it works fine, but i want to write my own tree.
here is my example :
1.faces-config.xml
<managed-bean> <managed-bean-name>database</managed-bean-name> <managed-bean-class>com.liliko.billing.businesslayer.beans.common.DataBases</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
2.DataBases.java
public class DataBases implements TreeNode {
 private Map databases = null;
 public Map getDatabases() {
 if (databases==null) {
 initData();
 }
 return this.databases;
 }
 public void setData(Object object) {
 }
 public void removeChild(Object object) {
 databases.remove(object);
 }
 public TreeNode getChild(Object id) {
 return (TreeNode) getDatabases().get(id);
 }
 public void addDatabase(DataBase database)
 {
 addChild(Long.toString(database.getId()),database);
 database.setParent(this);
 }
 public void addChild(Object identifier, TreeNode child) {
 getDatabases().put(identifier,child);
 }
 public void setParent(TreeNode treeNode) {
 }
 public boolean isLeaf() {
 return true;
 }
 public TreeNode getParent() {
 return null;
 }
 public Object getData() {
 return this;
 }
 public Iterator getChildren() {
 return null;
 }
 private long nextId = 0;
 private long getNextId() {
 return nextId++;
 }
 public void initData(){
 databases = new HashMap();
 DataBase oracle = new DataBase(getNextId());
 oracle.setName("Oracle");
 DataBase iBMDB2 = new DataBase(getNextId());
 iBMDB2.setName("IBM DB2");
 DataBase msSql = new DataBase(getNextId());
 msSql.setName("MS SQL Server");
 DataBase postgreSQL = new DataBase(getNextId());
 postgreSQL.setName("Postgre SQL");
 DataBase mySQL = new DataBase(getNextId());
 mySQL.setName("My SQL");
 addDatabase(oracle);
 addDatabase(iBMDB2);
 addDatabase(msSql);
 addDatabase(postgreSQL);
 addDatabase(mySQL);
 }
 public String getType() {
 return "metadata";
 }
}
3.Database.java
public class DataBase implements TreeNode{
 private static final long serialVersionUID = 7155620465939481885L;
 private long id;
 private String name;
 private DataBases databases;
 public DataBase(long id) {
 this.id = id;
 }
 public void setData(Object object) {
 }
 public void removeChild(Object object) {
 throw new UnsupportedOperationException("Database do not have children");
 }
 public TreeNode getChild(Object object) {
 throw new UnsupportedOperationException("Database do not have children");
 }
 public void addChild(Object object, TreeNode treeNode) {
 throw new UnsupportedOperationException("Database do not have children");
 }
 public void setParent(TreeNode treeNode) {
 this.databases = (DataBases) treeNode;
 }
 public boolean isLeaf() {
 return true;
 }
 public TreeNode getParent() {
 return databases;
 }
 public Object getData() {
 return this;
 }
 public Iterator getChildren() {
 return new ArrayList().iterator();
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public long getId() {
 return id;
 }
}
3.client code
 <rich:tree rendered = "true" style="width:300px" value="#{database.data}" var="item" nodeFace="#{item.type}">
 <rich:treeNode type="metadata">
 <h:outputText value="#{item.type}" />
 </rich:treeNode>
 <rich:treeNode type="database">
 <h:outputText value="#{item.name}" />
 </rich:treeNode>
 </rich:tree>
but tree is not visible :(,
what i did incorrect ??
Regards,
Paata.
 
     
     
     
    