Working with absolute node position indexes
is inconvenient in certain situations. For example, if two nodes
belong to the same level, you might want to force one node to a
position with a lower index than the other node without fixing the
absolute positions of the nodes. You can achieve it by using a
relative position constraint.
The relative position constraint forces a specific order upon the
nodes of a level, but it does not specify which nodes are directly
neighbored. For instance, a relative position constraint can force
nodeA
to be placed somewhere at a lower position than
nodeB
, but there can be many nodes between
nodeA
and
nodeB
.
In CSS
In the constraint file, specify:
RelativePositionConstraint { lowerSubject: { nodeA } higherSubject: { nodeB } priority: 1000.0 }
In Java™
Call:
layout.addConstraint( new IlvRelativePositionConstraint(nodeA, nodeB, priority));
This forces
nodeA
to a lower position than
nodeB
. If the flow direction is towards the bottom, the nodes are in
horizontal levels; hence the constraint means that
nodeA
is placed at the left side of
nodeB
. If the flow direction is towards the right, the nodes are in
vertical levels; hence the constraint means that
nodeA
is placed below
nodeB
.
The relative position constraint has an
effect only if both nodes actually belong to the same level. To
achieve it, you can, for instance, use a same level constraint in
addition. There is no way to influence the relative position of
nodes that belong to different levels.
Similar to the relative level constraint,
the relative position constraint can be applied to node groups.
These constraints also have priorities that indicate which
constraints dominate if a constraint conflict occurs. The higher
the priority, the more likely the constraint is satisfied when
resolving constraint conflicts.