blob: b32cc38fbb6c8b4928004e205379a3639c8ff7de [file] [log] [blame]
<HTML>
<HEAD>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<LINK REL="Stylesheet" HREF="https://netbeans.org/netbeans.css" TYPE="text/css">
<TITLE>netbeans.org : NetBeans Graph Library 1.0</TITLE>
</HEAD>
<BODY>
<h1>NetBeans Graph Library 1.0 - Features</h1>
<p>
<img src="demo1.png" align="right" style="border: solid 1px black; margin: 0 0 10px 10px; "/>
<h3>Visualize a Graph Model</h3>
<p>
The graph model is defined by following rules:
<ul>
<li>A node could have a set of ports.
<li>A port has a single node assigned.
<li>A link could have a source and a target port assigned.
</ul>
<h3>Drag&amp;Drop Style of Work</h3>
<p>
Most of the actions are possible to invoke using left mouse button: selection (single and rectangular), moving objects, creating links, relinking.
Shift key modifier is used for invert selection. Ctrl key is used to entering Alternate mode.
<h3>Visual Feedback</h3>
<ul>
<li>Objects selection.
<li>Objects highlighting - allows second type of visual feedback e.g. highlighing all links that are attached to selected nodes.
<li>Mouse over effect on all active objects.
</ul>
<h3>Looks and Feels</h3>
<p>
API allows to plug in L&amp;F of all objects. Each object could have different L&amp;F.
<h3>Extensible</h3>
<p>
The library defines interfaces that could implemented by 3rd-party and plugged in the library. Following interfaces are in the API:
<ul>
<li>Document Model - holds document data.
<li>Node Model - holds node data.
<li>Link Model - holds link data.
<li>Port Model - holds port data.
<li>Document Renderer - defines look of a background.
<li>Node Renderer - defines look of a node.
<li>Link Renderer - defines look of a link.
<li>Port Renderer - defines look of a port.
<li>Nodes Layouter - resolves nodes positions and support of animated node positioning.
<li>View Controller - defines user behaviour e.g. left-clicking on a node means that the particular node should be selected by model
<li>Model Event Handler - receives events from the library and view controller and makes changes in the model which are propagated back to the graph library and visualized e.g. an event that a new link should be created.
</ul>
<h3>Multi View</h3>
<p>
Two possible multi-views:
<ul>
<li>View Cloning - two JComponents which are showing exactly the same content including looks and feels.
<li>Views of Model - two JComponents which are showning the same model but could use different looks and feels.
</ul>
<h3>Multi Layers</h3>
<p>
Rendering of objects is done in layers. Each object could be rendered in more than one layer e.g. a link should be renderer below nodes but when the link is selected it should be renderer over nodes, ...
<h3>Undo-Redo</h3>
<p>
Allows undo/redo actions on a view e.g. node position changes.
<h3>Zoom in/out</h3>
<p>
A view allows to zoom in and out using a zoom factor property.
<h3>In-place Editing</h3>
<p>
A renderer could specify in-place editor e.g. when you double-click on a text, an in-place editor is shown in the scene and allows you to edit it.
<h3>Snap-to-grid</h3>
<p>
A node is snapped to a grid when it moves.
<h3>Alternative Node</h3>
<p>
Special (second) editing mode dedicated for modifing link (using their control points) and ports locations. By default editing mode is invoked by pressing Ctrl key.
<h3>Orthogonal Link Router</h3>
<p>
A link router which creates orthogonal path that keep away from other objects on the scene.
<h3>Breadth-first Nodes Layouter</h3>
<p>
A nodes layouter which layouts nodes using breadth-first algorithm.
</BODY>
</HTML>