| 
 | Search this API | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objecty.layout.AbstractLayoutStage
y.layout.router.OrthogonalEdgeRouter
public class OrthogonalEdgeRouter
This edge routing algorithm generates orthogonal routes for the edges of the graph.
   Note that class EdgeRouter offers a newer, improved implementation that better
   supports drawing constraints like port constraints, group nodes and edge groups.
 
Edges are routed in an orthogonal fashion, i.e. edge paths consist only of vertical and horizontal segments.
During the routing process, the positions of the nodes are considered to be fixed and the router will not modify their locations or their sizes in any way.
The edge routing algorithm can be applied wherever it is required to route the edges as orthogonal segments without crossing any nodes, while keeping the positions of the nodes in the diagram fixed. Some potential applications include electric circuit design, floor planning, UML class diagrams/inheritance diagrams and navigation maps.
 
 Sample output of the orthogonal edge routing algorithm with default settings
 
 
 Sample output of the orthogonal edge routing algorithm with edge grouping
 
Orthogonal edge router divides the area of the graph into several sub-areas (determined by the bounds of graph objects existing in the diagram) and tries to find the best routes for the edge segments between the source and the target nodes of each edge.
   Two different strategies for path finding are available, namely center driven 
   and space driven weighting. They can be set using setCenterToSpaceRatio(double). Space driven strategy 
   implies that edge paths that are evenly distributed over the available space should be preferred. Center driven 
   strategy implies that edge paths that are closer to the center of the edge (i.e. the point of the edge that is 
   equidistant from both its endpoints) should be preferred.
 
   OrthogonalEdgeRouter supports edge routing such that the generated paths obey so-called monotonic path 
   restrictions. This means that (ideally) each vertical and/or each horizontal segment of an edge path is directed 
   from the source node towards the target node. Specifying a monotonic path restriction can be done using
   setMonotonicPathRestriction(byte).
 
   The routing algorithm supports two approaches to connect edges on a specific side or even on an exact location to 
   a node. PortConstraints define a single constraint for the ports of an edge. To realize more 
   complex port restrictions, several PortCandidates or PortCandidateSets can be 
   assigned to edges or nodes.
   If an edge with registered PortCandidates connects to nodes with PortCandidateSets,
   the edge router will try to match both collections in order to find an appropriate port. In case there is no 
   matching port candidate, a PortCandidate specified for the edge is preferred.
   Since their simultaneous existence at the same node may be ambiguous, it is not recommended to use a combination of
   PortConstraints and PortCandidates in the same diagram. 
 
   Edges can be grouped so that they share common segments at the beginning or end of their routes. Although a graph
   may contain source and target grouped edges, one edge can only be part of a source or a target group. Edge groups
   are specified using DataProviders that provide the same ID object for all edges in the same group. Those
   DataProviders are registered with the graph with key PortConstraintKeys.SOURCE_GROUPID_KEY for source
   groups or key PortConstraintKeys.TARGET_GROUPID_KEY for target groups.
   Edge groups are only considered if the edge router uses stage EdgeGroupRouterStage.
 
   The edge routing algorithm can be configured such that the number of crossings generated in a diagram is reduced. 
   This can be achieved using methods setLocalCrossingMinimizationEnabled(boolean), 
   setCrossingCost(double) and setReroutingEnabled(boolean).
 
   Several LayoutStages can be used to enhance performance and/or functionality of this
   class, e.g. EdgeGroupRouterStage, GroupNodeRouterStage, ReducedSphereOfActionStage or
   PatchRouterStage.
 
GroupNodeRouterStage.| Field Summary | |
|---|---|
| static byte | MONOTONIC_BOTHA constant specifying monotonic edge path restrictions for the horizontal and vertical direction. | 
| static byte | MONOTONIC_HORIZONTALA constant specifying monotonic edge path restrictions for the horizontal direction. | 
| static byte | MONOTONIC_NONEA constant specifying that there are no monotonic edge path restrictions. | 
| static byte | MONOTONIC_VERTICALA constant specifying monotonic edge path restrictions for the vertical direction. | 
| static byte | ROUTE_ALL_EDGESA scope specifier which defines that all edges of the input graph will be routed. | 
| static byte | ROUTE_EDGES_AT_SELECTED_NODESA scope specifier which defines that only edges incident to selected nodes will be routed. | 
| static byte | ROUTE_SELECTED_EDGESA scope specifier which defines that only the selected edges of the input graph will be routed. | 
| static byte | STYLE_ADHOCA routing style that draws the edge segments ad hoc, i.e., rather crude. | 
| static byte | STYLE_BALANCEDA routing style that draws the edge segments using well-balanced routes. | 
| static byte | STYLE_PREFERMIDDLEA routing style that draws the edge segments such that their distance from already known obstacles such as nodes or other edge segments is as great as possible. | 
| static byte | STYLE_SHORTPATHA routing style that prefers the shortest routes for drawing the edge segments. | 
| Fields inherited from interface y.layout.Layouter | 
|---|
| EDGE_ID_DPKEY, NODE_ID_DPKEY, NODE_TYPE_DPKEY, SELECTED_EDGES, SELECTED_NODES | 
| Constructor Summary | |
|---|---|
| OrthogonalEdgeRouter()Creates a new OrthogonalEdgeRouterinstance with default settings. | |
| OrthogonalEdgeRouter(Layouter core)Creates a new OrthogonalEdgeRouterinstance with a given core layouter and default settings. | |
| Method Summary | |
|---|---|
|  boolean | canLayout(LayoutGraph graph)Checks whether or not the given graph can be handled by this edge routing algorithm. | 
| protected  void | checkGroupNodeSize(GraphLayout layout,
                   java.lang.Object node)Checks whether or not the width/height of a given group node is zero or negative. | 
| protected  void | checkNodeSize(GraphLayout layout,
              java.lang.Object node)Checks whether or not the width/height of a given node is zero or negative. | 
|  void | doLayout(LayoutGraph graph)Performs the orthogonal routing of the edges of the input graph. | 
|  boolean | getBadOrthogonal()Returns whether or not edges that cannot be routed should be drawn in an orthogonal fashion. | 
|  double | getCenterToSpaceRatio()Returns the ratio between two complementary weighting strategies during path searching. | 
|  boolean | getCoupledDistances()Returns whether or not the minimum distances are coupled. | 
|  double | getCrossingCost()Returns the cost of each edge crossing. | 
|  int | getCustomBorderCapacity()Returns the number of parallel edge paths that may be accommodated on the routing border around the graph's bounding box. | 
|  boolean | getCustomBorderCapacityEnabled()Returns whether or not to use a custom value for the capacity of parallel edge paths accommodated on the routing border. | 
|  YPoint | getGridOrigin()Returns the point on which the grid starts. | 
|  int | getGridSpacing()Returns the equidistant spacing between the horizontal and vertical grid lines. | 
|  int | getMinimumDistance()Specifies the minimum distance between any two edge segments. | 
|  int | getMinimumDistanceToNode()Returns the minimum distance between edge segments and nodes. | 
|  byte | getMonotonicPathRestriction()Returns the monotonic path restrictions that should be applied. | 
|  byte | getRoutingStyle()Returns the preferred edge routing style. | 
|  java.lang.Object | getSelectedEdgesDpKey()Returns the DataProviderkey to look up the selection state of the edges. | 
|  java.lang.Object | getSelectedNodesDpKey()Returns the DataProviderkey to look up the selection state of the nodes. | 
|  byte | getSphereOfAction()Returns a (sub-)set of edges that shall be routed by the edge router. | 
|  boolean | isConsiderNodeLabelsEnabled()Specifies whether or not the orthogonal edge router considers the labels of the nodes as obstacles when calculating the edge routes to avoid overlaps. | 
|  boolean | isEnforceMonotonicPathRestrictions()Returns whether or not monotonic path restrictions should be enforced. | 
|  boolean | isGridRoutingEnabled()Returns whether or not the edge segments are routed on grid lines. | 
|  boolean | isInnerPortsEnabled()Returns whether or not edge ports that do not have a strong port constraintshould lie in the interior of the 
 bounding box or on the border of a node. | 
|  boolean | isLocalCrossingMinimizationEnabled()Returns whether or not a local crossing minimization strategy should be applied. | 
|  boolean | isReroutingEnabled()Returns whether or not the orthogonal edge router performs an additional step to reroute the edges such that the number of edge crossings is reduced. | 
|  void | setBadOrthogonal(boolean value)Specifies whether or not edges that cannot be routed should be drawn in an orthogonal fashion. | 
|  void | setCenterToSpaceRatio(double csr)Specifies the ratio between two complementary weighting strategies during path searching. | 
|  void | setConsiderNodeLabelsEnabled(boolean enabled)Specifies whether or not the orthogonal edge router considers the labels of the nodes as obstacles when calculating the edge routes to avoid overlaps. | 
|  void | setCoupledDistances(boolean coupled)Specifies whether or not the minimum distances should be coupled. | 
|  void | setCrossingCost(double cost)Specifies the cost of each edge crossing. | 
|  void | setCustomBorderCapacity(int value)Specifies the number of parallel edge paths that may be accommodated on the routing border around the graph's bounding box. | 
|  void | setCustomBorderCapacityEnabled(boolean value)Specifies whether or not to use a custom value for the capacity of parallel edge paths accommodated on the routing border. | 
|  void | setEnforceMonotonicPathRestrictions(boolean enforceMonotonicPathRestrictions)Specifies whether or not monotonic path restrictions should be enforced. | 
|  void | setGridOrigin(int x,
              int y)Specifies the coordinates of the point on which the grid starts. | 
|  void | setGridRoutingEnabled(boolean enabled)Specifies whether or not the edge segments are routed on grid lines. | 
|  void | setGridSpacing(int spacing)Specifies the equidistant spacing between the horizontal and vertical grid lines. | 
|  void | setInnerPortsEnabled(boolean value)Specifies whether or not edge ports that do not have a strong port constraintshould lie in the interior of the 
 bounding box or on the border of a node. | 
|  void | setLocalCrossingMinimizationEnabled(boolean enabled)Specifies whether or not a local crossing minimization strategy should be applied. | 
|  void | setMinimumDistance(int dist)Specifies the minimum distance between any two edge segments. | 
|  void | setMinimumDistanceToNode(int dist)Specifies the minimum distance between edge segments and nodes. | 
|  void | setMonotonicPathRestriction(byte monotonicPathRestriction)Specifies the monotonic path restrictions that should be applied. | 
|  void | setReroutingEnabled(boolean enabled)Specifies whether or not the orthogonal edge router performs an additional step to reroute the edges such that the number of edge crossings is reduced. | 
|  void | setRoutingStyle(byte style)Specifies the preferred edge routing style. | 
|  void | setSelectedEdgesDpKey(java.lang.Object key)Specifies the DataProviderkey to look up the selection state of the edges. | 
|  void | setSelectedNodesDpKey(java.lang.Object key)Specifies the DataProviderkey to look up the selection state of the nodes. | 
|  void | setSphereOfAction(byte scope)Specifies a (sub-)set of edges that shall be routed by the orthogonal edge router. | 
| Methods inherited from class y.layout.AbstractLayoutStage | 
|---|
| canLayoutCore, doLayoutCore, getCoreLayouter, setCoreLayouter | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
|---|
public static final byte MONOTONIC_NONE
public static final byte MONOTONIC_VERTICAL
This implies that each vertical edge segment is directed from the source towards the target node. Furthermore, each edge path starts and ends with a vertical segment.
public static final byte MONOTONIC_HORIZONTAL
This implies that each horizontal edge segment is directed from the source towards the target node. Furthermore, each edge path starts and ends with a horizontal segment.
public static final byte MONOTONIC_BOTH
This implies that each horizontal and vertical edge segment is directed from the source towards the target node.
public static final byte STYLE_ADHOC
public static final byte STYLE_SHORTPATH
public static final byte STYLE_PREFERMIDDLE
In the case where the edge segments have to be routed in between two obstacles, then the route that lies on the the line that is equidistant from the two obstacles will be preferred.
public static final byte STYLE_BALANCED
   The two end segments of an edge as well as the segments between bends of different directions are drawn similar 
   to STYLE_PREFERMIDDLE. Segments between bends of the same direction (i.e. u-shape turns) are drawn using 
   the shortest routes. 
 
public static final byte ROUTE_ALL_EDGES
public static final byte ROUTE_SELECTED_EDGES
   The selection state of an edge is determined by a boolean value returned
   by a DataProvider registered with key getSelectedEdgesDpKey(). 
 
All other non-selected edges will be considered to have fixed routes.
public static final byte ROUTE_EDGES_AT_SELECTED_NODES
   The selection state of a node is determined by a boolean value returned
   by a DataProvider registered with key getSelectedNodesDpKey().
 
All other edges that are incident to non-selected nodes will be considered to have fixed routes.
| Constructor Detail | 
|---|
public OrthogonalEdgeRouter()
OrthogonalEdgeRouter instance with default settings.
public OrthogonalEdgeRouter(Layouter core)
OrthogonalEdgeRouter instance with a given core layouter and default settings.
core - the given core layouter| Method Detail | 
|---|
public java.lang.Object getSelectedNodesDpKey()
DataProvider key to look up the selection state of the nodes.
 
   If a DataProvider is registered with this key, only the edges that are incident to selected nodes will 
   be routed, while all other edges will be considered to have fixed routes.
 
DataProvider key for node selectionsetSelectedNodesDpKey(Object)public void setSelectedNodesDpKey(java.lang.Object key)
DataProvider key to look up the selection state of the nodes.
 
   If a DataProvider is registered with this key, only the edges that are incident to selected nodes will 
   be routed, while all other edges will be considered to have fixed routes.
 
Layouter.SELECTED_NODESkey - the DataProvider key for node selection
java.lang.IllegalArgumentException - if the specified DataProvider key is nullgetSelectedNodesDpKey()public java.lang.Object getSelectedEdgesDpKey()
DataProvider key to look up the selection state of the edges.
 
   If a DataProvider is registered with this key, only the selected edges will be routed,
   while all other edges will be considered to have fixed routes.
 
DataProvider key for edge selectionsetSelectedEdgesDpKey(Object)public void setSelectedEdgesDpKey(java.lang.Object key)
DataProvider key to look up the selection state of the edges.
 
   If a DataProvider is registered with this key, only the selected edges will be routed,
   while all other edges will be considered to have fixed routes.
 
Layouter.SELECTED_EDGESkey - the DataProvider key for edge selection
java.lang.IllegalArgumentException - if the specified DataProvider key is nullgetSelectedEdgesDpKey()public void setConsiderNodeLabelsEnabled(boolean enabled)
public boolean isConsiderNodeLabelsEnabled()
true if the orthogonal edge router takes the node labels into consideration, 
 false otherwisesetConsiderNodeLabelsEnabled(boolean)public byte getMonotonicPathRestriction()
Monotonic path restrictions imply that (ideally) the vertical and/or horizontal segments of an edge path are directed from the source node towards the target node without ever changing their direction back towards the source node.
setMonotonicPathRestriction(byte)public void setMonotonicPathRestriction(byte monotonicPathRestriction)
Monotonic path restrictions imply that (ideally) the vertical and/or horizontal segments of an edge path are directed from the source node towards the target node without ever changing their direction back towards the source node.
MONOTONIC_NONE.  No path restrictions are used.monotonicPathRestriction - the given monotonic path restriction
java.lang.IllegalArgumentException - if the given argument is an unknown monotonic path restrictionpublic boolean isEnforceMonotonicPathRestrictions()
setMonotonicPathRestriction(byte) will be enforced
         such that only monotonic edge paths occur in the
         diagram. However, it is possible that additional overlaps between edges and nodes will be introduced.true if monotonic path restrictions are enforced, false otherwisesetEnforceMonotonicPathRestrictions(boolean)public void setEnforceMonotonicPathRestrictions(boolean enforceMonotonicPathRestrictions)
setMonotonicPathRestriction(byte) will be enforced
         such that only monotonic edge paths occur in the
         diagram. However, it is possible that additional overlaps between edges and nodes will be introduced.enforceMonotonicPathRestrictions - true if monotonic path restrictions should be enforced, 
 false otherwise|  Monotonic vertical path restriction is not enforced and cannot be obeyed due to the obstacle node |  Monotonic vertical path restriction is enforced leading the edge to cross the obstacle node | 
public boolean canLayout(LayoutGraph graph)
true unless the user specifies a
 core layout algorithm that cannot handle this graph
 or if the width/height of a node is zero.
graph - the input graph
true if the input graph can be handled by this edge routing algorithm,
 false otherwiseLayouter.doLayout(LayoutGraph)public void doLayout(LayoutGraph graph)
This method also prepares the graph for the edge routing process.
graph - the input graphLayouter.canLayout(LayoutGraph)
protected void checkNodeSize(GraphLayout layout,
                             java.lang.Object node)
                      throws java.lang.IllegalArgumentException
   This method is called by doLayout(LayoutGraph) for each node of the input graph. 
   It may be overridden in order to obtain a custom implementation of node-size check.
 
layout - a given GraphLayout instancenode - a given node object
java.lang.IllegalArgumentException - if the width/height of the node object is zero or negativecheckGroupNodeSize(GraphLayout,Object)
protected void checkGroupNodeSize(GraphLayout layout,
                                  java.lang.Object node)
                           throws java.lang.IllegalArgumentException
   This method is called by doLayout(LayoutGraph) for each group node of the input graph. 
   It may be overridden in order to obtain a custom implementation of group-node-size check.
 
layout - a given GraphLayout instancenode - a given group node object
java.lang.IllegalArgumentException - if the width/height of the group node object is zero or negativecheckNodeSize(GraphLayout,Object)public void setCrossingCost(double cost)
   A cost of value n means that it is more profitable for a path to change its direction n 
   times rather than crossing the path of an edge. 
 
   This option is performed globally, i.e. to an entire edge path, in contrast to 
   setLocalCrossingMinimizationEnabled(boolean enabled). 
 
The cost has to be non-negative.
1.0 and 3.0.cost - a non-negative cost value
java.lang.IllegalArgumentException - if the given cost is negative|  Crossing cost 1.0 |  Crossing cost 3.0 | 
public double getCrossingCost()
   A cost of value n means that it is more profitable for a path to change its direction n 
   times rather than crossing the path of an edge. 
 
   This option is performed globally, i.e. to an entire edge path, in contrast to 
   setLocalCrossingMinimizationEnabled(boolean enabled). 
 
The cost has to be non-negative.
1.0 and 3.0.setCrossingCost(double)public void setReroutingEnabled(boolean enabled)
0.0 is assigned to the 
 global crossing cost.enabled - true if the rerouting step should be performed, false otherwise|  Crossing cost 3.0 and rerouting crossing edges disabled |  Crossing cost 3.0 and rerouting crossing edges enabled | 
public boolean isReroutingEnabled()
0.0 is assigned to the 
 global crossing cost.true if the rerouting step is performed, false otherwisesetReroutingEnabled(boolean)public void setSphereOfAction(byte scope)
ROUTE_ALL_EDGESscope - one of the predefined scope values
java.lang.IllegalArgumentException - if the given argument is none of the above constantsgetSelectedEdgesDpKey(), 
getSelectedNodesDpKey()public byte getSphereOfAction()
setSphereOfAction(byte), 
getSelectedEdgesDpKey()public void setGridRoutingEnabled(boolean enabled)
If this option is disabled, the specified grid spacing/origin is ignored.
public boolean isGridRoutingEnabled()
If this option is disabled, the specified grid spacing/origin is ignored.
true if edge segments are routed on a grid, false otherwisesetGridRoutingEnabled(boolean), 
setGridOrigin(int, int), 
setGridSpacing(int)
public void setGridOrigin(int x,
                          int y)
grid routing is enabled.x - the x-coordinate of the pointy - the y-coordinate of the pointsetGridRoutingEnabled(boolean), 
setGridSpacing(int)public YPoint getGridOrigin()
grid routing is enabled.setGridOrigin(int, int), 
setGridRoutingEnabled(boolean), 
setGridSpacing(int)public void setGridSpacing(int spacing)
   Positive values greater than 2 are allowed. Positive values less than 2 are ignored, 
   while negative values are mapped to their absolute value.
 
public int getGridSpacing()
   Positive values greater than 2 are allowed. Positive values less than 2 are ignored, 
   while negative values are mapped to their absolute value.
 
grid routing is enabled.setGridSpacing(int), 
setGridRoutingEnabled(boolean)public void setMinimumDistance(int dist)
   Positive values greater than 4 are allowed. Positive values less than 4 are ignored, 
   while negative values are mapped to their absolute values.
 
public int getMinimumDistance()
   Positive values greater than 4 are allowed. Positive values less than 4 are ignored, 
   while negative values are mapped to their absolute values.
 
are coupled (as holds by default),
 half of this value is automatically considered as the minimum distance between edge segments and nodes.setMinimumDistance(int)public void setCoupledDistances(boolean coupled)
getMinimumDistance(). Otherwise, the algorithm uses the custom
 value returned by getMinimumDistanceToNode().
coupled - true if minimum distances should be coupled, false otherwisesetMinimumDistance(int), 
setMinimumDistanceToNode(int)public boolean getCoupledDistances()
getMinimumDistance(). Otherwise, the algorithm uses the custom
 value returned by getMinimumDistanceToNode().
true if minimum distances are coupled, false otherwisesetCoupledDistances(boolean), 
setMinimumDistance(int), 
setMinimumDistanceToNode(int)public void setMinimumDistanceToNode(int dist)
   Positive values greater than 2 are allowed. Positive values less than 2 are ignored, 
   while negative values are mapped to their absolute values.
 
are coupled (as holds by default), 
 the algorithm ignores this value.dist - the minimum distancesetMinimumDistance(int), 
setCoupledDistances(boolean)|  Minimum distance between edge segments and nodes 10 |  Minimum distance between edge segments and nodes 15 | 
public int getMinimumDistanceToNode()
   Positive values greater than 2 are allowed. Positive values less than 2 are ignored, 
   while negative values are mapped to their absolute values.
 
are coupled (as holds by default),
 the algorithm ignores this value.setMinimumDistanceToNode(int), 
setMinimumDistance(int), 
setCoupledDistances(boolean)public void setLocalCrossingMinimizationEnabled(boolean enabled)
public boolean isLocalCrossingMinimizationEnabled()
true if a local crossing minimization strategy is applied, false
 otherwisesetLocalCrossingMinimizationEnabled(boolean)public void setCenterToSpaceRatio(double csr)
0.0.
   1.0.
   If the ratio is negative or zero, space driven strategy will be selected.
public double getCenterToSpaceRatio()
0.0.
   1.0.
   If the ratio is negative or zero, space driven strategy will be selected.
setCenterToSpaceRatio(double)public void setRoutingStyle(byte style)
STYLE_BALANCEDstyle - one of the predefined routing stylespublic byte getRoutingStyle()
setRoutingStyle(byte)public void setBadOrthogonal(boolean value)
If this option is disabled, edges that cannot be routed due to lack of space will be routed as straight-line segments.
public boolean getBadOrthogonal()
If this option is disabled, edges that cannot be routed due to lack of space will be routed as straight-line segments.
true if edges that cannot be routed are drawn orthogonal,
 false otherwisesetBadOrthogonal(boolean)public void setCustomBorderCapacityEnabled(boolean value)
The routing border contains the space left of the leftmost node, right of the rightmost node, above the topmost node, and below the bottommost node.
value - true if a custom capacity should be used,
 false otherwisesetCustomBorderCapacity(int)public boolean getCustomBorderCapacityEnabled()
The routing border contains the space left of the leftmost node, right of the rightmost node, above the topmost node, and below the bottommost node.
true if a custom capacity is used, false otherwisesetCustomBorderCapacityEnabled(boolean), 
setCustomBorderCapacity(int)public void setCustomBorderCapacity(int value)
The routing border contains the space on the left of the leftmost node, on the right of the rightmost node, above the topmost node, and below the bottommost node.
If a negative value is given as input, its absolute value will be used instead.
getCustomBorderCapacityEnabled() returns true.value - the capacity valuepublic int getCustomBorderCapacity()
The routing border contains the space on the left of the leftmost node, on the right of the rightmost node, above the topmost node, and below the bottommost node.
If a negative value is given as input, its absolute value will be used instead.
getCustomBorderCapacityEnabled() returns true.setCustomBorderCapacity(int)public void setInnerPortsEnabled(boolean value)
port constraint should lie in the interior of the 
 bounding box or on the border of a node.
 The interior of the bounding box refers to the meridian of the node for edges connecting to the left and to the right side or to the equator of the node for edges connecting to the upper and to the lower side.
value - true if edge ports should lie in the interior or on the border of the node, 
 false otherwise|  Inner port are disabled. Black rectangles on the nodes' borders correspond to edge ports. |  Inner port are enabled. Black rectangles in the interior of nodes correspond to edge ports. | 
public boolean isInnerPortsEnabled()
port constraint should lie in the interior of the 
 bounding box or on the border of a node.
 The interior of the bounding box refers to the meridian of the node for edges connecting to the left and to the right side or to the equator of the node for edges connecting to the upper and to the lower side.
true if edge ports lie in the interior or on the border of the node, false 
 otherwisesetInnerPortsEnabled(boolean)| 
 | © Copyright 2000-2025, yWorks GmbH. All rights reserved. | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||