com.jgraph.layout.tree

Class JGraphAbstractTreeLayout

public abstract class JGraphAbstractTreeLayout extends Object implements JGraphLayout

An implementation of a basic tree layout. The layout is created using the internal TreeNode structure with appropriate interfaces to the actual graph model. The layout can be configured by orientation, the alignment of the nodes per level, the minimum distance between
Nested Class Summary
protected classJGraphAbstractTreeLayout.TreeNode
An ADT representing a node in a tree structure.
Field Summary
protected JGraphFacadegraph
The facade that describes the graph to be acted upon
protected doublelevelDistance
levelDistance is the distance between the lowest point of any vertex on one level to the highest point of any vertex on the next level down.
protected double[]lowerLevelValues
The lowest point for each tree level
protected doublenodeDistance
nodeDistance is the minimum distance between any two vertices on the same level.
protected Mapnodes
Stores the mapping between internal tree nodes and graph cells
protected Point2DoldOrigin
Keeps track of the old origin so that the new layout can be aligned to it
protected intorientation
orientation indicates where, relative to the rest of the tree, the root node is placed.
protected booleanpositionMultipleTrees
Indicates whether or not to space out multiple trees so that no overlapping occurs between each tree
protected booleanrouteTreeEdges
Whether or not to apply a standard routing algorithm to the edges
protected doubletreeBoundary
Keeps track of the coordinate that each tree fills space up to.
protected doubletreeDistance
If positionMultipleTrees is true this value is the minimum distance between each overlapping tree structure after they are separated
protected double[]upperLevelValues
The highest point for each tree level
Method Summary
doublegetLevelDistance()
doublegetNodeDistance()
intgetOrientation()
booleangetRouteTreeEdges()
doublegetTreeDistance()
booleanisPositionMultipleTrees()
voidrun(JGraphFacade graph)
The API method used to exercise the layout upon the facade description and produce a separate description of the vertex position and edge routing changes made.
voidsetLevelDistance(double distance)
voidsetNodeDistance(int distance)
voidsetOrientation(int orientation)
SwingConstants.NORTH SwingConstants.EAST SwingConstants.SOUTH SwingConstants.WEST are valid inputs to this method
voidsetPositionMultipleTrees(boolean positionMultipleTrees)
voidsetRouteTreeEdges(boolean routeTreeEdges)
voidsetTreeDistance(int treeDistance)

Field Detail

graph

protected JGraphFacade graph
The facade that describes the graph to be acted upon

levelDistance

protected double levelDistance
levelDistance is the distance between the lowest point of any vertex on one level to the highest point of any vertex on the next level down.

lowerLevelValues

protected double[] lowerLevelValues
The lowest point for each tree level

nodeDistance

protected double nodeDistance
nodeDistance is the minimum distance between any two vertices on the same level. Levels closer to the root tend to be spaced a lot further apart than this.

nodes

protected transient Map nodes
Stores the mapping between internal tree nodes and graph cells

oldOrigin

protected Point2D oldOrigin
Keeps track of the old origin so that the new layout can be aligned to it

orientation

protected int orientation
orientation indicates where, relative to the rest of the tree, the root node is placed. Default is SwingConstants.NORTH (1), other valid values are SwingConstants.SOUTH (5), SwingConstants.EAST (3) and SwingConstants.WEST (7). NORTH means the root is at the top and the children below, WEST means the root is on the left and the children to the right, and so on.

positionMultipleTrees

protected boolean positionMultipleTrees
Indicates whether or not to space out multiple trees so that no overlapping occurs between each tree

routeTreeEdges

protected boolean routeTreeEdges
Whether or not to apply a standard routing algorithm to the edges

treeBoundary

protected double treeBoundary
Keeps track of the coordinate that each tree fills space up to. This value refers to either axis, depending on the orientation of the tree. This is used when there are multiple trees to ensure the correct minimum separation distance between each one.

treeDistance

protected double treeDistance
If positionMultipleTrees is true this value is the minimum distance between each overlapping tree structure after they are separated

upperLevelValues

protected double[] upperLevelValues
The highest point for each tree level

Method Detail

getLevelDistance

public double getLevelDistance()

Returns: Returns the levelDistance.

getNodeDistance

public double getNodeDistance()

Returns: Returns the nodeDistance.

getOrientation

public int getOrientation()

Returns: Returns the orientation.

getRouteTreeEdges

public boolean getRouteTreeEdges()

Returns: Returns the routeTreeEdges.

getTreeDistance

public double getTreeDistance()

Returns: Returns the treeDistance.

isPositionMultipleTrees

public boolean isPositionMultipleTrees()

Returns: Returns the positionMultipleTrees.

run

public void run(JGraphFacade graph)
The API method used to exercise the layout upon the facade description and produce a separate description of the vertex position and edge routing changes made. It first builds a representation of the tree using the inner tree class by doing a depth first search of the graph from the root. It then lays out the graph using the obtained data

Parameters: graph the facade describing the graph and its configuration

setLevelDistance

public void setLevelDistance(double distance)

Parameters: distance new level distance

setNodeDistance

public void setNodeDistance(int distance)

Parameters: distance new node distance

setOrientation

public void setOrientation(int orientation)
SwingConstants.NORTH SwingConstants.EAST SwingConstants.SOUTH SwingConstants.WEST are valid inputs to this method

Parameters: orientation

setPositionMultipleTrees

public void setPositionMultipleTrees(boolean positionMultipleTrees)

Parameters: positionMultipleTrees The positionMultipleTrees to set.

setRouteTreeEdges

public void setRouteTreeEdges(boolean routeTreeEdges)

Parameters: routeTreeEdges The routeTreeEdges to set.

setTreeDistance

public void setTreeDistance(int treeDistance)

Parameters: treeDistance The treeDistance to set.

Copyright (C) 2001-2009 JGraph Ltd. All rights reserved.