Chapter 4. Layout

Table of Contents

Overview
High-Level Layout Controlling
LayoutController
Predefined Layout Controllers
Custom LayoutController
Performing A Layout On A VisualGraph
Layout Component Interfaces
Interface Layout
Interface NodeLayout
Interface EdgeLayout
Interface Layoutable
Interface LayoutableNode
Interface LayoutableEdge
Custom Layout Class Implementation
Layout Implementation Classes
Hierarchical Layout
Energy Layout
Circular Layout
Tree Layout
Orgchart Layout
Edge Layout

The automatic arrangement of graphs is an essential feature of many applications which emphasize the visualization of graphs and the relationships among its many objects. The Tensegrity Graph Framework provides a set of Layout classes that implement standard algorithms as well as an infrastructure to use and manage these classes.

Overview

The Java® Layout package has been designed to fulfill the following requirements:

  • Dynamic registration of new Layout algorithm implementations.

  • Full integration of custom Layout implementations within the Tensegrity Graph Framework.

  • Implementation of new Layout classes without knowledge of other parts of the Tensegrity Graph Framework.

  • Providing a method to reuse Layout instances but with different configurations.

  • Simple and appropritate use of the Layout algorithm classes.

  • Ability to attach a Layout to visual graphs and visual subgraphs.

The Tensegrity Graph Framework provides the abstract class LayoutController which may be used as the basis for implementing custom layout controllers. This class is the main component responsible for managing different layout algorithm implementations and applying a layout on a VisualGraph. In order to be used by a LayoutController, a layout algorithm has to implement interface Layout.

The Tensegrity Graph Framework provides a rich set of Layout classes which implement the common layout algorithms, such as a Hierarchical Layout, a Circular Layout, a Tree Layout and an Organizational Chart Layout Furthermore, the framework provides an EdgeLayout which perfects the arrangement of visual edges.

A LayoutController encapsulates different Layout instances and provides access to these instances by way of a layout context. This latter object is basically a unique identifier associated with a Layout instance and its specific configuration. Handling a Layout and its configuration together simplifies the modeling of clustered graphs.

The abstract class LayoutController provides some essential methods to:

  • Register new instances of type Layout.

  • Create, remove and clone layout contexts.

  • Configure a Layout instance.

  • Apply a context-sensitive Layout to nested visual graphs.

  • Automatically perform a Layout during user interaction.

  • Save and load functions.

  • Display progress information during a layout task.

  • Report and handle errors

  • Supply methods for preprocessing and postprocessing.

The Tensegrity Graph Framework provides some concrete implementations of class LayoutController which can be used in different applications, such as those involving organizational charts, workflow and graph modeling editors.