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