特定パラメーター (すべてのツリー・レイアウト・モード用)

以下のパラメーターは、ibm_ilog.graphlayout.tree.TreeLayout クラスに固有のものです。これらは、すべてのレイアウト・モードに適用されます。

ルート・ノード (TL)

最終レイアウトは、主にルート・ノードの選択によって影響を受けます。
ルート・ノードは目立つ位置に配置されます。 例えば、自由レイアウト・モードのトップダウン描画では、ツリーの最上部に配置されます。 放射レイアウト・モードでは、ツリーの中心に配置されます。
スパンニング・ツリーはルート・ノードから順に計算されます。 非接続グラフの場合、レイアウト・アルゴリズムでは、接続コンポーネントごとにルート・ノードが必要です。
レイアウト・アルゴリズムは、必要に応じてルート・ノードを自動的に選択します。 各ノードがルートになった場合のプリファレンスを計算するヒューリスティックを使用します。 最も高いプリファレンスのノードが選択されます。 ヒューリスティックは、到着リンクがないノードに最高のプリファレンスを設定し、出発リンクのないリーフ・ノードに最低のプリファレンスを設定します。 このように、有向ツリーでは、標準ルートは常に自動的に選択されます。
ルート・ノードの選択に手を加えることも可能です。
ノードを明示的にルートとして設定するには、以下のようにします。
メソッド setRoot を使用します。
treeLayout.setRoot(node);
これにより、レイアウト時にルートになるための最大のプリファレンスがノードに設定されます。 このように指定されたノードが単一の場合は、そのノードがアルゴリズムで選択されます。 同じ接続コンポーネントでこのように指定されたノードが複数ある場合は、そのうち 1 つがルートとしてレイアウト・アルゴリズムで選択されます。

上級者向け: ルート・ノードの追加オプション (TL)

レイアウト・アルゴリズムは、setRoot メソッドで指定されたルート・ノードのリストを管理します。
このリストのノードを取得するには、以下のメソッド getSpecRoots を使用します。
var roots = treeLayout.getSpecRoots();
while(roots.hasNext()){
	var root = roots.next();
	...
}
レイアウト後に、アルゴリズムで使用されたルート・ノードのリストを取得することもできます。 このリストは、必ずしも指定したルートのリストと同じとは限りません。 例えば、ルート・ノードが指定されなかった場合や、指定されたルート・ノードが多過ぎた場合には、選択されたルート・ノードが含まれます。
アルゴリズムで使用されたルート・ノードを取得するには、 以下のメソッド getCalcRoots を使用します。
var roots = treeLayout.getCalcRoots();
while(roots.hasNext()){
	var root = roots.next();
	...
}
この例では、計算されたルート・ノードについて反復して、ルート・ノード・プリファレンスを出力する方法について示します。
var roots = treeLayout.getCalcRoots();
while(roots.hasNext()){
 var root = roots.next();
 console.log("Preference: " + treeLayout.getRootPreference(root));
}
個別ノードのルート・ノード・プリファレンス値を直接操作するには、以下のようにします。
以下のメソッドを使用します。
treeLayout.setRootPreference(node, 100);
この場合、レイアウトは、ノードに対してヒューリスティックに計算されたプリファレンスの代わりに、指定値を使用します。 通常のプリファレンス値は、0 から 10000 までにする必要があります。 ルート・ノードを明示的に指定するには、プリファレンス値を 10000 に設定します。 ノードがルートにならないようにするには、プリファレンス値ゼロ (0) を指定します。
負のプリファレンス値は、レイアウト・アルゴリズムでヒューリスティックを使用してルート・ノード・プリファレンスを再計算することを指示します。 ルートが setRoot メソッドで指定されたが、そのノードが後続のレイアウトでルートでないようにする必要がある場合は、 以下の呼び出しによってルート・ノード設定をクリアします。
treeLayout.setRootPreference(node, -1);
この呼び出しにより、ノードは指定ルートのリストからも削除されます。

位置パラメーター (TL)

レイアウトの左上隅 の位置を (10, 10) に設定するには、以下のようにします。
以下のメソッドを使用します。
treeLayout.setPosition({x:10, y:10}, false);
グラフが単一のツリーのみで構成されている場合、たいてい、代わりにルート・ノードの位置を設定した方が簡便です。 これを行うには、以下のようにします。
以下のように、同じメソッドを使用し、false の代わりに true を渡します。
treeLayout.setPosition({x:10, y:10}, true); 
位置が指定されなかった場合は、レイアウトはルート・ノードを以前の位置のままにします。

位置レイアウト・パラメーターのコンパス方向の使用 (TL)

コンパス方向の東西南北 は、レイアウト・パラメーターの説明を簡単にするために使用します。 ツリーのルート・ノードの中心は、北極と見なされます。
非放射レイアウト・モードでは、リンクの方向選択は常に南です。 ルート・ノードが描画の最上部に配置される場合、北は上部、南は下部、東は右方、西は左方になります。 ルート・ノードが描画の左のボーダーに配置される場合、北は左方、南は右方、東は上部、西は下部になります。
放射レイアウト・モードでは、ルート・ノードは描画の中心に配置されます。 北と南の意味は、ルートに対する相対位置によって異なります。ノードの北側はルートにより近い側であり、南側はルートから遠い側です。 東方向はルートを中心として左回りであり、西方向はルートを中心として右回りです。 これは、地球の最上部で見下ろしているかのように北極エリアを示す現実世界の地球の地図とよく似ています。
コンパスの方向は、特定のレイアウト・オプションの命名規則を均一にするために使用されます。 整列オプション、レベル整列オプション、および東西隣接フィーチャー (これらは後述) で使用されます。 方向選択 および 放射レイアウト・モード では、コンパス・アイコンでこれらの描画内のコンパス方向が示されています。

レイアウト・モード (TL)

ツリー・アルゴリズムにはいくつかのレイアウト・モードがあります。 以下の例で、レイアウト・モードの指定方法について説明します。
メソッド setLayoutMode を使用します。
treeLayout.setLayoutMode(ibm_ilog.graphlayout.tree.TreeLayout.RADIAL);  
有効なレイアウト・モードは以下のとおりです。
  • ibm_ilog.graphlayout.tree.TreeLayout.FREE (デフォルト)
  • 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