14 February 2008

Utilización de Arboles (Trees) en beehive

Me resulta curioso y la vez gratificante que beehive disponga de una etiqueta para generar estructuras en forma de arbol y que resulte tan fácil utilizarla. Ya que el concepto o la idea de rellenar y recorrer sus elementos es el mismo que con los nodos XML.

La declaracion en la jsp seria la siguiente:

<netui:tree selectionaction="SelectTreeNodeAction" datasource="pageFlow.simpleTree" tagid="treeRoot" runatclient="on" />

Donde:
selectionAction
Señala el nombre de la accion del controler asociada
dataSource
Es la propiedad a la que se asocia el tree (en este caso una del controller)
tagId
Identificador del tag
runAtClient
Indica la forma como se cargan los nodos. Ver documentación.

El código del controller sería la siguiente:

...
private TreeElement _simpleTree;
...
public TreeElement getSimpleTree() {
return _simpleTree;
}

public void setSimpleTree(TreeElement _simpleTree) {
this._simpleTree = _simpleTree;
}
...
@Jpf.Action(forwards = { @Jpf.Forward(name = "success", path = "Preview.jsp") })
public Forward SelectTreeNodeAction() {
Forward forward = new Forward("success");
return forward;
}
...


Como todo arbol podemos personalizar el icono a mostrar para cada nodo utilizando el método setIcon en nuestro código java:
treenodehijo.setIcon("imagen.gif");


El directorio por defecto donde se buscan las imagenes es :
WebApp\resources\beehive\version1\images


Aunque si disponemos de las imagenes para los iconos de los nodos en otro directorio esta última característica se puede personalizar mediante la propiedad images:

<netui:tree selectionaction="SelectTreeNodeAction" datasource="pageFlow.simpleTree" tagid="treeRoot" runatclient="on" images="/portal/images/tree" />

Así todas las imagenes que se utiliza en la generación del arbol se buscarán por ejemplo en el directorio "/portal/images/tree" que se especifica en la propiedad images. Habría que tener cuidado de poner todas las imagenes que necesita el arból, esto incluye las lineas de conexión entre elementos

  • lineJoin.gif - lineJoin.gif
  • lastLineJoin.gif - lastLineJoin.gif
  • verticalLine.gif -verticalLine.gif
  • spacer.gifspacer.gif
  • nodeCollapsed.gif - nodeCollapsed.gif
  • lastNodeCollapsed.gif - lastNodeCollapsed.gif
  • rootCollapsed.gif - rootCollapsed.gif,
  • nodeExpanded.gif - nodeExpanded.gif
  • lastNodeExpanded.gif - lastNodeExpanded.gif
  • rootExpanded.gif - rootExpanded.gif
  • folder.gif - folder.gif

Enlaces relacionados


- FIN -

No comments: