整列パラメーター

整列オプションは、親が子ノードに対してどのように配置されるのかを制御します。 整列は、グローバルに設定できます。この場合、すべてのノードは同じように整列されます。 また、ノードごとにローカルに設定することもでき、その場合、同じ描画で異なる整列が生じます。
中央揃え、
西揃え、ボーダー中央揃え、および東揃えを示す一連のツリー・レイアウト
整列オプション

グローバル整列

グローバル整列を設定するには、以下のようにします。
treeLayout.setGlobalAlignment(ibm_ilog.graphlayout.tree.TreeLayout.WEST);
グローバル整列の有効値は、以下のとおりです。
  • ibm_ilog.graphlayout.tree.TreeLayout.CENTER (デフォルト)
    親は、子ノードの中心を考慮に入れて、子ノードの上に中央揃えで配置されます。
  • ibm_ilog.graphlayout.tree.TreeLayout.BORDER_CENTER
    親は、子ノードのボーダーを考慮に入れて、子ノードの上に中央揃えで配置されます。 最初の子と最後の子のサイズが異なる場合は、ボーダー中央揃えでは、親は、デフォルトの中央揃えよりも、大きい方の子の近くに配置されます。
  • ibm_ilog.graphlayout.tree.TreeLayout.EAST
    親は、一番東の子のボーダーに整列されます。 例えば、方向選択が下向きの場合、東は右方向です。 方向選択が上向きの場合、東は左方向です。 詳しくは、位置レイアウト・パラメーターのコンパス方向の使用 (TL) を参照してください。
  • ibm_ilog.graphlayout.tree.TreeLayout.WEST
    親は、一番西の子のボーダーに整列されます。 例えば、方向選択が下向きの場合、西は左方向です。 方向選択が右向きの場合、西は下方向です。 詳しくは、位置レイアウト・パラメーターのコンパス方向の使用 (TL) を参照してください。
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST
    子ノードは並列ではなく順次に配置され、親ノードは子ノードへのオフセットを使用して配置されます。子ノードは、親ノードの東側になります。詳しくは、傾斜整列 を参照してください。
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_WEST
    子ノードは並列ではなく順次に配置され、親ノードは子ノードへのオフセットを使用して配置されます。子ノードは、親ノードの西側になります。詳しくは、傾斜整列 を参照してください。
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST_WEST
    子ノードは並列ではなく順次に配置され、親ノードは子ノードへのオフセットを使用して配置されます。子ノードは、親ノードの両側に配置されます。 最初の子ノードは、東側に配置されます。後続の子ノードは、 両側で使用されるスペースがほぼ同じになるように東側または西側に配置されます。 すなわち、東側のサブツリーの全体の高さは、西側のサブツリーの全体の高さとほぼ同じになります。 詳しくは、傾斜整列 を参照してください。
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_BOTH_SIDES
    子ノードは、並列ではなく順次に配置されます。 整列 TIP_OVER では、すべての子ノードは親と同じ側に配置されますが、 この整列では、子ノードは親の両側に配置されます。 TIP_OVER_EAST_WEST 整列と異なり、 このスタイルは、両側で使用されるスペースを最適化しようとせずに、 常に、奇数番目の子ノードを西側に、偶数番目の子ノードを東側に配置します。 子ノードの各ペア (西側に配置された子ノードと東側に配置された子ノードのペア) は、 奇数番目のノードと偶数番目のノードで相互に位置合わせされます。 詳しくは、傾斜整列 を参照してください。
  • ibm_ilog.graphlayout.tree.TreeLayout.MIXED
    各親ノードに異なる整列を設定できます。 個別ノードの整列を設定することができますが、 その結果、同じグラフ内で異なる整列が実行される場合があります。

個別ノードの整列

グローバル整列が MIXED に設定されていない限り、すべてのノードの整列は同じになります。 グローバル整列が MIXED に設定されている場合のみ、各ノードに個別の整列スタイルを設定できます。
各サブツリーに異なる整列が設定されたサンプル・グラフ
同じ描画内に混合された各種整列
個別ノードの整列を指定するには、以下のようにします。
以下のメソッドを使用します。
treeLayout.setGlobalAlignment(ibm_ilog.graphlayout.tree.TreeLayout.MIXED);
treeLayout.setAlignment(graph.children[1], ibm_ilog.graphlayout.tree.TreeLayout.EAST);  
alignment の有効な値は、次のとおりです。
  • ibm_ilog.graphlayout.tree.TreeLayout.CENTER (デフォルト値)
  • ibm_ilog.graphlayout.tree.TreeLayout.BORDER_CENTER
  • ibm_ilog.graphlayout.tree.TreeLayout.EAST
  • ibm_ilog.graphlayout.tree.TreeLayout.WEST
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_WEST
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST_WEST
  • ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_BOTH_SIDES

傾斜整列

通常、ノードの子ノードは、兄弟をお互いの直接の隣接ノードとして配置して、並列 に配置されます。 代わりに、傾斜整列では、子ノードは順次 に配置されます。
通常の整列 (左側) と傾斜東整列 (右側) で示されたサンプル・グラフ
通常の整列および傾斜整列
傾斜整列は、ツリーのリーフ数が多い場合に有用です。 通常の整列では、リーフが多いツリーの場合、レイアウトの横幅が長くなってしまいます。グローバル整列スタイルを傾斜に設定すると、描画は、横幅が広くなる代わりに縦に長くなります。 描画の幅と高さとのバランスを取るために、グローバル整列を混合に設定できます。
例:
treeLayout.setGlobalAlignment(ibm_ilog.graphlayout.tree.TreeLayout.MIXED);
また、以下のように、多数の子ノードを持つ一部の親に対して、個別整列を傾斜に設定することもできます。
treeLayout.setAlignment(parent, ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST); 
傾斜整列は、ノードの一部またはすべてに対して明示的に指定できます。ツリー・レイアウトでは、いつ傾斜するかを自動的に判別して、指定したアスペクト比に適した描画を実現するレイアウト・モードが用意されています。これらのレイアウト・モードについては、傾斜レイアウト・モード で説明します。
傾斜東整列は、親ノードを起点とする中央線の東側にノードを配置します。 傾斜西整列は、中央線の西側にノードを配置します。 このほかにも、中央線の両側にサブツリーを分散する 2 つのバリアントもあります。 これらのバリアントは、子ノード数が多い親ノードで、以下のコードにより指定できます。
treeLayout.setAlignment(parent, ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST_WEST);
または
treeLayout.setAlignment(parent, ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_BOTH_SIDES);
以下の図は、傾斜東西整列と傾斜両側整列の違いを示しています。

5 つの子ノードが傾斜東西整列で配置されているグラフ

5 つの子ノードが傾斜両側整列で配置されているグラフ
傾斜東西整列 傾斜両側整列
傾斜整列は、直交リンク・スタイルと使用すると効果的です。リンク・スタイル (TL) を参照してください。次の図は、 片側の傾斜と両側の傾斜の違いを示しています。 傾斜整列は、赤色のノードに指定されています。 青色のノードは中央揃えになっています。

赤色のノードで東側および両側の傾斜整列オプションの使用例を示すツリー・レイアウト
傾斜整列

子整列

グローバル整列は、すべてのノードで有効です。あるノードで指定された整列は、 そのノードのすべての子ノードで有効になります。さらに、 特定のノードについて例外を指定し、他のすべての子ノードとは異なる方法で整列させることができます。 これは、組織チャート表示に便利です。 管理階層を示す組織チャートで、表示されている一部の人々は階層に属していません。 その代わりに、階層の特定のメンバーに関連付けられています。 このような例として、会社の管理者の下で働く秘書が考えられます。 秘書を表すノードは、組織チャート・ツリーにおいて、通常、管理者のノードの近くに表示されますが、 その管理者の下で働く一般社員を表す子ノードとは混合されていません。
特定のノードの子整列を設定するには、以下のようにします。
以下のメソッドを使用します。
treeLayout.setChildAlignment(node, alignment);
treeLayout.getChildAlignment(node);
子整列に有効な値は以下のとおりです。
以下の図で、黄色のノードは子整列 EAST_NEIGHBOR または WEST_NEIGHBOR、 赤色のノードは子整列 TIP_OVER_ASSOCIATE_EAST または TIP_OVER_ASSOCIATE_BOTH_SIDES が指定されています。 緑色のノードには子整列が指定されていません。すなわち、グローバル整列スタイルで配置されます。
子
ノード整列: 黄色は EAST_NEIGHBOR、赤色は TIP_OVER_ASSOCIATE_EAST、緑色は CENTER です。
子
ノード整列: 黄色は EAST_NEIGHBOR、赤色は TIP_OVER_ASSOCIATE_EAST、緑色は TIP_OVER_BOTH_SIDES です。
示されている整列は、黄色のノードが EAST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_EAST、緑色のノードが CENTER です 示されている整列は、黄色のノードが EAST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_EAST、緑色のノードが TIP_OVER_BOTH_SIDES です
子
ノード整列: 黄色は WEST_NEIGHBOR、赤色は TIP_OVER_ASSOCIATE_BOTH、緑色は CENTER です。
子
ノード整列: 黄色は WEST_NEIGHBOR、赤色は TIP_OVER_ASSOCIATE_BOTH、緑色は TIP_OVER_BOTH_SIDES です。
示されている整列は、黄色のノードが WEST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_BOTH_SIDES、緑色のノードが CENTER です 示されている整列は、黄色のノードが WEST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_BOTH_SIDES、緑色のノードが TIP_OVER_BOTH_SIDES です