Class TreeLayout<TreeNode>

  • Type Parameters:
    TreeNode - Type of elements used as nodes in the tree

    public class TreeLayout<TreeNode>
    extends Object
    Implements the actual tree layout algorithm.

    The nodes with their final layout can be retrieved through getNodeBounds().

    See this summary to get an overview how to use TreeLayout.
    Author:
    Udo Borkowski (ub@abego.org)
    • Method Detail

      • getTree

        public TreeForTreeLayout<TreeNode> getTree()
        Returns the Tree the layout is created for.
        Returns:
        the Tree the layout is created for
      • getBounds

        public Rectangle2D getBounds()
        Returns the bounds of the tree layout.

        The bounds of a TreeLayout is the smallest rectangle containing the bounds of all nodes in the layout. It always starts at (0,0).

        Returns:
        the bounds of the tree layout
      • getLevelCount

        public int getLevelCount()
        Returns the number of levels of the tree.
        Returns:
        [level > 0]
      • getSizeOfLevel

        public double getSizeOfLevel​(int level)
        Returns the size of a level.

        When the root is located at the top or bottom the size of a level is the maximal height of the nodes of that level. When the root is located at the left or right the size of a level is the maximal width of the nodes of that level.

        Parameters:
        level -  
        Returns:
        the size of the level [level >= 0 && level < levelCount]
      • getNodeBounds

        public Map<TreeNode,​Rectangle2D.Double> getNodeBounds()
        Returns the layout of the tree nodes by mapping each node of the tree to its bounds (position and size).

        For each rectangle x and y will be >= 0. At least one rectangle will have an x == 0 and at least one rectangle will have an y == 0.

        Returns:
        maps each node of the tree to its bounds (position and size).
      • checkTree

        public void checkTree()
        Check if the tree is a "valid" tree.

        Typically you will use this method during development when you get an unexpected layout from your trees.

        The following checks are performed:

        • Each node must only occur once in the tree.
      • dumpTree

        public void dumpTree​(PrintStream printStream,
                             TreeLayout.DumpConfiguration dumpConfiguration)
        Prints a dump of the tree to the given printStream, using the node's "toString" method.
        Parameters:
        printStream -  
        dumpConfiguration - [default: new DumpConfiguration()]
      • dumpTree

        public void dumpTree​(PrintStream printStream)