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