Tree dinâmica no richFaces

2 respostas
The_Toad

Olá a todos!

Estou tentando fazer uma richTree dinâmica, como a tree que há no iceFaces (http://component-showcase.icefaces.org/component-showcase/index.jsp?rvn=1# ). Mas não estou coneseguindo, depois de um dia inteiro de tentativas…

Como posso fazer para criar um novo treeNode usando um commandButton e um inputText em runtime?

Este é o código que estou usando:

package paco.ufscar;

import org.richfaces.component.UITree;
import org.richfaces.event.NodeSelectedEvent;
import org.richfaces.model.TreeNode;
import org.richfaces.model.TreeNodeImpl;

public class BeanTree {
	private static TreeNode rootNode = null;
	private String nodeTitle;
	private String txtTopico;
	private static int index = 1;
	private static int noSelecionado;

	public void addNode()
	{
		TreeNodeImpl nodeImpl = new TreeNodeImpl();
		nodeImpl.setData(txtTopico);
		rootNode.addChild(new Integer(index), nodeImpl);
		index++;
	}

	public void removeNode()
	{
		rootNode.removeChild(???????????);
	}

	public TreeNode getTreeNode() {
		if (rootNode == null) {
			rootNode = new TreeNodeImpl();
		}
		return rootNode;
	}

	public void processSelection(NodeSelectedEvent event) {
		UITree tree = (UITree) event.getComponent();
		nodeTitle = (String) tree.getRowData();
        }

	public String getNodeTitle() {
		return nodeTitle;
	}

	public void setNodeTitle(String nodeTitle) {
		this.nodeTitle = nodeTitle;
	}
	
	public String getTxtTopico() {
		return txtTopico;
	}

	public void setTxtTopico(String txtTopico) {
		this.txtTopico = txtTopico;
	}
}
<rich:tree id="RichTree" style="width:300px" nodeSelectListener="#{BeanTree.processSelection}" 
reRender="selectedNode" ajaxSubmitSelection="true" switchType="ajax"
value="#{BeanTree.treeNode}" var="item">
</rich:tree>

<h:outputText escape="false" value="Selected Node: #{BeanTree.nodeTitle}" id="selectedNode" />&nbsp;
<h:commandButton value="Exclude" action="#{BeanTree.removeNode}"/>

Obrigado!

2 Respostas

lblanco

Fala parceiro,

Cara eu fiz esse post aqui http://www.guj.com.br/posts/list/92614.java#495915
Como pode ver nele eu to montando a arvore dinamicamente.

Aproveitando o ensejo do assunto , gostaria de lhe fazer uma pergunta. Quando vamos criar um nó usamos o setData para atribuir uma descrição para o tal nó. Gostaria de saber se é possivel acrescentar mais de um argumento para esse metodo setData ? Exemplo:

Atualmente

TreeNodeImpl nodeImpl = new TreeNodeImpl();
nodeImpl.setData("DESCRICAO");               
node.addChild(cont, nodeImpl);

O que eu preciso:

TreeNodeImpl nodeImpl = new TreeNodeImpl();
nodeImpl.setData(ID,"DESCRICAO");               
node.addChild(cont, nodeImpl);

Gostaria de inserir um ID, pois depois com base nele irei fazer uma query na tabela base da TREE e não queria usar a descricao. Deu pra entender a minha dúvida ?
Aguardo.
Obrigado.

The_Toad

Olá,

Não entendi muito bem, mas acredito que você possa usar a variável cont como o ID desejado, através da função node.getChild().

Abraços!

Criado 4 de abril de 2008
Ultima resposta 5 de jun. de 2008
Respostas 2
Participantes 2