public static List<Criterion> getSelectedCriterions(DefaultMutableTreeNode root) { List<Criterion> res = new LinkedList<Criterion>(); DefaultMutableTreeNode leaf = root.getFirstLeaf(); do { res.add(((DisplayedCriterion) leaf.getUserObject()).getCriterion()); leaf = leaf.getNextLeaf(); } while (leaf != null); return res; }
/** * Obtiene los nodos seleccionados de un jtree creando una hash de Capas/Atributos * * @param jtreeAtributes * @return */ private Map<String, List<String>> getLayersAtributesList(JTree jtreeAtributes) { Map<String, List<String>> tablaCapasAtributos = new HashMap<String, List<String>>(); List<String> listaAtr = null; String nombreCapa = null; String nombreAtributo = null; DefaultTreeModel model = (DefaultTreeModel) jtreeAtributes.getModel(); DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); DefaultMutableTreeNode chosen = (DefaultMutableTreeNode) root.getFirstChild(); DefaultMutableTreeNode leaf = null; CheckBoxNode checkNode = null; for (int i = 0; i < root.getChildCount(); i++) { nombreCapa = chosen.toString(); leaf = chosen.getFirstLeaf(); for (int j = 0; j < chosen.getLeafCount(); j++) { checkNode = (CheckBoxNode) leaf.getUserObject(); nombreAtributo = checkNode.getText(); // testeamos si el atributo está seleccionado if (checkNode.isSelected()) { if (tablaCapasAtributos.containsKey(nombreCapa)) { listaAtr = tablaCapasAtributos.get(nombreCapa); } else { listaAtr = new ArrayList<String>(); } listaAtr.add(nombreAtributo); tablaCapasAtributos.put(nombreCapa, listaAtr); } leaf = leaf.getNextLeaf(); } // si no hay ningun atributo seleccionado guardamos unicamente la capa if (!tablaCapasAtributos.containsKey(nombreCapa)) { tablaCapasAtributos.put(nombreCapa, null); } chosen = chosen.getNextSibling(); } return tablaCapasAtributos; }