直交リンク形状ポリシーは、リンクが互いに直交する状態を保てるようにします。リンク曲折点が移動すると、隣接リンク曲折点が自動的にその移動に従うので、リンクが常に直交状態を保てるようになります。
リンク形状ポリシーの設定
直交リンク形状ポリシーは、クラス IlvPolicyAwareLinkImage のリンクで設定できます。このポリシーは、いくつかのリンクで共有できます。
次のコードは、2 つのリンクで直交リンク形状ポリシーを設定する方法を示しています。
IlvOrthogonalLinkShapePolicy policy = new IlvOrthogonalLinkShapePolicy(); IlvPolicyAwareLinkImage link1 = new IlvPolicyAwareLinkImage(node1, node2, true, null); link1.setLinkShapePolicy(policy); IlvPolicyAwareLinkImage link2 = new IlvPolicyAwareLinkImage(node1, node2, true, null); link2.setLinkShapePolicy(policy); ... // insert the links into the grapher only AFTER installing the policy grapher.addLink(link1, redraw); grapher.addLink(link2, redraw); ...
リンク形状ポリシーが設定され、グラファーに追加されると、リンクは、リンクの形状変更を試みるすべての操作の実行中に直交状態を保ちます。リンク形状ポリシーを無効にするには、以下を呼び出します。
link.setLinkShapePolicy(null);
これにより、直ちにリンクの形状が変更されるわけではありませんが、リンクに関する後続の操作でリンクの形状をもう一度非直交な方法で変更できるようにします。
リンク形状ポリシーのチェーニング
同じリンクに複数のリンク形状ポリシーを適用することができますが、その場合、これらのポリシーが互いに矛盾しないことが条件です。
特に次のコードに示すように、交差リンク形状ポリシーを直交リンク形状ポリシーに追加することができます。
policy = new IlvOrthogonalLinkShapePolicy(); policy.setChildPolicy(new IlvCrossingLinkShapePolicy()); link.setLinkShapePolicy(policy);
この場合、まず直交ポリシーがリンクを直交形状に強制し、その後で交差ポリシーがリンク交差の表示を計算します。