Die folgenden Parameter sind spezielle Parameter der Klasse ibm_ilog.graphlayout.tree.TreeLayout. Sie gelten für alle Layoutmodi.
Stammknoten (TL)
Das endgültige Layout wird hauptsächlich durch die Wahl des Stammknotens beeinflusst.
Der Stammknoten wird an einer prominenten Position platziert. In einer Top-down-Zeichnung im Modus für freies Layout
wird der Stammknoten beispielsweise oben in der Baumstruktur platziert.
Im Radiallayoutmodus wird der Stammknoten in der Mitte der Baumstruktur platziert.
Der Spanning Tree wird ausgehend vom Stammknoten berechnet.
Wenn der Graph nicht verbunden ist, benötigt der Layoutalgorithmus einen Stammknoten für jede verbundene Komponente.
Der Layoutalgorithmus wählt bei Bedarf automatisch einen Stammknoten aus.
Er verwendet ein heuristisches Verfahren, das die Vorgaben für alle Knoten berechnet, um einen Stammknoten festlegen zu können.
Er wählt den Knoten mit der höchsten Vorgabe aus.
Das heuristische Verfahren weist Knoten ohne eingehende Links die höchste Vorgabe und
Blattknoten mit abgehenden Links die niedrigste Vorgabe zu. Deshalb wird in einer gerichteten
Strukturbaum der kanonische Stammknoten immer automatisch ausgewählt.
Es ist möglich, die Wahl des Stammknotens zu beeinflussen.
Gehen Sie wie folgt vor, um einen bestimmten Knoten explizit als Stammknoten zu definieren:
Verwenden Sie die Methode setRoot:
treeLayout.setRoot(node);
Dem Knoten wird damit die maximale Vorgabe erteilt, so dass er während des Layouts als Stammknoten verwendet wird.
Wenn nur ein einziger Knoten auf diese Weise spezifiziert wird, wählt der Algorithmus diesen Knoten aus. Werden mehrere Knoten
derselben verbundenen Komponente auf diese Weise angegeben,
wählt der Layoutalgorithmus einen dieser Knoten als Stammknoten aus.
Für Experten: Weitere Optionen für Stammknoten (TL)
Der Layoutalgorithmus verwaltet eine Liste der Stammknoten, die mit der Methode
setRoot angegeben wurden.
Zum Abrufen der Knoten in der Liste verwenden Sie Methode getSpecRoots:
var roots = treeLayout.getSpecRoots(); while(roots.hasNext()){ var root = roots.next(); ... }
Nach dem Layout können Sie auch die Liste der vom Algorithmus verwendeten Stammknoten abrufen.
Diese Liste ist nicht unbedingt dieselbe wie die Liste der angegebenen Knoten.
Sie enthält beispielsweise die ausgewählten Stammknoten, wenn keine Stammknoten
oder zu viele Stammknoten angegeben wurden.
Verwenden Sie die Methode getCalcRoots, um die vom Algorithmus verwendeten
Stammknoten abzurufen:
var roots = treeLayout.getCalcRoots(); while(roots.hasNext()){ var root = roots.next(); ... }
Dieses Beispiel veranschaulicht, wie Sie über die berechneten Stammknoten iterieren und die Vorrangstellungen
der Stammknoten ausgeben können:
var roots = treeLayout.getCalcRoots(); while(roots.hasNext()){ var root = roots.next(); console.log("Preference: " + treeLayout.getRootPreference(root)); }
Gehen Sie wie folgt vor, um den Vorgabewert für den Stammknoten
eines einzelnen Knotens direkt zu bearbeiten:
Verwenden Sie die folgende Methode:
treeLayout.setRootPreference(node, 100);
In diesem Fall verwendet das Layout den angegebenen Wert anstelle der
heuristisch berechneten Vorgabe für den Knoten. Der normale Vorgabewert muss
0
-10000
sein. Die explizite Angabe eines Stammknotens entspricht
der Definition des Vorgabewerts 10000
. Wenn Sie verhindern möchten, dass ein Knoten der Stammknoten wird,
geben Sie null (0
) als Vorgabewert an. Ein negativer Vorgabewert zeigt an, dass der Layoutalgorithmus die Stammknotenvorgabe unter Verwendung des
heuristischen Verfahrens neu berechnen muss.
Wenn mit der Methode
setRoot
ein Stammknoten angegeben wurde, aber dieser Knoten
in nachfolgenden Layouts nicht mehr als Stammknoten verwendet werden darf, verwenden Sie den folgenden Aufruf, um die Stammknoteneinstellung
zu löschen:
treeLayout.setRootPreference(node, -1);
Dieser Aufruf entfernt den Knoten auch aus der Liste angegebener Stammknoten.
Positionsparameter (TL)
Gehen Sie wie folgt vor, um die Position der oberen linken Ecke des Layouts auf (10, 10) zu setzen:
Verwenden Sie die folgende Methode:
treeLayout.setPosition({x:10, y:10}, false);
Wenn der Graph nur aus einer einzigen Baumstruktur besteht, ist es häufig einfacher, stattdessen die Position des Stammknotens festzulegen.
Gehen Sie dazu wie folgt vor:
Verwenden Sie dieselbe Methode, und übergeben Sie
true
anstelle von false
: treeLayout.setPosition({x:10, y:10}, true);
Wenn keine Position angegeben wird, behält das Layout die vorherige Position des Stammknotens bei.
Kompassrichtungen für positionsgebundene Layoutparameter verwenden (TL)
Die Kompassrichtungen Norden, Süden, Osten und Westen werden verwendet, um
die Erläuterungen der Layoutparameter zu vereinfachen.
Die Mitte des Stammknotens einer Baumstruktur ist der Nordpol.
In nicht radialen Layoutmodi ist die Arbeitsrichtung der Links immer Süden.
Wenn der Stammknoten oben in der Zeichnung platziert wird, ist Norden oben, Süden unten, Osten rechts und Westen links.
Wenn der Stammknoten am linken Rand der Zeichnung platziert wird, ist Norden links, Süden rechts, Osten oben und Westen unten.
In den Radiallayoutmodi wird der Stammknoten in der Mitte der Zeichnung platziert.
Die Bedeutung von Norden und Süden richtet sich nach der Position relativ zum Stammknoten:
Die Nordseite des Knotens ist die Seite, die näher am Stammknoten liegt, und die Südseite die Seite, die weiter vom Stammknoten entfernt ist.
Die Ostrichtung verläuft entgegen dem Uhrzeigersinn um den Stammknoten herum, und die Westrichtung im Uhrzeigersinn um den Stammknoten herum.
Dies ist ähnlich wie bei einer Landkarte eines echten Globus, auf der der Bereich des Nordpols so gezeigt wird, als würden Sie
von oben auf den Globus heruntersehen.
Kompassrichtungen werden verwendet, um einheitliche Namenskonventionen für bestimmte Layoutoptionen zu unterstützen.
Sie kommen in den Ausrichtungsoptionen, der Option für die Ebenenausrichtung und im Merkmal für die Ost-West-Nachbarschaft vor, die später noch erläutert werden.
In Arbeitsrichtungen und Radiallayoutmodus
zeigen die Kompasssymbole die Kompassrichtungen in diesen Zeichnungen an.
Layoutmodi (TL)
Der Algorithmus für Baumstrukturlayout unterstützt mehrere Layoutmodi. Das folgende
Beispiel veranschaulicht, wie der Layoutmodus angegeben wird.
Verwenden Sie die Methode setLayoutMode:
treeLayout.setLayoutMode(ibm_ilog.graphlayout.tree.TreeLayout.RADIAL);
Die folgenden Layoutmodi sind verfügbar:
ibm_ilog.graphlayout.tree.TreeLayout.FREE
(Standardwert)ibm_ilog.graphlayout.tree.TreeLayout.LEVEL
ibm_ilog.graphlayout.tree.TreeLayout.RADIAL
ibm_ilog.graphlayout.tree.TreeLayout.ALTERNATING_RADIAL
ibm_ilog.graphlayout.tree.TreeLayout.BALLOON
ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER
ibm_ilog.graphlayout.tree.TreeLayout.TIP_ROOTS_OVER
ibm_ilog.graphlayout.tree.TreeLayout.TIP_LEAVES_OVER
ibm_ilog.graphlayout.tree.TreeLayout.TIP_ROOTS_AND_LEAVES_OVER