| <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&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&F of all objects. Each object could have different L&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> |