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.