C

LeftRightSubtreePlacer

The LeftRightSubtreePlacer arranges the children in a subtree on the left and the right of a vertical bus.

Remarks

Layout Style

The default settings generate a layout with a single vertical bus, where children are placed left and right of it. By adjusting the branchCount, it is possible to generate multiple vertical buses (i.e. branches) that are placed next to each other, below the root node.

Default, single-branch layout

Layout with three branches

Default Values of Properties

NameDefaultDescription
branchCount1
The layout consists of a single branch.
horizontalDistance20
placeLastOnBottomtrue
The last child is centered below its siblings
spacing20
verticalDistance20

See Also

Developer's Guide

Members

Show:

Constructors

Creates a new LeftRightSubtreePlacer instance.

Parameters

Properties

Gets or sets whether nodes are placed so that the source and target port of an edge are aligned.

Dependent on the SubtreeRootAlignment type the subtree root is moved in a way that the edge connecting the root to one of its children is straightened.

This setting only applies to the following SubtreeRootAlignments:

final

Property Value

true if the ports are to be aligned, false otherwise

Default Value

The default value is: false
Ports are not aligned.

Sample Graphs

ShownSetting: false
Gets or sets the number of branches (buses) of the subtree layout.
A branch consists of a vertical bus where the child nodes are placed left and right of it. If the subtree handled by this ISubtreePlacer consists of multiple branches, they are placed next to each other with the root node centered above them. Child nodes are equally distributed over the different available branches. The child/out-edge order is considered such that child subtrees are first assigned to the leftmost branch (e.g. if each branch contains four children, the first four children are in the first, leftmost branch, the second four children are in the second branch and so on).
The assignment of child nodes to the branch is solely based on the out-edge order of the edges from the root of the child nodes. Therefore, if nodes have a user-specified left/right side, the different branches may contain a different number of left and right nodes. By providing a customized child/out-edge order, this can be adjusted to fit more specific requirements.
final

Property Value

the number of branches of the subtree layout

Throws

Exception ({ name: 'ArgumentError' })
if the given branch count is smaller than 1

Default Value

The default value is: 1
The layout consists of a single branch.

Sample Graphs

ShownSetting: Layout with a single branch consisting of 12 child nodes
Gets or sets the horizontal distance between nodes or subtrees.
The distance needs to be non-negative.
final

Property Value

the non-negative horizontal distance

Throws

Exception ({ name: 'ArgumentError' })
if the specified distance is negative

Default Value

The default value is: 20

Sample Graphs

ShownSetting: 20
Gets or sets the minimum length for the first segment of an edge.

During layout calculation, the edges of the tree are directed. Hence, the first segment is always the segment that is attached to the source, which is the local root node.

The length needs to be non-negative.

The specified length only affects the distance from the root node to the first layer of nodes. The distance between the different layers of children are determined by the verticalDistance.
final

Property Value

the non-negative minimum segment length

Throws

Exception ({ name: 'ArgumentError' })
if the minimum segment length is negative

Default Value

The default value is: 20
Gets or sets the minimum length for the last segment of an edge.

During layout calculation, the edges of the tree are directed. Hence, the last segment is always the segment that is attached to the target, which is a child node.

The length needs to be non-negative.

The specified length is only considered for the segments to the left and right of the bus. Nodes that are placed centered below the bus ignore this value and consider verticalDistance instead.
final

Property Value

the non-negative minimum segment length

Throws

Exception ({ name: 'ArgumentError' })
if the minimum segment length is negative

Default Value

The default value is: 20
Gets or sets whether or not the last child is placed centered, aligned with the bus and below the other child nodes.
When enabled, the last child will always be centered independent of the number of siblings.
final

Property Value

true if the last child is separated, false otherwise

Default Value

The default value is: true
The last child is centered below its siblings

Sample Graphs

ShownSetting: false
Gets or sets the spacing between subtrees.
The spacing needs to be non-negative.
final

Property Value

the distance between subtrees

Throws

Exception ({ name: 'ArgumentError' })
if the given spacing is negative

Default Value

The default value is: 20

Sample Graphs

ShownSetting: Spacing 20 using SingleLayerSubtreePlacer
Gets the modification matrix that defines the direction of the subtree.
conversionfinal

Property Value

the modification matrix

Default Value

The default value is: SubtreeTransform.NONE
Gets or sets the vertical distance between nodes or subtrees.
The distance needs to be non-negative.
final

Property Value

the non-negative vertical distance

Throws

Exception ({ name: 'ArgumentError' })
if the specified distance is negative

Default Value

The default value is: 20

Sample Graphs

ShownSetting: 20

Methods

Creates an edge comparison which takes the initial coordinates of the nodes into account.
This comparison defines the order of the outgoing edges of a node before the actual placement of the node's subtree is calculated.
final

Return Value

function(LayoutEdge, LayoutEdge): number
the comparison for the edges
Creates an optional ISubtreePlacerProcessor for pre- and post-processing.
This method is called by TreeLayout before arranging the SubtreeShapes. If no pre- or post-processing is needed, this method may return null.
final

Parameters

treeLayout: TreeLayout
the current TreeLayout instance
graph: LayoutGraph
the input graph
currentRoot: LayoutNode
the root node handled by this ISubtreePlacer

Return Value

ISubtreePlacerProcessor
a ISubtreePlacerProcessor instance or null
Provides the direction of the connector to the SubtreeShape for each child node.
This method is called by TreeLayout before the SubtreeShapes for the children of the local root node are calculated. The direction specifiers are stored in the given map for all child nodes of the local root.
final

Parameters

localRoot: LayoutNode
the local root node
connectorMap: IMapper<LayoutNode, ParentConnectorDirection>
the IMapper<K, V> that is used for storing the direction specifiers of the child nodes
Arranges the SubtreeShapes of the local root and its children and routes the edges that connect them.

This method is the main method of the tree layout algorithm. It is called by TreeLayout in each recursion step to place the local root in relation to its children. Their shapes will be merged into one SubtreeShape, which is returned by this method.

The SubtreeShape for the local root can be obtained from the nodeShapeProvider. subtreeShapeProvider contains the SubtreeShapes assigned to the child nodes.

Due to the order in which the tree nodes are processed, it is guaranteed that at the time of the invocation of this method the SubtreeShape of every descendant node has already been calculated.

final

Parameters

nodeShapeProvider: IMapper<LayoutNode, SubtreeShape>
the IMapper<K, V> for obtaining an initial shape of the root node
subtreeShapeProvider: IMapper<LayoutNode, SubtreeShape>
the IMapper<K, V> for accessing the pre-calculated shapes of the subtrees
graph: LayoutGraph
the input graph
localRoot: LayoutNode
the root of the subtree that should be arranged by this method
parentConnectorDirection: ParentConnectorDirection
the direction specifier for the connector of the local root node to its parent node

Return Value

SubtreeShape
the combined shape of the whole subtree

Constants

All constants are filtered. Go to Filters.