una software ruta pert para online holguras hacer empresa ejemplo critica como calculo gwt path tree

gwt - software - ruta critica project



Cómo obtener la ruta de un elemento seleccionado desde un CellTree en GWT (3)

El CellTree en sí mismo no tiene ninguna función incorporada para recuperar la ruta del elemento seleccionado.
Tendrás que atravesar manualmente la estructura de tu árbol para obtener la ruta. Puede usar una función recursiva para recuperar la ruta. He hecho algo así, pero con un propósito diferente (abrir nodos programáticamente en un CellTree).

Tengo un CellTree contiene una lista de organizaciones. En el Modelo, cada padre contiene una lista de hijos. ¿Hay alguna manera fácil de obtener la ruta de un elemento seleccionado? o tengo que ir con el método habitual iterando a través del árbol y buscando por id.

Gracias


Bueno, espero que esto no suene demasiado obvio o se pierda lo que estás buscando. Pero una forma de pensarlo es comenzar con el nodo seleccionado y subir (no para comenzar en la raíz y bajar). GWT TreeItems tiene un método getParent () así que sigue llamándolo, agregando lo que obtienes en una lista, hasta que llegues a la raíz (o nada) y eso te dará una ruta invertida a medida que sube una lista de nodos, es único, un nodo puede tener solo un padre, luego solo invierte la lista para que su ruta se reduzca.

Aquí hay un código no probado destinado a ser un método de una subclase de TreeItem (de lo contrario, pondría el nodo como un parámetro para el método, diga ''selectedItem'' y luego sustituya selectedItem por esto a lo largo de

ArrayList getPath(){ ArrayList path= new ArrayList(); // in reverse ie going up path.add(this); TreeItem search; search=this.getParentItem(); while (search!=null){ path.add(search); search=search.getParentItem(); } Collections.reverse(path); // now coming down from the root return path; }

Mejor, Martin


No es una solución elegante. Busco el camino del modelo comercial en lugar del Árbol.

public void getNodeContainingEntity(EntityBase selectedEntity, TreeNode node){ if (exit) return; int count = node.getChildCount(); for(int i=0;i<count;i++){ EntityBase entityChild = (EntityBaseProxy) node.getChildValue(i); if(selectedEntity.getNodeId() == entityChild.getNodeId()){ exit = true; currentNode = node; } else if(node.isChildOpen(i)){ TreeNode n = node.setChildOpen(i, true); if(n!=null) getNodeContainingEntity(selectedEntity,n); } } } public List<EntityBaseProxy> getPath(EntityBase selectedEntity){ exit = false; getNodeContainingEntity(selectedEntity,cellTree.getRootTreeNode()); path.clear(); path.add(selectedEntity); if (null == currentNode) return path; path.add(((EntityBase)currentNode.getValue())); while (null != currentNode.getParent() ){ currentNode = currentNode.getParent(); EntityBase entity = (EntityBase)currentNode.getValue(); if (null != entity) path.add((EntityBaseProxy)currentNode.getValue()); } return path; }