|
JGo
The JGo package, com.nwoods.jgo, is a set of classes built on the Java 2 platform, including Java2D and Swing. JGo makes it easy to deliver user interfaces that allow users to see and manipulate diagrams of two-dimensional graphical objects arranged in a scrollable, zoomable window. You can use JGo to build stand-alone Swing applications, Swing applets, and thin-client web applications using Java Server Pages (JS) or servlets.
JGo provides a variety of basic graphical objects such as rectangles, ellipses, polygons, text, images, and lines. You can group objects together to form more complex objects. You can customize their appearances and behaviors by setting properties and overriding methods.
A JGo view is a component that displays a JGo document. It supports mouse-based object manipulation, including selecting, resizing, moving and copying using drag-and-drop. A JGo view also supports in-place editing, printing, and grids.
A JGo document implements a model that supports manipulation of objects. Adding an object to the document makes it visible in the document's views. You can organize objects in layers. JGo provides support for composing and manipulating graphs (node & arc diagrams), where nodes have ports that are connected by links.
The JGo library is flexible and extensible. Many predefined example node classes make it easy to build many kinds of diagrams. You can easily customize most objects for application-specific purposes by setting properties or by subclassing. You can add completely new graphical objects to the existing framework.
JGo is written entirely in portable Java source code. It only depends on the standard Java2 packages and does not explicitly call any native functions.
Features of JGo
- document view architecture
- rich set of built-in components and links
- ability to customize, extend, or create your own components
- support for multiple layers
- view events and listeners (to be notified of user interaction with diagram)
- automatic support for zooming and scrolling
- automatic clipboard support
- automatic support for unlimited undo and redo
- drag-and-drop support between components
- tooltips for JGo objects
- orthogonal and bezier curve links
- grids and snapping behavior
- collapsible subgraphs
- printing framework
- support for thin-client web applications using Java Server Pages (JSP)
- support for automatic layout, available in the Professional version
- support for instruments (interactive dials and gauges), available in the Professional version
- Java2D features such as thick and dotted line pens
- many performance optimizations, in both time and space
- support for JComponents as JGoControls
- good documentation
- several useful example applications
Platforms
JGo Swing is built on the Java 2 platform and work with any Java SDK 1.2 or later. JGo SWT is also available for SWT/Eclipse and requires SWT version 3.0 or later. There is currently no support for JGoInstruments or thin-client JSP applications in the JGo SWT version.
New in JGo 5.4
- Created new com.nwoods.jgo.web package (JGoWeb.jar) simplifying creation of thin-client web applications using Java Server Pages (JSP)
- Added JGoJPEGView class to JGoWeb. This is the JGoView base class that should be used
for all JGoViews used in JSP pages. This class is able to generate a JPEG image corresponding
from the diagram shown in the view.
- Added JGoImageServlet to JGoWeb. This is the image servlet that should be referenced
in the <img> element in a JGo JSP page.
- Added JGoImageEventProcessor to JGoWeb. The JGoWeb.js javascript functions handle
local mouse events resulting from user interaction with the diagram on a web page. Arguments generated
from these events are automatically passed back to the server and processed by the JGoImageEventProcessor
class.
- Added 4 new JGoWeb sample applications
- webminimalreadonly:
an extremely small sample application demonstrating the creation of
a read-only JGo diagram on a JSP web page.
- webuserguidesample:
a sample application described in a new chapter in the JGo User Guide
illustrating the major features of JGo JSP web applications.
- webdragdropeditor:
a sample application including a pallet of sample objects that can
be dragged, dropped, and interconnecting in a work area on a web page.
Selected object properties are displayed and can be modified via the web page.
- webprimates
a sample application containing a large diagram that can be browsed via scrolling and zooming.
Additional details about diagram nodes are made available as tooltips. Both scrolling and
tooltips are handled locally on the client browser for good performance.
New in JGo 5.3
- Added JGoTreeAutoLayout and associated classes for faster and more flexible layouts of primarily tree-structured graphs.
- Added AnimatedBasicApp sample application demonstrating animated links
- Added Balloon class for creating balloon comments pointing to an associated JGoObject
New in JGo 5.2
- added JGoCollection, a light weight JGoObjectCollection that
you can pass to any method that requires a JGoObjectCollection
or JGoObjectSimpleCollection
- added JGoDocument property: LinksLayer,
the layer to hold links; initially same as JGoDocument.getDefaultLayer()
- added JGoDocument.add method, which adds links to the JGoDocument.getLinksLayer()
and non-links to the getDefaultLayer()
- added JGoDocument.addCopy
method, a convenient way to make a copy of a JGoObject and
add it to a JGoDocument
- added JGoObject.copy method, a convenient
way to make a copy of a JGoObject without adding it to a
JGoDocument
- added JGoSelection.toArray, addArray, and addCollection
- added
JGoViewEvent.SELECTION_STARTING and SELECTION_FINISHED events,
raised before and after many objects are
selected or de-selected
- changed, improved JGoPrintPreview
(Swing)
- refactored JGoSubGraph by splitting into a new base
class, JGoSubGraphBase, that can be used
to implement your own
subgraphs
- added UpdateDemo and BoxApp example
applications (Swing)
New in 5.1
- Added JGoArea.addCollection
and JGoLayer.addCollection, to support reparenting nodes
without getting the links disconnected
- Many JGoSubGraph enhancements
- New picking and selecting methods and properties
- Added JGoDocument.isUnoccupied,
to tell whether there are any "avoidable" objects
in a rectangular region
-
Added JGoDocument ValidCycle property, with
associated constants and methods
-
Improved support for headless
servers
-
Improved stroke path for self-loop links to
observe Curviness value
-
Added JGoLink RoundedCorners property
-
Added
JGoObject.isUpdatePartner, setUpdatePartner, and partnerUpdate
method, called by JGoObject.update
-
Added JGoView.printPreview
-
Added JGoActionObject
interface and a new state to JGoView for handling JGoActionObjects,
such
as buttons or knobs
-
Improved routing
of Orthogonal links in layered-digraph autolayout
-
Added
overloads to various JGoNetwork methods to take
JGoObject instead
of JGoNetworkNode,
for convenience in customizing
the network that will
be laid out
-
Added JGoXMLSaveRestore interface for easier persistence of custom
objects
-
Added
SVGImage example class
-
Added RotText and RotImage example classes
to Demo1
-
Added JTreeApp example
app
New in 5.0
- Improved
bean support
- Bean information provided for JGoView, JGoPalette,
and JGoOverview, allowing
tighter integration with most Java IDEs, including visual editing of user
interfaces, property editors, and easier association of event listeners.
- Added JGoOverview and JGoPalette (previously example
classes, but now with additional features)
- Added many view events (cases of JGoViewEvent,
such as LINK_CREATED and OBJECT_EDITED)
- Improved
moving and copying to avoid recalculating link strokes
- Added
AdjustingStyle property to JGoLink, to control how
the link stroke is replotted when
a port is moved
- Added Curviness property to JGoLink,
so that cubic (Bezier) links are automatically curved
- Added
ValidSelfNode and ValidDuplicateLinks properties
to JGoPort, heeded by JGoPort.validLink
- Added methods
to JGoArea (moveChildren, rescaleChildren, and layoutChildren)
called
by geometryChange
and geometryChangeChild
- Added AutoRescale
property to JGoObject, heeded by JGoArea.rescaleChildren
- Added
generic JGoNode class
- Added JGoBasicNode, JGoIconicNode,
JGoTextNode, JGoSubGraph (previously
example classes,
but now with additional features)
- Added
PartID property to JGoLink and JGoPort and JGoNode,
maintained
by JGoDocument
when JGoDocument.setMaintainsPartIDs(true)
- Added
some flexibility to SVG generation
- Improved performance
of JGoLayeredDiagraphAutoLayout
- Changed example code:
- overrides assume super JGoArea.copyChildren
copies all child objects
and adds them to the area
- replaced overrides
of geometryChange and geometryChangeChild
with overrides of layoutChildren
- changed
overrides of JGoPort.validLink
to use new ValidSelfNode
and ValidDuplicateLinks
functionality
New in 4.1
- SVG
-
graphs within graphs
-
text wrapping
-
Bezier curves (strokes,
links and polygons)
-
automatic routing
of orthogonal links to avoid nodes
-
extensive and customizable
user-input features
-
new example classes
and applications
-
and dozens of other
new features.
New in 4.0
- example servlet using JPEGView to produce images for web servers
- support for Swing undo/redo
- option to allow views to show objects at negative coordinates
- greeking of JGoText and JGoPort at small scales, sensitive to
printing
- DefaultBase property for JGoImages, for convenience when loading
images in Applets
- resizing a link to connect it to a new port now modifies the
existing link
- example code for reading and writing XML files for Flower processes
- new GeneralNode example classes, with varying numbers of labeled
ports
- new JPEGView example class, to demonstrate producing JPEG images
from documents
- new Overview example class in Demo1, allowing navigation of
another view
- improvements to the Flower editor sample
Customer Gallery
 |
Our Customer Gallery: see the
diverse set of applications our customers are building. |
|