GEF stands for Graph Editing Framework. It is a library of Java
classes that make it easier to develop new applications that involve
editing diagrams and connected graphs. Graph editing is required for
many software engineering and network engineering tools that deal with
models of software or networks. Diagram or graph editing can also be
used in applications such as home design, business process modeling,
organization charts, family trees, or even games.
Java's Swing user interface library includes widgets for windows,
buttons, text, menus, tables, and trees. These are used in every
application that has a GUI. However, Swing does not provide support
for diagram or graph editing.
The GEF vision is to produce a reusable framework for diagram and
connected graph editing. The key qualities for the success of this
- Simplicity: GEF should be easy for developers to learn and use.
An experienced developer should be able to understand all of
GEF's implementation in just 3 days.
- Usability: GEF must provide a user interface that is easy for end
- Adaptability: GEF should be easily adaptable to a wide range of
- Scalability: GEF must be efficient on diagrams up to a thousand
Two important things set GEF apart from most other graph editing
- The main objects in GEF a fairly concrete and familiar to people
who have experience using drawing tools. E.g., shapes, groups,
selection handles, commands, and layers. In contrast, many other
frameworks revolve around abstract concepts such as constraints or
- GEF provides both a simple, concrete representation of connected
graphs, as well as a highly flexible graph model that is similar to
Swing's TreeModel and TableModel. These "Model" classes allow
existing application objects to be visualized as graphs without
change. They also allow for multiple diagrammatic views of the same
underlying set of objects.
GEF can be used to for both applications and applets. Although,
some features (e.g., saving files) are only available in