/** Removes all child nodes of the supplied root node. */ private void removeAllChildsOfRootNode(final TreeNode rootNode) { if ((rootNode != null) && (rootNode.getChildCount() > 0)) { final TreeNode[] array = rootNode.getChildren().toArray(new TreeNode[rootNode.getChildCount()]); for (TreeNode child : array) { child.setParent(null); child = null; } } }
private void updateNodeForSelected(final TreeNode treeNode, final TreeNode selectedTreeNode) { if ((selectedTreeNode != null) && (treeNode != null)) { if (treeNode == selectedTreeNode) { selectedTreeNode.setSelected(true); } else { treeNode.setSelected(false); } if (treeNode.getChildCount() != 0) { for (final TreeNode child : treeNode.getChildren()) { updateNodeForSelected(child, selectedTreeNode); } } } }
private boolean possuiFilhoSelecionado(TreeNode node) { boolean possui = false; if (node.getChildCount() > 0) { for (TreeNode filho : node.getChildren()) { if (filho.isSelected()) { possui = true; break; } else { possui = possuiFilhoSelecionado(filho); if (possui) { break; } } } } return possui; }
/** * RECURSIVO! Converte o TreeNode do PrimeFaces para a ArvoreSimples Na primeira chamada, o * segundo argumento deve ser nulo, simbolizando a raiz. O retorno da primeira chamada eh a raiz. */ public ArvoreSimples converterArvorePrimeParaArvoreSimples( TreeNode treeNode, ArvoreSimples arvore, boolean apenasSelecionados) { ChaveValor<String, String> chaveValor = (ChaveValor<String, String>) treeNode.getData(); ArvoreSimples arvoreSimples = new ArvoreSimples(chaveValor.getChave(), chaveValor.getValor()); if (arvore != null) { // -- da primeira vez nao tem pai, nas proximas eh a recursao dos filhos arvore.getFilhos().add(arvoreSimples); } if (treeNode.getChildCount() > 0) { for (TreeNode nivel : treeNode.getChildren()) { if (apenasSelecionados) { boolean possui = possuiFilhoSelecionado(nivel); if (!possui && !nivel.isSelected()) { continue; } } converterArvorePrimeParaArvoreSimples(nivel, arvoreSimples, apenasSelecionados); } } return arvoreSimples; }