Restrições de Intervalos de Níveis (HL)

Na Etapa 1 do algoritmo de layout (a fase de nivelamento), os nós são particionados em níveis. Estes níveis são indexados a partir de 0. Por exemplo, quando a direção do fluxo for para a parte inferior, os nós do índice de nível 0 serão posicionados na linha do nível horizontal superior e os nós com um índice de nível maior serão colocados em uma posição inferior aos nós com um índice de nível menor (consulte Índices de nível e de posição). O algoritmo de layout calcula estes índices de níveis automaticamente.
É possível escolher como os níveis serão particionados, especificando o intervalo do índice de nível para alguns nós. Os nós são posicionados nos níveis cujo índice está no intervalo especificado. Você deve especificar os índices mínimo e máximo do nível.
Para especificar os índices mínimo e máximo do nível:
Chame:
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, 7));
Se desejar posicionar o nó exatamente no nível 5, chame:
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, 5));
Como alternativa, é possível chamar:
layout.setSpecNodeLevelIndex(node, 5);
which has the same meaning.
Se desejar forçar o nó para o nível 5 e acima, configure UNSPECIFIED como o nível máximo.
Chame:
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED));
Se desejar forçar o nó para o nível 5 e abaixo (ou seja, nível 0, ..., 5), configure UNSPECIFIED como o nível mínimo. Por exemplo:
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED, 5));
Neste caso específico, também é possível usar zero (0) como o nível mínimo, porque os índices de nível começam em 0.
É possível aplicar a restrição a um grupo de vários nós de uma vez. It has the same effect as specifying the constraint for each single node of the group, but it is more memory efficient and convenient. For instance, if you want to force the group of three nodes to the levels 5 - 7:
Para especificar estes parâmetros:
Crie um objeto NodeGroup (consulte Grupos de Nós) dos três nós e inclua-o na restrição da seguinte maneira:
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(nodeGroup, 5, 7));