Sie können dasselbe Layout anwenden, wenn die die folgenden beiden Bedingungen erfüllt sind:
- Derselbe Layoutalgorithmus muss auf den Graphen der Ausgangsebene und alle seine Untergraphen angewendet werden.
- Die Einstellungen des Layoutalgorithmus (d. h. die Layoutparameter) müssen für den Graphen der Ausgangsebene und alle seine Untergraphen identisch sein.
Die folgende Abbildung enthält ein Beispiel, in dem ein Baumstrukturlayout
auf den Graphen der Ausgangsebene und alle seine Untergraphen angewendet wird.
Darüber hinaus sind die Einstellungen des Algorithmus für Baumstrukturlayout
für alle Graphen identisch: Die Anwendung benötigt beispielsweise
keine Arbeitsrichtung im Graphen der Ausgangsebene und keine andere in den Untergraphen.

Beispiel für ein rekursives Layout eines verschachtelten Graphen
Der Abruf eines solchen rekursiven Layouts ist einfach. Sie müssen das Graphenlayout
in der Diagram- bzw. Graph-Instanz der Ausgangsebene angeben und die
Methode performGraphLayout aufrufen.
Das Layout wird rekursiv ausgeführt, weil das Argument recursive
der Methode standardmäßig auf
true
gesetzt ist. Interner Mechanismus
Der interne Mechanismus basiert auf dem Prinzip, dass eine Layoutinstanz
nur für einen einzigen Graphen verwendet und für die zugehörigen Untergraphen nicht wiederverwendet wird.
Deshalb wird die Instanz des Baumstrukturlayouts automatisch mit der Methode
ibm_ilog.graphlayout.GraphLayout.copy() "geklont".
Das Graphenlayout wird auf ein Graphenmodell angewendet, und dasselbe Prinzip gilt für die Graphenmodelle:
Eine Graphenmodellinstanz
wird nur für einen einzigen Graphen
verwendet und für die zugehörigen Untergraphen nicht wiederverwendet.
Die Graphenmodelle für die Untergraphen werden von Aufrufen der Methode
ibm_ilog.graphlayout.GraphLayout.copy() erstellt, die wiederum das Graphenmodell
mit der Methode ibm_ilog.graphlayout.GraphLayout.getGraphModel() erstellt.
Alle diese Operationen werden automatisch auf transparente Art und Weise ausgeführt.
Alles, was Sie tun müssen, ist, die Methode
performGraphLayout
mit dem Argument
recursive
, das den Wert true
hat, oder ohne dieses Argument aufzurufen.
Dojo-Codebeispiel
Das folgende Codebeispiel veranschaulicht, wie ein einziger Layoutalgorithmus auf einen verschachtelten Graphen angewendet wird:
var diagram = dijit.byId("diagram"); var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); diagram.attr("nodeLayout", treeLayout); diagram.performGraphLayout(true);