The orthogonal link shape policy forces
links to keep at right angles to one another. When a link bend is
moved, the adjacent link bends automatically to follow the move so
that the link always remains orthogonal.
Setting the Link Shape Policy
The orthogonal link shape policy can be set on links of class IlvPolicyAwareLinkImage. The policy can be
shared by several links. The following code shows how to set the
orthogonal link shape policy on two links.
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); ...
After the link shape policy is set and
added to the grapher, the link remains orthogonal during all the
operations that try to reshape the link. To disable the link
shape policy, call:
link.setLinkShapePolicy(null);
This does not change the shape of the link
immediately, but it enables subsequent operations on the link to
reshape it in a nonorthogonal way again.
Chaining of link shape policies
It is possible to apply multiple link
shape policies to the same link, if these policies do not
contradict each other. In particular, it is possible to add a
crossing link shape policy onto an orthogonal link shape policy,
as illustrated in the following code.
policy = new IlvOrthogonalLinkShapePolicy(); policy.setChildPolicy(new IlvCrossingLinkShapePolicy()); link.setLinkShapePolicy(policy);
In this case, the orthogonal policy first
forces the link to an orthogonal shape, and then the crossing
policy calculates the display of the link crossings.