Erweiterte Rekursion: Verschiedene Layouts in einem verschachtelten Graphen mischen

Der Bedarf an verschiedenen Layouts in ein und demselben Graphen entsteht, wenn mindestens eine der folgenden Bedingungen zutrifft:
  • Der auf Untergraphen anzuwendende Layoutalgorithmus entspricht nicht dem Layoutalgorithmus, der für den Ausgangsgraphen erforderlich ist.
  • Es müssen verschiedene Layouts auf verschiedene Untergraphen angewendet werden.
  • Derselbe Layoutalgorithmus muss auf verschiedene Graphen, aber mit unterschiedlichen Einstellungen angewendet werden.
In diesen Fällen erweiterter Rekursion, in denen Sie verschiedene Layouts auf verschiedene Untergraphen anwenden möchten, müssen Sie angeben, welches Layout für welchen Untergraphen zu verwenden ist. Sie können das für jeden Untergraphen zu verwendende Knoten- bzw. Link-Layout durch Aufruf der Methode setNodeLayout bzw. setLinkLayout des Untergraphen festlegen.
Dojo-Codebeispiel
var diagram = dijit.byId("diagram");

// use a tree layout for the top-level graph:
var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout();
diagram.attr("nodeLayout", treeLayout);

// use a grid layout for the first subgraph:
var gridLayout = new ibm_ilog.graphlayout.grid.GridLayout();
subgraph1.setNodelayout(gridLayout);

// use another tree layout with different parameters for the second subgraph:
var treeLayout2 = new ibm_ilog.graphlayout.tree.TreeLayout();
treeLayout2.setFlowDirection(ibm_ilog.graphlayout.Direction.BOTTOM);
subgraph2.setNodelayout(treeLayout2 );

// perform layout recursively:
diagram.performGraphLayout(true);
Wenn kein Layout für einen bestimmten Untergraphen angegeben ist, wird das Layout des übergeordneten Graphen kopiert. Deshalb müssen Sie das Layout nicht in allen Untergraphen, sondern nur in den Untergraphen festlegen, die ein anderes Layout oder andere Parameter erfordern.