From Eclipsepedia

< GEF‎ | GEF4
Revision as of 09:13, 18 March 2014 by (Talk | contribs)

Jump to: navigation, search

TODO: Create a stand-alone documentation of the GEF4 Zest component here. Up to now, some documentation can already be found under Zest

Note to non-wiki readers: This documentation is generated from the Eclipse wiki - if you have corrections or additions it would be awesome if you added them in the original wiki page.


GEF4 Zest

This is a collection of documentation on Zest 2.0, the latest development version of Zest. Zest 2 is part of GEF4 and can be installed from the GEF4 Update Sites. Additional information can also be found here:


The Zest 2 source code is available from the GEF4 Git repository. It is also mirrored on GitHub. There are example snippets in org.eclipse.gef4.zest.examples and tests in org.eclipse.gef4.zest.tests. For instructions on contributing, see the GEF Contributor Guide. You can search for existing bugs, or file a new one.

New subgraph rendering

In GEF4 Zest, subgraphs can hide their contained nodes or add different types of additional information about pruned elements:


Each subgraph is represented as a separate graph item: a label showing the number of nodes contained within it. It can be subclassed to show other kinds of information.



Each subgraph is represented as a triangle. It's designed specifically to work with SpaceTreeLayoutAlgorithm (see below) and assumes that nodes pruned inside it form a tree structure. Properties of this structure are visualized by properties of the triangle. The height of the triangle corresponds to the height of the tree, the length of the triangle's base corresponds to the total number of leaves in the tree and the luminance of the triangle's color corresponds to the average number of children for each node in the tree (which can be understood as the density).



Each subgraph is represented as a little label showing how many direct successors are pruned.


Graphviz DOT support


In Zest 2, graphs can be created from DOT input. For instance, for the following DOT input, the Zest graph below is drawn, see also the complete documentation. The Zest graph view can be used with the included DOT editor to visualize a DOT file or to display embedded DOT in other files, e.g. in source code comments or in wiki markup.

digraph simple { 
 n1[label="Node 1"]
 n2[label="Node 2"]
 n1 -> n2[style=dotted label="A dotted edge"]



Using the API, DOT can be imported to Zest graphs, and Zest graphs can be exported to DOT (see below). To use the API, create a new Plug-in project and add org.eclipse.gef4.zest.core to the MANIFEST.MF dependencies.

Graph graph = new DotImport("digraph{ 1->2; 2->3; 2->4 }").newGraphInstance();
GraphWidget widget = new GraphWidget(graph, shell, SWT.NONE);
System.out.println(new DotExport(graph).toDotString());

The complete sample usage is available in the repository, as well as DOT input samples.

Migration from Zest 1.x to GEF4 Zest

Layout Filters

Instead of org.eclipse.zest.layouts.Filter use org.eclipse.zest.core.widgets.LayoutFilter (see example below and full code in in the examples bundle).

LayoutFilter filter = new LayoutFilter() {
  public boolean isObjectFiltered(GraphItem item) {
    if (item instanceof GraphConnection) {
      GraphConnection connection = (GraphConnection) item;
      Object data = connection.getData();
      if (data != null && data instanceof Boolean) {
        return ((Boolean) data).booleanValue();
      return true;
    return false;

Connection Style Providers

The IConnectionStyleProvider and IEntityConnectionStyleProvider interfaces now contain getRouter methods returning an org.eclipse.draw2d.ConnectionRouter. Return null for the default router. See in the examples bundle.

Zest 1.x

Documentation on getting started with Zest 1.x, the latest released version of Zest, can be found in the GEF Reference Documentation.