Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "GEF/GEF4/Zest"

< GEF‎ | GEF4
(Remove section about Zest 1.x and clear migration section, which is no longer accurate.)
(Remove outdated contents related to Zest 2.x)
Line 1: Line 1:
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 [http://wiki.eclipse.org/GEF/GEF4/Zest the original wiki page]''.
  
''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 [http://wiki.eclipse.org/Zest the original wiki page]''.
+
== Introduction ==
  
== GEF4 Zest ==
+
GEF4 Zest is a graph visualization component that can be used to visualize [[GEF/GEF4/Graph|GEF4 Graph]]-based graph models, applying automatic layout as provided by [[GEF/GEF4/Layout|GEF4 Layout]]. It uses JavaFX and [[GEF/GEF4/FX| GEF4 FX]] for visualization purposes and is internally based on [[GEF/GEF4/MVC|GEF4 MVC]].
  
This is a collection of documentation on Zest 2.0, the latest development version of Zest. Zest 2 is part of [[GEF/GEF4|GEF4]] and can be installed from the [[GEF/GEF4#Update_Sites|GEF4 Update Sites]]. Additional information can also be found here:
+
== Layout Implementations ==
  
* [[Tree_Views_for_Zest | Zest 2.0 Layout API]]
+
The GEF4 Layout interfaces are adopted to the GEF4 Graph data model. The layout objects are constructed from a given Graph object.
* [[Zest/DOT | Graphviz DOT support]]
+
  
Currently, an alternative Zest.Core implementation using GEF4 MVC and JavaFX, called [[GEF/GEF4/Zest/FX|Zest.FX]], is under development.
+
=== Properties ===
  
== Contribute ==
+
The layout objects support a general properties map. The specific properties for which interface methods are defined are implemented using this properties map.
  
The Zest 2 source code is available from the [http://git.eclipse.org/c/gef/org.eclipse.gef4.git/ GEF4 Git repository]. It is also [https://github.com/eclipse/gef4 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 | GEF Contributor Guide]]. You can search for [https://bugs.eclipse.org/bugs/buglist.cgi?list_id=4722702&classification=Tools&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Zest&product=GEF existing bugs], or [https://bugs.eclipse.org/bugs/enter_bug.cgi?product=GEF&component=Zest file a new one].
+
When transferring the graph objects into layout objects, the attributes of the graph objects are examined, altering the layout objects as follows:
  
== New subgraph rendering ==
+
* LABEL<br />Contains the label of the node/edge.
 +
* EDGE_STYLE<br />Specifies if the edge should be drawn solid, dashed, or dotted.
 +
* GRAPH_TYPE<br />Specifies whether edges are directed or undirected.
  
In GEF4 Zest, subgraphs can hide their contained nodes or add different types of additional information about ''pruned'' elements:
+
== MVC ==
  
=== LabelSubgraph ===
+
The GEF4 MVC component is used as the framework for the viewer.
  
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.
+
The ContentParts are implemented for the GEF4 Graph data model:
  
[[Image:Zest-tree-subgraph-label.png|150px‎]]
+
* GraphContentPart
 +
* NodeContentPart
 +
* EdgeContentPart
  
=== TriangleSubgraph ===
+
An ILayoutModel is used to distribute the LayoutContext to all ContentParts. A GraphRootPart is used to construct the LayoutContext and set it on the ILayoutModel.
  
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).
+
=== ILayoutModel ===
  
[[Image:Zest-tree-subgraph-triangle.png|150px‎]]
+
The ILayoutModel holds a LayoutContext.
  
=== PrunedSuccessorsSubgraph ===  
+
=== GraphRootPart ===
  
Each subgraph is represented as a little label showing how many direct successors are ''pruned''.
+
The GraphRootPart stores a LayoutContext in the ILayoutModel. That LayoutContext is created when the viewer's content changes. The GraphRootPart does also listen to viewport changes to trigger a re-layout.
  
[[Image:Zest-tree-subgraph-successors.png|150px‎]]
+
=== ZestFXExampleView ===
  
 +
The ZestFXExampleView is a viewer for an example graph:
 +
 +
[[Image:GEF4Zest.FX.ZestFXExampleView.png|ZestFXExampleView]]
  
 
== Migration from Zest 1.x to GEF4 Zest ==
 
== Migration from Zest 1.x to GEF4 Zest ==
 +
 +
[[GEF/GEF4/Zest|GEF4 Zest]] was mostly written from scratch, replacing the Zest 1.x API as well as the provisional Zest 2.x API ( [[Tree_Views_for_Zest | Zest 2.0 Layout API]]) that was developed as an intermediate step.
  
 
TODO: Provide detailed information on how to migrate from Zest 1.x to GEF4 Zest, as indicated within bugzilla  [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441131 #441131].
 
TODO: Provide detailed information on how to migrate from Zest 1.x to GEF4 Zest, as indicated within bugzilla  [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441131 #441131].
 
   
 
   
 
[[Category: GEF]]
 
[[Category: GEF]]

Revision as of 11:20, 25 March 2015

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.

Introduction

GEF4 Zest is a graph visualization component that can be used to visualize GEF4 Graph-based graph models, applying automatic layout as provided by GEF4 Layout. It uses JavaFX and GEF4 FX for visualization purposes and is internally based on GEF4 MVC.

Layout Implementations

The GEF4 Layout interfaces are adopted to the GEF4 Graph data model. The layout objects are constructed from a given Graph object.

Properties

The layout objects support a general properties map. The specific properties for which interface methods are defined are implemented using this properties map.

When transferring the graph objects into layout objects, the attributes of the graph objects are examined, altering the layout objects as follows:

  • LABEL
    Contains the label of the node/edge.
  • EDGE_STYLE
    Specifies if the edge should be drawn solid, dashed, or dotted.
  • GRAPH_TYPE
    Specifies whether edges are directed or undirected.

MVC

The GEF4 MVC component is used as the framework for the viewer.

The ContentParts are implemented for the GEF4 Graph data model:

  • GraphContentPart
  • NodeContentPart
  • EdgeContentPart

An ILayoutModel is used to distribute the LayoutContext to all ContentParts. A GraphRootPart is used to construct the LayoutContext and set it on the ILayoutModel.

ILayoutModel

The ILayoutModel holds a LayoutContext.

GraphRootPart

The GraphRootPart stores a LayoutContext in the ILayoutModel. That LayoutContext is created when the viewer's content changes. The GraphRootPart does also listen to viewport changes to trigger a re-layout.

ZestFXExampleView

The ZestFXExampleView is a viewer for an example graph:

ZestFXExampleView

Migration from Zest 1.x to GEF4 Zest

GEF4 Zest was mostly written from scratch, replacing the Zest 1.x API as well as the provisional Zest 2.x API ( Zest 2.0 Layout API) that was developed as an intermediate step.

TODO: Provide detailed information on how to migrate from Zest 1.x to GEF4 Zest, as indicated within bugzilla #441131.

Back to the top