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"

< GEF
m
(138 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Introduction ==
+
__NOTOC__
As agreed on in Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=347636 347636], development of a new GEF 4.0 API will be started in parallel to the current GEF 3.x development branch under the following terms:
+
  
#After the Indigo release has been completed, a GEF experimental branch is created by forking the GEF 3.7 code-base into a Git repository (possibly located next to Zest 2.0, so that all experimental GEF components can be found in one place).
+
[[GEF/GEF4 | GEF4]] is the unified effort of the [http://www.eclipse.org/gef Graphical Editing Framework (GEF)] project team to develop a new GEF 4.x code base as a modernization of the current production components [https://www.eclipse.org/gef/draw2d/ Draw2d 3.x], [https://www.eclipse.org/gef/gef_mvc/index.php GEF (MVC) 3.x], and [https://www.eclipse.org/gef/zest/index.php Zest 1.x].  
#The experimental branch created thereby will live parallel to the GEF HEAD branch, considering all its API as provisional unless explicitly graduated. It will not interfere with GEF HEAD, i.e. it will have its own build process and separate wiki pages for documentation of the ongoing work (similar to Zest 2.0).
+
#Committers working on the experimental branch will be responsible for ensuring fixes made to GEF HEAD also get applied to the experimental branch.
+
#Graduation of the experimental branch back into GEF HEAD will have to imply that a proper compatibility layer is in place so all GEF 3.x clients run in a 100% binary compatible method. It will furthermore have to be acknowledged by all GEF committers.
+
#Work will start without an incubator project at first, granting commit rights on the Git repository to all current GEF committers. The question of introducing an incubator project (located under GEF) will be deferred until a) community wants to actively get involved or b) Juno has been released (whatever comes first).
+
  
As migration of GEF to git has not been completed yet (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=351232 351232] for details), development has been started by creating a new Geometry API, based on the current Draw2d geometry classes (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=355997 355997] for details). Due to the lessons learned in developing an initial GEF 4 Geometry API, and due to the compatibility requirements imposed on a gradation of the new GEF4 API, it was concluded that migrating the existing code base on a module-per-module basis probably is more appropriate than branching the whole code base. The completion of the GEF4 Geometry API will be the first package that is to be completed with respect to this. Based on the Geometry API, other packages may then be investigated, as outlined in the Roadmap below.
+
Being developed in parallel to maintaining the production components, [[GEF/GEF4 | GEF4]] is set up in terms of smaller, more lightweight [[#Components / Reference Documentation | components]], uses JavaFX instead of SWT as rendering technology, and allows to build up graphical applications for Eclipse (using a JavaFX-SWT-integration) as well as standalone.  
  
== Components / Roadmap ==
+
Please note that '''all GEF4 API is still provisional''', i.e. there is no released API yet. Therefore, all API-packages are exported with the x-internal directive. To differentiate them from non-API packages, all non-API packages are explicitly named as 'internal' and are either not exported by the bundle manifest, or only via an x-friends directive (if they are used in other test bundles, etc.). You may want to consult the [[GEF/Contributor_Guide | Contributor Guide]] for details on how to set up your IDE to get rid of any restricted access warnings that are caused by this policy.
* [[GEF/GEF4/Geometry | GEF4 Geometry]] - Q4 2011
+
 
* GEF4 Graph  
+
== Current Status ==
* GEF4 Draw2d Core (Graphics, Canvas, Figure, Bounds, etc.)
+
All GEF4 components are part of the [http://projects.eclipse.org/projects/tools.gef/releases/3.10.0-mars GEF 3.10.0 (Mars)] contribution to the [https://projects.eclipse.org/releases/mars Mars simultaneous release].
 +
 
 +
Having complete the migration of the Zest 2.x code base to GEF4 with Mars M6 (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=372365 #372365] for details), we are currently working on closing parts of the remaining functional gap between GEF4 and GEF 3.x. From M7 onwards we will concentrate on augmenting the [[#Components / Reference Documentation | reference documentation]].
 +
 
 +
== Components / Reference Documentation ==
 +
GEF4 is internally constituted of the following nine components (with their respective sub-modules). The reference documentation for each component may be accessed via the component links.
 +
 
 +
[[Image:GEF4_Vision.png|600px]]
 +
 
 +
* [[GEF/GEF4/Common | <span style="color:#5B8E92">GEF4 Common</span>]] - Provides basic abstractions and infrastructure used by (potentially) all other GEF4 components, including an enhanced [http://nyssen.blogspot.de/2014/11/iadaptable-gef4s-interpretation-of.html adaptable pattern] and notification support.
 +
 
 +
* [[GEF/GEF4/Geometry | <span style="color:#268558">GEF4 Geometry (Geometry / Geoemtry.Convert.SWT / Geometry.Convert.FX)</span>]] - Provides different abstractions (Euclidean, Projective, Planar) for 2D geometric calculations, and conversions of planar geometries (curves, shapes, poly shapes) to/from respective SWT, AWT, and JavaFX equivalents (as well as conversions between SWT and AWT geometries).
 +
 
 +
* [[GEF/GEF4/FX | <span style="color:#4C6084">GEF4 FX (FX / FX.UI)</span>]] - Provides support for rendering [[GEF/GEF4/Geometry | GEF4 Geometry]]-based shapes, as well as abstractions that are needed in the context of graphical editors and views, i.e. visual anchor implementations and a connection abstraction. Also enhances the JavaFX-SWT-Integration with forwarding of touch gestures and provides proper support for embedding SWT Controls via a generic adapter into a JavaFX scene graph (within the context of the JavaFX SWT integration). 
 +
 
 +
* [[GEF/GEF4/Graph | <span style="color:#960607">GEF4 Graph</span>]] Provides a simply, UI-independent data-model (Graph, Node, Edge) for representing directed graphs. Is used as input/output model by [[GEF/GEF4/DOT | GEF4 DOT]] and underlying visualization-model for [[GEF/GEF4/Zest | GEF4 Zest]].
 +
 
 +
* [[GEF/GEF4/Layout | <span style="color:#7C866A">GEF4 Layout</span>]] - Provides layout algorithm implementations as well as a model facade to adapt layout model data for these algorithms.
 +
 
 +
* [[GEF/GEF4/MVC | <span style="color:#05124E">GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI)</span>]] - The core model-view-controller framework to build up graphical editors and views. Provides an UI toolkit independent and a JavaFX specific layer, as well as Eclipse-UI integration for both. Can be used to build standalone and Eclipse-integrated editors and views.
 +
 
 +
* [[GEF/GEF4/Zest | <span style="color:#206FAD">GEF4 Zest (Zest.FX / Zest.FX.UI)</span>]] - Visualization framework that supports visualization of [[GEF/GEF4/Graph | GEF4 Graph]]-based models, integrating automated layout based on [[GEF/GEF4/Layout | GEF4 Layout]].
 +
 
 +
* [[GEF/GEF4/DOT | <span style="color:#561D8E">GEF4 DOT (DOT / DOT.UI)</span>]] Provides a basic [http://www.graphviz.org GraphViz] [http://www.graphviz.org/content/dot-language DOT]-Editor (Xtext) as well as a [[GEF/GEF4/Zest | GEF4 Zest]]-based [http://www.graphviz.org/content/dot-language DOT]-visualization.
 +
 
 +
* [[GEF/GEF4/Cloudio | <span style="color:#8A3572">GEF4 Cloudio</span>]]  - Provides support for visualizing tag clouds. Is based on SWT/JFace, integrated in the Eclipse UI, and will (at least for now) not be ported to JavaFX.
 +
 
 +
== Developer Resources ==
 +
 
 +
All relevant information about how to obtain our source code, where to find our Hudson build jobs, update sites (CI, milestones, releases), mailing lists, or our forum, etc. can all be found in the respective sections of the [https://projects.eclipse.org/projects/tools.gef GEF project dashboard]. In addition to this, there is a dedicated [[GEF/Contributor Guide | Contributor Guide]] that describes how to setup a workspace, provide a patch, execute a headless Tycho-build, and more.
 +
 
 +
The reference documentation for each GEF4 component is referenced from within the [[#Components / Reference Documentation | components]] section.
 +
 
 +
== Further Reading ==
 +
 
 +
Further information about the history and current plans, as well as on technical details can be inferred from the following presentations/articles/posts:
 +
* [http://www.eclipsecon.org/2012/sites/eclipsecon.org.2012/files/GEF_Past_Present_Future_0.pdf Alexander Nyßen (2012): GEF - Past, Present, and Future, EclipseCon NA, Reston (VA), 2012]
 +
* [http://www.eclipsecon.org/europe2012/sites/eclipsecon.org.europe2012/files/GEF4_Share_And_Enjoy_0.pdf Alexander Nyßen (2012): GEF4 - Share And Enjoy..., EclipseCon Europe, Ludwigsburg, 2012]
 +
* [http://www.eclipsecon.org/2013/sessions/gef4-share-and-enjoy Alexander Nyßen (2013): GEF4 - (Continue to) Share and Enjoy..., EclipseCon NA, Boston (MA), 2013]
 +
* [[media:GEF4_SwtFX.pdf | Alexander Nyßen (2013): GEF4 SwtFX (Lightning Talks), EclipseCon Europe, Ludwigsburg, 2013 ]]
 +
* [[media:GEF4.pdf | Alexander Nyßen (2013): GEF4, RheinJug, Düsseldorf, 2013 ]]
 +
* [https://www.eclipsecon.org/na2014/sites/default/files/slides/GEF4_There_s_really_something_going_on_0.pdf Alexander Nyßen (2014): GEF4 - There's really something going on!, EclipseCon NA, San Francisco (CA), 2014]
 +
* [https://www.eclipsecon.org/europe2014/sites/default/files/slides/GEF4_Our_mission_to_Mars.pdf Alexander Nyßen (2014): GEF4 - Our mission to Mars, EclipseCon Europe, Ludwigsburg, 2014]
 +
* [http://nyssen.blogspot.de/2014/11/iadaptable-gef4s-interpretation-of.html Alexander Nyßen (2014): IAdaptable - GEF4's Interpretation of a Classic, ANy's Argument (Blog)]
 +
 
 +
[[Category:GEF]]

Revision as of 11:16, 15 April 2015


GEF4 is the unified effort of the Graphical Editing Framework (GEF) project team to develop a new GEF 4.x code base as a modernization of the current production components Draw2d 3.x, GEF (MVC) 3.x, and Zest 1.x.

Being developed in parallel to maintaining the production components, GEF4 is set up in terms of smaller, more lightweight components, uses JavaFX instead of SWT as rendering technology, and allows to build up graphical applications for Eclipse (using a JavaFX-SWT-integration) as well as standalone.

Please note that all GEF4 API is still provisional, i.e. there is no released API yet. Therefore, all API-packages are exported with the x-internal directive. To differentiate them from non-API packages, all non-API packages are explicitly named as 'internal' and are either not exported by the bundle manifest, or only via an x-friends directive (if they are used in other test bundles, etc.). You may want to consult the Contributor Guide for details on how to set up your IDE to get rid of any restricted access warnings that are caused by this policy.

Current Status

All GEF4 components are part of the GEF 3.10.0 (Mars) contribution to the Mars simultaneous release.

Having complete the migration of the Zest 2.x code base to GEF4 with Mars M6 (see #372365 for details), we are currently working on closing parts of the remaining functional gap between GEF4 and GEF 3.x. From M7 onwards we will concentrate on augmenting the reference documentation.

Components / Reference Documentation

GEF4 is internally constituted of the following nine components (with their respective sub-modules). The reference documentation for each component may be accessed via the component links.

GEF4-Components.png

  • GEF4 Common - Provides basic abstractions and infrastructure used by (potentially) all other GEF4 components, including an enhanced adaptable pattern and notification support.
  • GEF4 FX (FX / FX.UI) - Provides support for rendering GEF4 Geometry-based shapes, as well as abstractions that are needed in the context of graphical editors and views, i.e. visual anchor implementations and a connection abstraction. Also enhances the JavaFX-SWT-Integration with forwarding of touch gestures and provides proper support for embedding SWT Controls via a generic adapter into a JavaFX scene graph (within the context of the JavaFX SWT integration).
  • GEF4 Graph Provides a simply, UI-independent data-model (Graph, Node, Edge) for representing directed graphs. Is used as input/output model by GEF4 DOT and underlying visualization-model for GEF4 Zest.
  • GEF4 Layout - Provides layout algorithm implementations as well as a model facade to adapt layout model data for these algorithms.
  • GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI) - The core model-view-controller framework to build up graphical editors and views. Provides an UI toolkit independent and a JavaFX specific layer, as well as Eclipse-UI integration for both. Can be used to build standalone and Eclipse-integrated editors and views.
  • GEF4 Cloudio - Provides support for visualizing tag clouds. Is based on SWT/JFace, integrated in the Eclipse UI, and will (at least for now) not be ported to JavaFX.

Developer Resources

All relevant information about how to obtain our source code, where to find our Hudson build jobs, update sites (CI, milestones, releases), mailing lists, or our forum, etc. can all be found in the respective sections of the GEF project dashboard. In addition to this, there is a dedicated Contributor Guide that describes how to setup a workspace, provide a patch, execute a headless Tycho-build, and more.

The reference documentation for each GEF4 component is referenced from within the components section.

Further Reading

Further information about the history and current plans, as well as on technical details can be inferred from the following presentations/articles/posts:

Back to the top