El Diseño jerárquico permite especificar el índice de
nivel y el índice de posición de un nodo.
Debe especificar el índice de nivel y posición de un
nodo gráfico de la siguiente manera:
layout.setSpecNodeLevelIndex(node, 5); layout.setSpecNodePositionIndex(node, 33);
Cómo se utilizan estos índices depende de la topología
del gráfico y de las restricciones adicionales. Por ejemplo, el
índice de nivel especificado puede entrar en conflicto con alguna
ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalLevelRangeConstraint
o ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSameLevelConstraint.
En este caso, las prioridades de las restricciones determinan cómo se
resuelve el conflicto (consulte
Prioridades de restricciones (DJ) ).
Si la modalidad incremental está habilitada, se hace caso omiso del
nivel de nodo y del índice de posición especificados, puesto que la
modalidad incremental intenta conservar las posiciones anteriores de
los nodos. También es posible obtener los índices de los nodos que se
han calculado durante el diseño.
Índice de nivel calculado
El algoritmo de diseño permite acceder al índice de
nivel calculado para un nodo por un diseño anterior. Utilice el método:
var index = layout.getCalcNodeLevelIndex(node);
Si el nodo nunca se ha presentado, este método devuelve
-1
. De lo contrario, devuelve
el índice de nivel anterior del nodo. En una aplicación que especifica los parámetros de
diseño totalmente mediante programación, el método puede utilizarse
para especificar el índice de nivel del diseño siguiente del modo
siguiente:
var index = layout.getCalcNodeLevelIndex(node); layout.setSpecNodeLevelIndex(node, index);
Esto garantiza que el nodo se coloca en el mismo nivel
que en el diseño anterior.
Si el gráfico está desconectado del algoritmo de diseño,
el índice de nivel calculado de un nodo se vuelve a establecer en
-1
. Nota
Tenga presente la diferencia entre los métodos
getCalcNodeLevelIndex
y getSpecNodeLevelIndex.
El primero devuelve el índice de nivel calculado por el diseño
anterior. El segundo devuelve el índice de nivel especificado, aunque
no haya ningún diseño anterior.
Por ejemplo, supongamos que tenemos dos nodos, A y B.
Para el nodo A no se ha especificado ningún índice de nivel y para el
nodo B se ha especificado el índice de nivel 5.
Antes de ejecutar el primer diseño, el método
getCalcNodeLevelIndex
devuelve
-1 para ambos nodos porque los niveles todavía no se han calculado.
Sin embargo,
getSpecNodeLevelIndex
devuelve
-1 para A y 5 para B. Tras ejecutar el primer diseño, el nodo A puede
colocarse en el nivel 4. Ahora,
getCalcNodeLevelIndex
devuelve
4 para el nodo A y 5 para el nodo B y
getSpecNodeLevelIndex
sigue
devolviendo -1 para A y 5 para B. Índice de posición calculado
El algoritmo de diseño permite acceder al índice de
posición dentro de un nivel calculado para un nodo por un diseño
anterior. Utilice el método:
var index = layout.getCalcNodePositionIndex(node);
Si el nodo nunca se ha presentado, este método devuelve
-1.
De lo contrario, devuelve el índice de posición anterior del nodo
dentro de su nivel.
Para asegurarnos de que el nodo se coloca en el mismo
nivel y en la misma posición relativa que en el diseño anterior,
utilice el código siguiente en una aplicación que especifica los
parámetros de diseño totalmente mediante programación:
layout.setSpecNodeLevelIndex(node, layout.getCalcNodeLevelIndex(node)); layout.setSpecNodePositionIndex(node, layout.getCalcNodePositionIndex(node));
Este código de ejemplo funciona sólo si el diseño
genérico de componentes conectados está inhabilitado y en el diseño
no se utilizan las caras del puerto
EAST
o
WEST
. Si el gráfico está desconectado del algoritmo de diseño,
el índice de posición calculado de un nodo se vuelve a establecer en
-1.
Nota
Tenga presente la diferencia entre los métodos
getCalcNodePositionIndex
y setSpecNodePositionIndex.
El primero devuelve el índice de posición calculado por el diseño
anterior y -1 si no hay ningún diseño anterior. El segundo devuelve
el índice de posición especificado aunque no haya ningún diseño
anterior. Este comportamiento se parece al del índice de nivel
especificado y calculado (consulte
Índice de nivel calculado).