Para expertos: más índices (DJ)

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).