This project integrates JUNG - a library for drawing edge/node graphs, and Visual Library - a component library which is good at layered animated widgets which can host Swing components.
The result gains new features for users of either library. Visual Library users get a collection of good, usable graph layouts backed by research in graph theory. JUNG users get interactivity - such as animation, using real UI components to represent graph contents, and the ability to incorporate non-graph elements into a graph UI to provide a richer user experience.
Watch this video for a demo and overview of the project.
Visual Library is a standalone library which is part of NetBeans but can be used in standalone Java applications. You don't have to be writing a NetBeans plugin to use this library!
Builds can be found Maven Central. [Read the Javadoc](Javadoc here and also here (there are two libraries).
JungScene
— provides an abstract Visual Library scene implementation which wrappers a JUNG layout as a visual librarySceneLayout
JungConnectionWidget
— embeds JUNG's shape-based edge painting logic in a visual library widgetBaseJungScene
— provides commonly used functionality - manages layer widgets and adding and removing of widgets as the graph is modified
The project consists of a Maven parent project with four child projects:
- Visual Library + Jung — does the basic integration of JUNG with Visual Library and provides
JungScene
andJungConnectionWidget
- Supports JUNG's animated layouts either using a timer or by pre-rolling
- Wrappers any JUNG layout in a Visual Library
SceneLayout
so that it can be used to lay out a scene with actual widgets
- Visual Library Jung Base Classes — adds in convenience classes such as
BaseJungScene
and its supporting cast - Visual Library + Jung Demo — is a standalone (non-NetBeans) demo application
- Visual Library + JUNG NetBeans Module Wrapper — is a NetBeans Library Wrapper Module which embeds JUNG and these libraries and exposes their packages as its public API (NetBeans modules use classloader partitioning to restrict package access).
The easy way to use these libraries is via Maven, using the binaries from Maven Central.
To build the projects, simply check the sources out from Git and build with Maven using JDK 8 or greater.
BSD 2-clause license for compatibility with JUNG (and most anything else).