Für Experten: Weitere Indizes (HL)

Das hierarchische Layout ermöglicht Ihnen die Angabe des Ebenenindex und des Positionsindex eines Knotens.
Sie geben den Ebenenindex und den Positionsindex eines Grafikknotens wie folgt an:
layout.setSpecNodeLevelIndex(node, 5);
layout.setSpecNodePositionIndex(node, 33);
Wie diese Indizes verwendet werden, richtet sich nach der Topologie des Graphen und den weiteren Vorgaben. Der angegebene Ebenenindex kann beispielsweise mit einer Vorgabe des Typs ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalLevelRangeConstraint oder ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.HierarchicalSameLevelConstraint in Konflikt stehen. In diesem Fall bestimmen die Vorgabenprioritäten, wie der Konflikt gelöst wird (siehe Vorgabenprioritäten (HL)). Wenn der inkrementelle Modus aktiviert ist, werden die angegebenen Knotenebenen- und Knotenpositionsindizes ignoriert, da der inkrementelle Modus versucht, die alten Knotenpositionen beizubehalten. Es ist auch möglich, die Indizes von Knoten, die während des Layouts berechnet werden, abzurufen.

Berechneter Ebenenindex

Der Layoutalgorithmus ermöglicht Ihnen den Zugriff auf den Ebenenindex, der von einem vorherigen Layout für einen Knoten berechnet wurde. Verwenden Sie die folgende Methode:
var index = layout.getCalcNodeLevelIndex(node); 
Wenn der Knoten noch nicht angelegt wurde, gibt diese Methode -1 zurück. Andernfalls gibt sie den vorherigen Ebenenindex des Knotens zurück.
In einer Anwendung, die die Layoutparameter vollständig über das Programm spezifiziert, kann diese Methode verwendet werden, um den Ebenenindex für das nächste Layout wie folgt anzugeben:
var index = layout.getCalcNodeLevelIndex(node);
layout.setSpecNodeLevelIndex(node, index);
Dies gewährleistet, dass der Knoten in derselben Ebene wie im vorherigen Layout platziert wird.
Wenn die Zuordnung des Graphen zum Layoutalgorithmus aufgehoben wird, wird der berechnete Ebenenindex eines Knotens auf -1 zurückgesetzt.
Hinweis
Beachten Sie die Unterschiede zwischen den Methoden getCalcNodeLevelIndex und getSpecNodeLevelIndex. Die erste Methode gibt den vom vorherigen Layout berechneten Ebenenindex zurück. Die zweite Methode gibt den angegebenen Ebenenindex zurück, selbst wenn es kein vorheriges Layout gibt.
Stellen Sie sich beispielsweise die beiden Knoten A und B vor. Knoten A hat keinen angegebenen Ebenenindex, aber Knoten B hat den angegebenen Ebenenindex 5. Vor dem ersten Layout gibt die Methode getCalcNodeLevelIndex den Wert -1 für beide Knoten zurück, weil die Ebenen noch nicht berechnet wurden. Die Methode getSpecNodeLevelIndex gibt jedoch -1 für A und 5 für B zurück. Nach dem ersten Layout kann Knoten A in Ebene 4 platziert sein. Jetzt gibt getCalcNodeLevelIndex 4 für Knoten A und 5 für Knoten B zurück, und getSpecNodeLevelIndex gibt weiterhin -1 für A und 5 für B zurück.

Berechneter Positionsindex

Der Layoutalgorithmus ermöglicht Ihnen den Zugriff auf den Positionsindex innerhalb einer Ebene, der von einem vorherigen Layout für einen Knoten berechnet wurde. Verwenden Sie die folgende Methode:
var index = layout.getCalcNodePositionIndex(node);
Wenn der Knoten noch nicht angelegt wurde, gibt diese Methode -1 zurück. Andernfalls gibt sie den vorherigen Positionsindex des Knotens innerhalb seiner Ebene zurück.
Um sicherzustellen, dass der Knoten in derselben Ebene an derselben relativen Position wie im vorherigen Layout platziert wird, verwenden Sie den folgenden Code in einer Anwendung, die Layoutparameter vollständig über das Programm spezifiziert:
layout.setSpecNodeLevelIndex(node, layout.getCalcNodeLevelIndex(node));
layout.setSpecNodePositionIndex(node, layout.getCalcNodePositionIndex(node));
Dieser Beispielcode funktioniert nur, wenn das generische Layout für verbundene Komponenten inaktiviert ist und die Portseiten EAST und WEST im Layout nicht verwendet werden.
Wenn die Zuordnung des Graphen zum Layoutalgorithmus aufgehoben wird, wird der berechnete Positionsindex eines Knotens auf -1 zurückgesetzt.
Hinweis
Beachten Sie die Unterschiede zwischen den Methoden getCalcNodePositionIndex und setSpecNodePositionIndex. Die erste Methode gibt den Positionsindex zurück, der vom vorherigen Layout berechnet wurde, und -1, wenn es kein vorheriges Layout gibt. Die zweite Methode gibt den angegebenen Positionsindex zurück, selbst wenn es kein vorheriges Layout gibt. Dieses Verhalten gleicht dem Verhalten des angegebenen Ebenenindex und des berechneten Ebenenindex (siehe Berechneter Ebenenindex).