public class TreeLayout extends MultiStageLayout
TreeLayout
provides multiple different arrangements of trees and subtrees. It is easy to
customize the order of edges
, the port assignment
and
the arrangement of the nodes
for each subtree.
Tree layout algorithms are commonly applied to visualize relational data and produce diagrams of high quality that are able to reveal possible hierarchic properties of the graph. More precisely, they find applications in dataflow analysis, software engineering, bioinformatics and business administration.
Example graph with a layout calculated by TreeLayout
using default settings
Tree layout using different INodePlacer
s and rotations
The layout algorithm starts from the leaves and continues with their parents, then with the parents of the parents and
so on. When a node is processed, the algorithm will use the corresponding INodePlacer
instance to move its
children (along with their subtrees) to a suitable position and to route the outgoing edges of this node. Then, the next
local root node will be processed.
To avoid moving all nodes several times and to know the area that the subtrees occupy, the layout algorithm uses
TreeLayout.SubtreeShape
s. These
TreeLayout.SubtreeShape
s are moved and merged during layout calculation.
Each subtree can have a different style of node placement. INodePlacer
s are responsible for arranging subtrees
and their common root node. They can be specified separately for each local root with a IDataProvider
registered
with the graph using key NODE_PLACER_DPKEY
.
A custom node can be defined as root of the tree using a IDataProvider
registered with the graph with key
SELECTED_ROOT_DPKEY
.
The layout algorithm can be configured to reserve space for node labels and place the edge labels along edges such that
the labels won't overlap with other graph elements. Edge labels are placed according to the information stored in a PreferredPlacementDescriptor
instance. However, the placement along the edge will only affect the order of multiple labels at the same edge. The
algorithm will always place the labels close to the target node.
Grouping of nodes can also be handled by this layout algorithm. It is important that a group node contains a whole
subtree. Otherwise, the group nodes may overlap with each other or with other nodes. Furthermore, the user may specify
minimum size constraints for each group node using IDataProvider
key
GroupingKeys.MINIMUM_NODE_SIZE_DPKEY
.
TreeLayout
supports custom sorting of the outgoing edges of a node. For example, a INodePlacer
instance
that implements IFromSketchNodePlacer
provides a comparator that keeps the current order of siblings, allowing
to extend the graph incrementally.
This layout algorithm can only handle graphs with a tree structure. To apply it to a general graph, a TreeReductionStage
can be appended. This stage will temporarily remove some edges of the input graph until a tree is obtained. After the
layout calculation, the stage will reinsert the edges that were removed and route them separately.
Modifier and Type | Class and Description |
---|---|
static class |
TreeLayout.SubtreeShape
A
TreeLayout.SubtreeShape represents the position and the borders of a subtree. |
Modifier and Type | Field and Description |
---|---|
static EdgeDpKey<Integer> |
CRITICAL_EDGE_DPKEY
A
DataProvider key for defining the priority of critical edges.
|
protected LayoutGraph |
graph
The input graph for which a layout is calculated.
|
static NodeDpKey<MultiParentDescriptor> |
MULTI_PARENT_DESCRIPTOR_DPKEY
A
DataProvider key for retrieving descriptors for nodes in multi-parent structures.
|
static NodeDpKey<INodePlacer> |
NODE_PLACER_DPKEY
A
DataProvider key for specifying a child node placer for each node.
|
static NodeDpKey<Comparator<Object>> |
OUT_EDGE_COMPARATOR_DPKEY
A
DataProvider key for specifying the comparator for the outgoing edges.
|
static NodeDpKey<IPortAssignment> |
PORT_ASSIGNMENT_DPKEY
A
DataProvider key for assigning ports to nodes.
|
static NodeDpKey<Boolean> |
SELECTED_ROOT_DPKEY
A
DataProvider key for marking the node that will be used as root node of the tree.
|
Constructor and Description |
---|
TreeLayout()
Creates a new
TreeLayout instance with default settings. |
Modifier and Type | Method and Description |
---|---|
void |
applyLayoutCore(LayoutGraph graph)
Arranges the given graph as a tree.
|
protected TreeLayout.SubtreeShape |
createNodeShape(Node node)
Creates a
TreeLayout.SubtreeShape for the given node that consists only of the bounds of this particular node. |
protected EdgeList |
directTree()
Returns a list of edges that need to be reversed in order to obtain a valid rooted and directed tree from the input
graph.
|
INodePlacer |
getDefaultLeafPlacer()
Gets the default
INodePlacer instance that places the leaf nodes of the tree. |
INodePlacer |
getDefaultNodePlacer()
Gets the default
INodePlacer instance that arranges all subtrees that do not have a specific INodePlacer
assigned using a IDataProvider . |
Comparator<Object> |
getDefaultOutEdgeComparator()
Gets the default
Comparator instance that sorts the outgoing edges in all subtrees that do not have a specific Comparator
assigned using a IDataProvider . |
IPortAssignment |
getDefaultPortAssignment()
Gets the default
IPortAssignment instance for all subtrees that do not have a specific IPortAssignment
assigned using a IDataProvider . |
protected INodePlacer |
getNodePlacer(Node localRoot)
Returns the
INodePlacer instance that is used for the placement of the local root node and the
TreeLayout.SubtreeShape s. |
protected Comparator<Object> |
getOutEdgeComparer(Node localRoot)
Returns the
Comparator instance that will sort the outgoing edges connecting to the given node. |
protected IPortAssignment |
getPortAssignment(Node localRoot)
Returns the
IPortAssignment instance that places the ports of the connecting edges of the given node. |
protected Node[] |
getRootsArray(Node root)
Returns an array of the nodes that will be laid out.
|
protected IDataAcceptor |
getSourceGroupDataAcceptor()
Gets a
IDataAcceptor that can be used for temporarily overwriting the source group information used during the
layout. |
protected IDataAcceptor |
getSourcePortConstraintDataAcceptor()
Gets a
IDataAcceptor that can overwrite the source port contraint temporarily used during
the layout. |
protected TreeLayout.SubtreeShape |
getSubtreeShape(Node localRoot)
Provides access to the
TreeLayout.SubtreeShape for the given node. |
protected IDataAcceptor |
getTargetGroupDataAcceptor()
Gets a
IDataAcceptor that can be used for temporarily overwriting the target group information used during the
layout. |
protected IDataAcceptor |
getTargetPortConstraintDataAcceptor()
Gets a
IDataAcceptor that can overwrite the target port contraint temporarily used during
the layout. |
boolean |
isGroupingSupportEnabled()
Gets whether or not group nodes are handled by the layout algorithm.
|
boolean |
isIntegratedEdgeLabelingEnabled()
Gets whether or not edge labels are placed by the layout algorithm.
|
boolean |
isMultiParentAllowed()
Gets whether or not multi-parent structures are allowed for this tree layout.
|
boolean |
isNodeLabelConsiderationEnabled()
Gets whether or not the layout algorithm reserves space for node labels.
|
protected TreeLayout.SubtreeShape |
layoutRoot(Node localRoot)
Calculates the layout for the given root node and its subtrees.
|
protected void |
reverseEdges(EdgeList reversedEdges)
Reverses the direction of given edges.
|
void |
setComponentLayoutEnabled(boolean value)
Sets whether or not the
ILayoutStage used for arranging the components of the graph is
activated. |
void |
setDefaultLeafPlacer(INodePlacer value)
Sets the default
INodePlacer instance that places the leaf nodes of the tree. |
void |
setDefaultNodePlacer(INodePlacer value)
Sets the default
INodePlacer instance that arranges all subtrees that do not have a specific INodePlacer
assigned using a IDataProvider . |
void |
setDefaultOutEdgeComparator(Comparator<Object> value)
Sets the default
Comparator instance that sorts the outgoing edges in all subtrees that do not have a specific Comparator
assigned using a IDataProvider . |
void |
setDefaultPortAssignment(IPortAssignment value)
Sets the default
IPortAssignment instance for all subtrees that do not have a specific IPortAssignment
assigned using a IDataProvider . |
void |
setGroupingSupportEnabled(boolean value)
Sets whether or not group nodes are handled by the layout algorithm.
|
void |
setIntegratedEdgeLabelingEnabled(boolean value)
Sets whether or not edge labels are placed by the layout algorithm.
|
void |
setMultiParentAllowed(boolean value)
Sets whether or not multi-parent structures are allowed for this tree layout.
|
void |
setNodeLabelConsiderationEnabled(boolean value)
Sets whether or not the layout algorithm reserves space for node labels.
|
void |
setParallelEdgeRouterEnabled(boolean value)
Sets whether or not the
ILayoutStage used for routing parallel edges is activated. |
void |
setSelfLoopRouterEnabled(boolean value)
Sets whether or not the
ILayoutStage used for routing self-loops is activated. |
appendStage, applyLayout, checkNodeSize, disableAllStages, getComponentLayout, getHideGroupsStage, getLabeling, getLayoutOrientation, getOrientationLayout, getParallelEdgeRouter, getSelfLoopRouter, getSubgraphLayout, isComponentLayoutEnabled, isHideGroupsStageEnabled, isLabelingEnabled, isOrientationLayoutEnabled, isParallelEdgeRouterEnabled, isSelfLoopRouterEnabled, isSubgraphLayoutEnabled, prependStage, removeStage, setComponentLayout, setHideGroupsStage, setHideGroupsStageEnabled, setLabeling, setLabelingEnabled, setLayoutOrientation, setOrientationLayout, setOrientationLayoutEnabled, setParallelEdgeRouter, setSelfLoopRouter, setSubgraphLayout, setSubgraphLayoutEnabled
public static final EdgeDpKey<Integer> CRITICAL_EDGE_DPKEY
DataProvider
key for defining the priority of critical edges.
The layout algorithm tries to align each node pair that is connected by a critical edge (integer value >
0
). This feature can, for example, be used for highlighting different edge paths that are important for a
user. Conflicts between different critical edges are always resolved in favor of the higher priority.
Critical edges will always align the centers of source and target node, thus replacing the current root alignment of the
INodePlacer
.
The critical edge may not be straight if subtrees are rotated or port constraints are assigned.
This feature is only supported by the following INodePlacer
s:
protected LayoutGraph graph
public static final NodeDpKey<MultiParentDescriptor> MULTI_PARENT_DESCRIPTOR_DPKEY
DataProvider
key for retrieving descriptors for nodes in multi-parent structures.
The returned descriptor affects the layout of the multi-parent structure.
MultiParentAllowed
. Furthermore, all nodes that belong to the same
multi-parent structure should return the same descriptor.setMultiParentAllowed(boolean)
public static final NodeDpKey<INodePlacer> NODE_PLACER_DPKEY
DataProvider
key for specifying a child node placer for each node.
setDefaultNodePlacer(INodePlacer)
public static final NodeDpKey<Comparator<Object>> OUT_EDGE_COMPARATOR_DPKEY
DataProvider
key for specifying the comparator for the outgoing edges.
setDefaultOutEdgeComparator(Comparator)
public static final NodeDpKey<IPortAssignment> PORT_ASSIGNMENT_DPKEY
DataProvider
key for assigning ports to nodes.
public TreeLayout()
TreeLayout
instance with default settings.public void applyLayoutCore(LayoutGraph graph)
applyLayoutCore
in class MultiStageLayout
graph
- the input graphprotected TreeLayout.SubtreeShape createNodeShape(Node node)
TreeLayout.SubtreeShape
for the given node that consists only of the bounds of this particular node.
It may also include node labels or NodeHalo
s.
This method may be overridden to return a custom TreeLayout.SubtreeShape
for the given node.
node
- the given nodeTreeLayout.SubtreeShape
instanceprotected EdgeList directTree()
The root node of the tree is either a node marked by a IDataProvider
registered with the graph with key SELECTED_ROOT_DPKEY
or is defined according to Trees.getRoot(Graph)
.
This method is called initially to calculate a rooted tree from the input graph. It may be overridden to apply a custom algorithm that determines which edges need to be reversed.
reverseEdges(EdgeList)
public INodePlacer getDefaultLeafPlacer()
INodePlacer
instance that places the leaf nodes of the tree.IllegalArgumentException
- if the default INodePlacer
is set to null
LeafNodePlacer
INodePlacer
instancesetDefaultNodePlacer(INodePlacer)
,
setDefaultLeafPlacer(INodePlacer)
public INodePlacer getDefaultNodePlacer()
INodePlacer
instance that arranges all subtrees that do not have a specific INodePlacer
assigned using a IDataProvider
.IllegalArgumentException
- if the default INodePlacer
is set to null
DefaultNodePlacer
INodePlacer
instanceNODE_PLACER_DPKEY
,
setDefaultNodePlacer(INodePlacer)
public Comparator<Object> getDefaultOutEdgeComparator()
Comparator
instance that sorts the outgoing edges in all subtrees that do not have a specific Comparator
assigned using a IDataProvider
.Comparator
for outgoing edges is null
, the order of the edges will be maintained.null
. No sorting is executed.null
if no specific sorting should be doneOUT_EDGE_COMPARATOR_DPKEY
,
setDefaultOutEdgeComparator(Comparator)
public IPortAssignment getDefaultPortAssignment()
IPortAssignment
instance for all subtrees that do not have a specific IPortAssignment
assigned using a IDataProvider
.IllegalArgumentException
- if the default IPortAssignment
is set to null
DefaultPortAssignment
IPortAssignment
instancePORT_ASSIGNMENT_DPKEY
,
setDefaultPortAssignment(IPortAssignment)
protected INodePlacer getNodePlacer(Node localRoot)
INodePlacer
instance that is used for the placement of the local root node and the
TreeLayout.SubtreeShape
s.
The method may be overridden to return custom INodePlacer
instances. It is possible to return a shared instance
for multiple different nodes because the instances are not used after subsequent calls to this method.
The current implementation returns the INodePlacer
defined by the IDataProvider
registered with key
NODE_PLACER_DPKEY
. It falls back to the default INodePlacer
if there is no specific INodePlacer
for the given node.
localRoot
- the root of the local subtreeINodePlacer
instance that places the subtree below the given local root nodeNODE_PLACER_DPKEY
,
getDefaultNodePlacer()
protected Comparator<Object> getOutEdgeComparer(Node localRoot)
Comparator
instance that will sort the outgoing edges connecting to the given node.
The Comparator
can be null
in case the initial edge order shall be used.
The method may be overridden to return custom Comparator
instances. It is possible to return a shared instance
for multiple different nodes because the instances are not used after subsequent calls to this method.
The current implementation returns the Comparator
defined in the IDataProvider
registered with key
OUT_EDGE_COMPARATOR_DPKEY
. It falls back to the default Comparator
if there is no specific Comparator
for the given node.
localRoot
- the root of the local subtreeComparator
or null
that sorts the outgoing edges of the given nodeOUT_EDGE_COMPARATOR_DPKEY
,
getDefaultOutEdgeComparator()
protected IPortAssignment getPortAssignment(Node localRoot)
IPortAssignment
instance that places the ports of the connecting edges of the given node.
The method may be overridden to return customized IPortAssignment
instances. It is possible to return a shared
instance for multiple different nodes because the instances are not used after subsequent calls to this method.
The current implementation returns the IPortAssignment
defined by the IDataProvider
registered with key
OUT_EDGE_COMPARATOR_DPKEY
. It falls back to the default IPortAssignment
if there is no specific IPortAssignment
for the given node.
localRoot
- the root of the local subtreeIPortAssignment
instance that assigns the ports of the edges at the given nodePORT_ASSIGNMENT_DPKEY
,
getDefaultPortAssignment()
protected Node[] getRootsArray(Node root)
The given node will be considered as the root of the tree. The order of the elements ensures that no parent is processed before one of its successors.
This method may be overridden to change the order in which the nodes (and their subtrees) are handled. However, it is important to keep the parents after the successors. Only siblings can change places.
root
- the node to be considered as root of the treeprotected IDataAcceptor getSourceGroupDataAcceptor()
IDataAcceptor
that can be used for temporarily overwriting the source group information used during the
layout.
This method may be overridden to handle those edge groups separately.
IDataAcceptor
to associate source edge groups with Edge
sPortConstraintKeys.SOURCE_GROUP_ID_DPKEY
protected IDataAcceptor getSourcePortConstraintDataAcceptor()
IDataAcceptor
that can overwrite the source port contraint
temporarily used during
the layout.
This method sets temporary source PortConstraint
s, e.g., after edge reversal. It may be overridden to handle
those PortConstraint
s separately.
IDataAcceptor
to associate source PortConstraint
s with Edge
sPortConstraintKeys.SOURCE_PORT_CONSTRAINT_DPKEY
protected TreeLayout.SubtreeShape getSubtreeShape(Node localRoot)
TreeLayout.SubtreeShape
for the given node.
The TreeLayout.SubtreeShape
contains information about the current extent and location of the subtree rooted at the node.
It should only be modified during the layout of the parent node. Also, it won't be initialized before the layout of the
corresponding subtree is calculated.
This method updates the TreeLayout.SubtreeShape
in layoutRoot(Node)
.
localRoot
- the root of the subtreeTreeLayout.SubtreeShape
instance if it has already been calculated, null
otherwiseprotected IDataAcceptor getTargetGroupDataAcceptor()
IDataAcceptor
that can be used for temporarily overwriting the target group information used during the
layout.
This method may be overridden to handle those edge groups separately.
IDataAcceptor
to associate target edge groups with Edge
sPortConstraintKeys.TARGET_GROUP_ID_DPKEY
protected IDataAcceptor getTargetPortConstraintDataAcceptor()
IDataAcceptor
that can overwrite the target port contraint
temporarily used during
the layout.
This method sets temporary target PortConstraint
s, e.g., after edge reversal. It may be overridden to handle
those PortConstraint
s separately.
IDataAcceptor
to associate target PortConstraint
s with Edge
sPortConstraintKeys.TARGET_PORT_CONSTRAINT_DPKEY
public boolean isGroupingSupportEnabled()
true
. Grouping is enabled.true
if grouping is supported, false
otherwisesetGroupingSupportEnabled(boolean)
public boolean isIntegratedEdgeLabelingEnabled()
If this is enabled, the TreeLayout.SubtreeShape
s of the subtrees are extended by the edge labels.
The layout algorithm uses the information of PreferredPlacementDescriptor
for an edge label to determine the
corresponding placement. However, edge labels are always placed at the target side of the edge. The placement along the
edge only affects the order of the edge labels at the same edge.
labeling algorithm
will be
overwritten and when disabling it, any currently specified labeling algorithm will be disabled via property
LabelingEnabled
. Therefore, it is recommended to only use this
convenience property instead of manually changing the mentioned other properties.false
. Edge labels are ignored.true
if the layout algorithm places edge labels, false
otherwisesetIntegratedEdgeLabelingEnabled(boolean)
public boolean isMultiParentAllowed()
If multi-parent structures are allowed, the directed input graph may contain structures of multiple nodes that share the same predecessors as well as the same successors. All nodes belonging to such a structure are placed side by side and the incident edges are routed in a bus-style manner.
INodePlacer
s route their edges, multi-parent structures only work for
some INodePlacer
implementations:
DefaultNodePlacer
delivers the best results for multi-parent structures. However, routing style RoutingStyle.FORK_AT_ROOT
as well as root alignments RootAlignment.LEADING_ON_BUS
and RootAlignment.TRAILING_ON_BUS
are not supported.
DendrogramNodePlacer
supports multi-parent structures.BusNodePlacer
supports multi-parent structures.LeftRightNodePlacer
supports multi-parent structures.false
. Multi-parent structures are not allowed.true
if multi-parent structures are allowed, false
otherwisesetMultiParentAllowed(boolean)
public boolean isNodeLabelConsiderationEnabled()
If this feature is enabled, the TreeLayout.SubtreeShape
of the nodes will also hold the shapes of its labels.
labeling algorithm
will be
overwritten and when disabling it, any currently specified labeling algorithm will be disabled via property
LabelingEnabled
. Therefore, it is recommended to only use this
convenience property instead of manually changing the mentioned other properties.false
. Node labels are not considered.true
if node labels are considered, false
otherwisesetNodeLabelConsiderationEnabled(boolean)
protected TreeLayout.SubtreeShape layoutRoot(Node localRoot)
This method is invoked for each node in the tree exactly once. Thus, children are always handled before their parents. In this manner, the subtrees already have a layout and can be arranged with their parent.
To retrieve the shapes of the subtrees of all children of the local root, this method uses
getSubtreeShape(Node)
.
The method may be overridden to add configuration code.
localRoot
- the root of the subtree that whose layout is calculatedTreeLayout.SubtreeShape
of the local root node and all of its children and connecting edgesprotected void reverseEdges(EdgeList reversedEdges)
This method will be called initially after the directTree()
method and finally after the layout has been
calculated. It may be overridden to additionally reverse data that depends on the direction of the edges.
reversedEdges
- the edges that will be reversedpublic void setComponentLayoutEnabled(boolean value)
ILayoutStage
used for arranging the components of the graph is
activated.setComponentLayoutEnabled
in class MultiStageLayout
TreeLayout
can only handle single components. Disabling ComponentLayout
will
lead to errors during execution.true
. The stage that arranges connected graph components is activated.value
- true
if the stage that arranges the graph components is activated, false
otherwiseMultiStageLayout.isComponentLayoutEnabled()
,
MultiStageLayout.setComponentLayout(com.yworks.yfiles.layout.ILayoutStage)
,
ComponentLayout
public void setDefaultLeafPlacer(INodePlacer value)
INodePlacer
instance that places the leaf nodes of the tree.IllegalArgumentException
- if the default INodePlacer
is set to null
LeafNodePlacer
value
- the default INodePlacer
instancesetDefaultNodePlacer(INodePlacer)
,
getDefaultLeafPlacer()
public void setDefaultNodePlacer(INodePlacer value)
INodePlacer
instance that arranges all subtrees that do not have a specific INodePlacer
assigned using a IDataProvider
.IllegalArgumentException
- if the default INodePlacer
is set to null
DefaultNodePlacer
value
- the default INodePlacer
instanceNODE_PLACER_DPKEY
,
getDefaultNodePlacer()
public void setDefaultOutEdgeComparator(Comparator<Object> value)
Comparator
instance that sorts the outgoing edges in all subtrees that do not have a specific Comparator
assigned using a IDataProvider
.Comparator
for outgoing edges is null
, the order of the edges will be maintained.null
. No sorting is executed.value
- the new default instance or null
if no specific sorting should be doneOUT_EDGE_COMPARATOR_DPKEY
,
getDefaultOutEdgeComparator()
public void setDefaultPortAssignment(IPortAssignment value)
IPortAssignment
instance for all subtrees that do not have a specific IPortAssignment
assigned using a IDataProvider
.IllegalArgumentException
- if the default IPortAssignment
is set to null
DefaultPortAssignment
value
- the default IPortAssignment
instancePORT_ASSIGNMENT_DPKEY
,
getDefaultPortAssignment()
public void setGroupingSupportEnabled(boolean value)
true
. Grouping is enabled.value
- true
if grouping is supported, false
otherwiseisGroupingSupportEnabled()
public void setIntegratedEdgeLabelingEnabled(boolean value)
If this is enabled, the TreeLayout.SubtreeShape
s of the subtrees are extended by the edge labels.
The layout algorithm uses the information of PreferredPlacementDescriptor
for an edge label to determine the
corresponding placement. However, edge labels are always placed at the target side of the edge. The placement along the
edge only affects the order of the edge labels at the same edge.
labeling algorithm
will be
overwritten and when disabling it, any currently specified labeling algorithm will be disabled via property
LabelingEnabled
. Therefore, it is recommended to only use this
convenience property instead of manually changing the mentioned other properties.false
. Edge labels are ignored.value
- true
if the layout algorithm places edge labels, false
otherwiseisIntegratedEdgeLabelingEnabled()
public void setMultiParentAllowed(boolean value)
If multi-parent structures are allowed, the directed input graph may contain structures of multiple nodes that share the same predecessors as well as the same successors. All nodes belonging to such a structure are placed side by side and the incident edges are routed in a bus-style manner.
INodePlacer
s route their edges, multi-parent structures only work for
some INodePlacer
implementations:
DefaultNodePlacer
delivers the best results for multi-parent structures. However, routing style RoutingStyle.FORK_AT_ROOT
as well as root alignments RootAlignment.LEADING_ON_BUS
and RootAlignment.TRAILING_ON_BUS
are not supported.
DendrogramNodePlacer
supports multi-parent structures.BusNodePlacer
supports multi-parent structures.LeftRightNodePlacer
supports multi-parent structures.false
. Multi-parent structures are not allowed.value
- true
if multi-parent structures are allowed, false
otherwiseisMultiParentAllowed()
public void setNodeLabelConsiderationEnabled(boolean value)
If this feature is enabled, the TreeLayout.SubtreeShape
of the nodes will also hold the shapes of its labels.
labeling algorithm
will be
overwritten and when disabling it, any currently specified labeling algorithm will be disabled via property
LabelingEnabled
. Therefore, it is recommended to only use this
convenience property instead of manually changing the mentioned other properties.false
. Node labels are not considered.value
- true
if node labels are considered, false
otherwiseisNodeLabelConsiderationEnabled()
public void setParallelEdgeRouterEnabled(boolean value)
ILayoutStage
used for routing parallel edges is activated.setParallelEdgeRouterEnabled
in class MultiStageLayout
TreeLayout
cannot handle parallel edges. Disabling ParallelEdgeRouter
will lead
to errors during execution.true
. The stage that routes parallel edges is activated.value
- true
if the stage responsible for routing parallel edges is activated, false
otherwiseMultiStageLayout.isParallelEdgeRouterEnabled()
,
MultiStageLayout.setParallelEdgeRouter(com.yworks.yfiles.layout.ILayoutStage)
,
ParallelEdgeRouter
public void setSelfLoopRouterEnabled(boolean value)
ILayoutStage
used for routing self-loops is activated.setSelfLoopRouterEnabled
in class MultiStageLayout
TreeLayout
cannot handle self-loops. Disabling SelfLoopRouter
will lead to
errors during execution.true
. The stage that routes self-loops is activated.value
- true
if the stage responsible for routing self-loops is activated, false
otherwiseMultiStageLayout.isSelfLoopRouterEnabled()
,
MultiStageLayout.setSelfLoopRouter(com.yworks.yfiles.layout.ILayoutStage)
,
SelfLoopRouter