上級の再帰: 1 つの入れ子グラフでの異なるレイアウトの混合

複数のレイアウトを混合することが必要になるのは、次の条件のうち少なくとも 1 つが 当てはまる場合です。
  • サブグラフに適用するレイアウト・アルゴリズムが、最上位グラフに必要なアルゴリズムと同じではない。
  • 異なるサブグラフに異なるレイアウトを適用する必要がある。
  • 異なるグラフに同じレイアウト・アルゴリズムを適用するが、設定を変える必要がある。
サブグラフごとに異なるレイアウトを適用したい、上記のような上級の 再帰 の場合、どのレイアウトをどのサブグラフに 使用するのかを指定する必要があります。任意の Subgraph に使用するノード・レイアウト またはリンク・レイアウトを、SubgraphsetNodeLayout メソッドまたは setLinkLayout メソッドを呼び出すことによって指定できます。
Dojo コード例
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);
Subgraph に対してレイアウトが指定されていない場合、親のレイアウトがコピーされます。 したがって、すべてのサブグラフにレイアウトを設定する必要はなく、 異なるレイアウトまたは異なるパラメーターを必要とするサブグラフにのみ設定すればすみます。