prefuse is a user interface
toolkit for constructing highly-interactive visualizations of graph-structured
(i.e. node-link) data. prefuse
applications are built by stringing together composable modules (called
{@link edu.berkeley.guir.prefuse.action.Action Actions}
) into
{@link edu.berkeley.guir.prefuse.activity.ActionList ActionLists}
that perform various tasks such as graph processing and animation.
Other features of the toolkit include:
- Libraries of composable actions, including layout algorithms (see
the
{@link edu.berkeley.guir.prefuse.action action}
and
{@link edu.berkeley.guir.prefusex.layout layout}
packages).
- Filtering and caching schemes to support large data sets through a
centralized
{@link edu.berkeley.guir.prefuse.ItemRegistry ItemRegistry}
.
- A physics simulation engine supporting physically-based layout and interaction
(see the
{@link edu.berkeley.guir.prefusex.force force}
package).
- Flexible activity scheduling and animation support (see the
{@link edu.berkeley.guir.prefuse.activity activity}
package);
- User interface event handling (see the
{@link edu.berkeley.guir.prefuse.event event}
and
{@link edu.berkeley.guir.prefusex.controls controls}
packages).
- View transformations, as well as panning and zooming (see the
{@link edu.berkeley.guir.prefuse.Display Display}
class and
the {@link edu.berkeley.guir.prefusex.distortion distortion}
package).
The general pattern of building a prefuse visualization component is to first
determine the {@link edu.berkeley.guir.prefuse.graph.Graph Graph}
data structure to visualize, and construct an
{@link edu.berkeley.guir.prefuse.ItemRegistry ItemRegistry}
to create and store visual representations of the graph data along with one or more
{@link edu.berkeley.guir.prefuse.Display Display}
instances to draw
these visual representations to the screen. One then assigns a
{@link edu.berkeley.guir.prefuse.render.RendererFactory RendererFactory}
to the {@link edu.berkeley.guir.prefuse.ItemRegistry ItemRegistry}
,
which determines which
{@link edu.berkeley.guir.prefuse.render.Renderer Renderer}
instances are used to draw individual items. Then any number of
{@link edu.berkeley.guir.prefuse.activity.ActionList ActionLists}
can be created and scheduled to perform graph operations such as layout, color
assignment, and animation. Finally, interactive behaviors can be specified by
adding custom
{@link edu.berkeley.guir.prefuse.event.ControlListener ControlListeners}
or pre-built {@link edu.berkeley.guir.prefusex.controls Controls}
to the {@link edu.berkeley.guir.prefuse.Display Display}
instances.
For working examples of this process, take a look at the provided
{@link edu.berkeley.guir.prefuse.demos demonstration applications}.