Para Especialistas: Mais Índices (HL)

O Layout Hierárquico permite especificar o índice de nível e o índice de posição de um nó.
Especifique o índice de nível e de posição de um nó gráfico da seguinte maneira:
layout.setSpecNodeLevelIndex(node, 5);
layout.setSpecNodePositionIndex(node, 33);
Como estes índices são usados depende da topologia do gráfico e das restrições adicionais. Por exemplo, o índice de nível especificado pode estar em conflito com algum ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalLevelRangeConstraint ou ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSameLevelConstraint. Neste caso, as prioridades de restrição determinam como o conflito será resolvido (consulte Prioridades de Restrição (HL)). Se o modo incremental estiver ativado, os índices de nível e de posição do nó especificado serão ignorados, porque o modo incremental tenta preservar posições do nó antigas. Também é possível obter os índices de nós que foram calculados durante o layout.

Índice de Nível Calculado

O algoritmo de layout permite acessar o índice de nível que foi calculado para um nó por um layout anterior. Use o método:
var index = layout.getCalcNodeLevelIndex(node); 
Se o nó nunca foi organizado, este método retornará -1. Caso contrário, ele retornará o índice de nível anterior do nó.
Em um aplicativo que especifica parâmetros de layout totalmente de forma programática, o método pode ser usado para especificar o índice de nível para o próximo layout da seguinte maneira:
var index = layout.getCalcNodeLevelIndex(node);
layout.setSpecNodeLevelIndex(node, index);
It ensures that the node is placed at the same level as in the previous layout.
Se o gráfico for desanexado do algoritmo de layout, o índice de nível calculado de um nó será configurado de volta para -1.
Nota
Observe as diferenças entre os métodos getCalcNodeLevelIndex e getSpecNodeLevelIndex. O primeiro retorna o índice de nível calculado pelo layout anterior. O segundo retorna o índice de nível especificado, mesmo que não exista nenhum layout anterior.
Por exemplo, considere dois nós A e B. O nó A não possui nenhum índice de nível especificado e o nó B possui um índice de nível especificado 5. Antes do primeiro layout, o método getCalcNodeLevelIndex retorna -1 para os dois nós, porque os níveis ainda não foram calculados. However, getSpecNodeLevelIndex returns -1 for A and 5 for B. After the first layout, node A can be placed at level 4. Now, getCalcNodeLevelIndex returns 4 for node A and 5 for node B and getSpecNodeLevelIndex still returns -1 for A and 5 for B.

Índice de Posição Calculado

O algoritmo de layout permite acessar o índice de posição em um nível que foi calculado para um nó por um layout anterior. Use o método:
var index = layout.getCalcNodePositionIndex(node);
Se o nó nunca foi organizado, este método retornará -1. Caso contrário, ele retornará o índice de posição anterior do nó em seu nível.
Para assegurar que o nó seja posicionado no mesmo nível na mesma posição relativa que no layout anterior, use o seguinte código em um aplicativo que especifica parâmetros de layout totalmente de forma programática:
layout.setSpecNodeLevelIndex(node, layout.getCalcNodeLevelIndex(node));
layout.setSpecNodePositionIndex(node, layout.getCalcNodePositionIndex(node));
Este código de exemplo funcionará apenas se o layout do componente conectado genérico estiver desativado e os lados da porta EAST ou WEST não forem usados no layout.
Se o gráfico for desanexado do algoritmo de layout, o índice de posição calculado de um nó será configurado de volta para -1.
Nota
Observe as diferenças entre os métodos getCalcNodePositionIndex e setSpecNodePositionIndex. O primeiro retorna o índice de posição calculado pelo layout anterior e -1 se não houver nenhum layout anterior. O segundo retorna o índice de posição especificado, mesmo que não exista nenhum layout anterior. Este comportamento é semelhante ao comportamento do índice de nível especificado e calculado (consulte Índice de Nível Calculado).