セルフリンクとは、同じノードで開始および終了するリンクです。
セルフリンクは、複数リンクである場合もあります。このようなリンクは多重セルフリンク・バンドルと呼ばれます。
リンクが直線で経路指定されている場合、セルフリンクは、ノードの中央にある同じポイントで開始および終了するため、識別できません。このような結果にならないように、『基本リンク・スタイル・レイアウトのサブクラスであるレイアウト・アルゴリズム』にリストされているレイアウトには、
リンク・スタイルが STRAIGHT_LINE_STYLE に
設定されている場合にのみ適用されるセルフリンク・モードがあります。
リンク・スタイルの名前に反して、モードとスタイルを組み合わせることにより、
セルフリンクに曲折点が追加され、セルフリンクが表示されるようになります。
リンク・スタイルが NO_RESHAPE_STYLE の場合は、
セルフリンク・モードは無効になります。
セルフリンクの経路指定方法の指定の例
セルフリンク・モードを指定するには、以下のメソッドを使用します。
layout.setSelfLinkMode(mode);
mode に指定できる有効な値を、以下にForce-directedレイアウトの例で示します。
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NO_BENDS: セルフリンクは、曲折点を追加して形状変更されることはないため、表示されない場合があります。
NO_BENDS モードを除く、これらのすべてのモードは、
3 つの曲折点を作成して直角に配置するため、セグメントは 4 分の 3 程度の長方形または正方形のようになり、
残りの 4 分の 1 の部分がセルフリンクが接続されるノードになります。
ノードの大きさによって、RECTANGULAR モードは、4 つのコーナーがある形状 (正方形ではない) を作成し、
SQUARE モードは正方形を作成します。SQUARE モードは、スプライン・セルフリンクの場合に特に便利です。
この場合、スプラインは約 4 分の 3 の円のように見えます。
モード | 結果のグラフィック |
---|---|
CONNECTED_RECTANGULAR モード | ![]() |
CONNECTED_SQUARE モード | ![]() |
CONNECTED_SQUARE モード (スプライン・リンクを使用) | ![]() |
CONNECTED モードは、接続ポイントをノードのボーダーに配置します。
FREE モードは、対応する CONNECTED モードと同じ位置に曲折点を配置しますが、
リンク接続ポイントは強制されません。
すなわち、ノードとリンクは、接続ポイントを自由に設定できます。
FREE モードでのリンク・セグメントは直交していない場合があります。
これは、接続ポイントが強制されないためです。
NARROW モードとそれ以外のモードは、単一のセルフリンクの場合は同じように作用します。
同じノードに複数のセルフリンクがある場合、セルフリンクは重ならないようにオフセットの分だけ
シフトされます。この場合、NARROW モードとそれ以外のモードでは異なります。
複数のセルフリンクのシフト・オフセットが終了ノードのサイズにより制限されるため、
多重セルフリンク・バンドルのリンク間隔がより狭くなることがあります。
モードおよびオフセットの使用例 | 結果のグラフィック |
---|---|
CONNECTED_SQUARE モード | ![]() |
NARROW_CONNECTED_SQUARE モード | ![]() |
セルフリンクは、ノードの 4 つのすべてのコーナーで使用できます。
アルゴリズムは、他のすべてのリンクの方向に基づいて、最適なコーナーを自動的に判別します。
ユーザーが、使用するコーナーを限定することもできます。
以下のメソッドを使用します。
layout.setSelfLinkAllowedCorners(corners);
許可されるコーナーは、以下の定数から選択された組み合わせのビット論理和になります。例えば、
Force-directed レイアウトの場合は以下から選択します。
デフォルトで、セルフリンクは右回りの方向になります。他の方向を指定することもできます。
以下のメソッドを使用します。
setSelfLinkOrientation(orientation);
例えば、Force-directedレイアウトの場合、
orientation の有効値は次のとおりです。
- セルフリンクは、水平セグメントで始まり、垂直セグメントで終わります。
- セルフリンクは、垂直セグメントで始まり、水平セグメントで終わります。