The Arakhnê.org Network Editor (NetEditor) is a free java component that permits to edit and show graphs. NetEditor is composed by a drawing area in which you can draw nodes and edges.
NetEditor supports the following features:
- separation of the visual-language constructs and the drawings;
- graphical editing of the graph structure;
- algorithms to laying out the figures (Sugiyama-like and force-based algorithms);
- depth levels for nodes and egdes;
- can undoing and redoing user actions;
- clipboard and Drag&Drop management;
- exporting into graphical formats : GIF, JPEG, PNG, BMP;
- exporting into vectorial formats : SVG, PDF, Encapsulated Postscript, PDF, Graphviz DOT, GXL, GraphML, GML…;
- saving into and loading from GML, GraphML, GXL, or NGR (zipped GML/GraphML/GXL) files.
NetEditor was originally proposed by Mahdi HANNOUN and Stéphane GALLAND. In 2001, they decide to develop a new graph-editing library because the existing ones don’t support their needs, or were to difficult to extend. Since 2010, Stéphane GALLAND is developping and maintaining a new version of NetEditor, which is based on the Arakhnê.org Foundation Classes
Definition of a Graph-based Graphical Language
NetEditor is designed to create editors for Visual Programming Languages. It assumes that the language constructs are defined independently from the graphical representations of these constructs.
Language Constructs Specification
In NetEditor, the language constructs are defined by a graph based on the three following concepts:
- Node: a node is a point in a graph. A node is linked to other nodes with edges.
- Edge: an edge is a connection between two nodes. An edge may be directed or not. It is not directly connected to nodes, but it is connected to the anchors of the nodes. An edge has a start anchor and an end anchor.
- Anchor: an anchor is a connection point between a node and an edge. An anchor is defined inside/for a single node. Many edge could be connected to one anchor.
The language of the diagram that should be edited by NetEditor must be defined with Java classes that are extending the node, edge and anchor classes.
Language Constructs Figures
Each language construct (node, edge and anchor) may be associated to one graphical representation (also named the view of the construct). This graphical representation is in charge of the rendering of the construct’s information on on a graphical panel (Swing, Android, PDF, Postscript…)
Example: a simple editor for finite state ùachine
To illustrate the use of NetEditor, a simple editor of finite state machine is provided. A tutorial explains how to create this editor step-by-step: FSM Editor Tutorial.
Installation and Usage
NetEditor is a java library designed to be compiled and used with maven.
Maven is a software project management and compilation tool. Based on the project object model (POM) of the project (written inside the file pom.xml), maven can manage the project’s builds, the reports and the documentation. It is also able to retreive the Java librairies, which are inside the dependencies of the project, on the Web.
Maven’s primary goal is to allow a developer to manage the complete state of a development effort in the shortest period of time. In order to attain this goal, there are several areas of concern that maven attempts to deal with:
- Making the build process easy;
- Providing a uniform build system;
- Providing quality project information;
- Providing guidelines for best practices development;
- Allowing transparent migration to new features.
Because NetEditor is a maven project, we recommend to use maven and add the Arakhnê.org maven repository inside our POM file.
This repository will allow you to obtain the NetEditor libraries with less efforts.
If you do not want to use maven, you should dowload manually the java libraries that are required by NetEditor:
- NetEditor libraries: http://download.tuxfamily.org/arakhne/maven/org/arakhne/neteditor/
- Arakhne Foundation Classes:
- Arakhne virtual machine utilities: http://www.arakhne.org/arakhneVmutils
- Arakhne reference utilities: http://www.arakhne.org/arakhneVmutils
- Arakhne text utilities: http://www.arakhne.org/arakhneText
- Arakhne utilities: http://www.arakhne.org/arakhneUtil
- Arakhne math tools: http://www.arakhne.org/arakhneMath
- Arakhne UI base library: http://www.arakhne.org/arakhneUiBase
- Arakhne vectorial picture API: http://www.arakhne.org/arakhneUiVector
For Swing Interface:
- Arakhne AWT: http://www.arakhne.org/arakhneUiAwt
- Arakhne Swing: http://www.arakhne.org/arakhneUiSwing
- Arakhne AWT implementation of the vector picture API: http://www.arakhne.org/arakhneUiVector
For Android Interface:
- Arakhne Android: http://www.arakhne.org/arakhneUiAndroid
- Arakhne Android implementation of the vector picture API: http://www.arakhne.org/arakhneUiVectorAndroid
NetEditor is distributed under the GNU Lesser General Public License.