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
(94 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[GEF/GEF4 | GEF4]] is the unified effort to develop a new GEF 4.0 code base as a modernization of the current one (Draw2d, GEF (MVC) 3.x, and Zest 1.x, in the following referred to as ''GEF proper''). Being developed in parallel to maintaining the GEF proper code base, [[GEF/GEF4 | GEF4]] is set up as a provisional component in order to not being bound to the same API compatibility constraints.  
+
__NOTOC__
 +
 
 +
[[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].  
 +
 
 +
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.
 +
 
 +
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.
  
 
== Current Status ==
 
== Current Status ==
Development has been started by creating a new double-precision Geometry-API (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=355997 355997] for details) based on the Draw2d geometry classes as a nucleus. As this is functionally complete, creation of a new Graphics-API (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=386029 386029] for details), which abstracts from a concrete windowing toolkit and can be used in SWT and AWT context (we assume that JavaFX might become interesting as an Eclipse RCP rendering possibility on the near term), is the next logical step we have started with. After this, the remaining parts of the Draw2d and Zest2 code base will be migrated, after it GEF (MVC).
+
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]. An overview of the significant features added during the Mars release train can be found in the [[GEF/New_and_Noteworthy/3.10| New and Noteworthy in 3.10]]. Information on earlier achievements can be inferred from the talks listed under [[#Further Reading|further reading]].
 +
 
 +
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 have worked on closing parts of the remaining functional gap between GEF4 and GEF 3.x up to M7. From M7 onwards we are now concentrating on augmenting the javadoc and [[#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. You may also consult the [[GEF/GEF4#Further Reading |Further Reading]]-section for additional information.
 +
 
 +
[[Image:GEF4-Components.png|600px]]
 +
 
 +
* [[GEF/GEF4/Common | <span style="color:#5B8E92">GEF4 Common (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 (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 (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.
  
Additional information about current status and plans can also be found here:
+
* [[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]].
* [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]
+
  
== Components ==
+
* [[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.
  
* [[Image:Ok_green.gif]][[GEF/GEF4/Geometry | GEF4 Geometry]] - Provides different abstractions (Euclidean, Projective, Planar) for 2D geometric calculations, and conversions of planar geometries (curves, shapes, poly shapes) to/from respective SWT and AWT equivalents (as well as conversions between these SWT and AWT geometries). ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=355997 355997])
+
* [[GEF/GEF4/Cloudio | <span style="color:#8A3572">GEF4 Cloudio (Coudio.UI)</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.
  
* [[Image:Progress.gif]][[GEF/GEF4/SWT/FX | GEF4 SWT FX]]  - Will provide abstractions for the combined rendering of lightweight (shape and canvas figures) and non-lightweigth (SWT widgets) objects for SWT. It is inspired by concepts of JavaFX and intended to replace the core of Draw2d. ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=410772 410772])
+
== Developer Resources ==
  
* [[GEF/GEF4/Layouts|  GEF4 Layouts]] (planned) - Will provide a data model for layout calculations as well as basic layout algorithms. Will be based on the contents of the <code>org.eclipse.draw2d.graph</code> package as well as on the SWT/JFace independent parts of the <code>org.eclipse.zest.core.layouts</code> plug-in.( [https://bugs.eclipse.org/bugs/show_bug.cgi?id=394219 394219])
+
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.
  
* [[Image:Progress.gif]][[GEF/GEF4/Zest | GEF4 Zest]] - Original Zest2 code base, already adopted to GEF4 namespace and versioning, integrated into GEF4 Git repository and update-site. Not yet adopted/re-modularized to depend on other GEF4 components only (i.e. still dependent on Draw2d 3.x). Will be split/re-modularized, some parts will for instance be moved to [[GEF/GEF4/Layouts | GEF4 Layouts]] components ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=372365 372365])
+
The reference documentation for each GEF4 component is referenced from within the [[#Components / Reference Documentation | components]] section.
  
== Bugs/Enhancements ==
+
== Further Reading ==
Bugzilla components (for those listed above) are created one by one as parts of the remaining code base are migrated. In addition, all bugs related to [[GEF/GEF4 | GEF4]] are prefixed <code>[GEF4]</code>. [https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&list_id=674650&short_desc=%5BGEF4%5D&short_desc_type=casesubstring&classification=Tools&product=GEF Here] is a list of all bugs currently related to [[GEF/GEF4 | GEF4]].
+
  
== Source Code ==
+
Further information about the history and current plans, as well as on technical details can be inferred from the following presentations/articles/posts:
The complete source code of [[GEF/GEF4 | GEF4]] is located in the [http://git.eclipse.org/c/gef/org.eclipse.gef4.git/ GEF4 Git repository]. For further information on how to obtain it and how set-up in order to contribute, please refer to the [[GEF/Contributor Guide | GEF Project Contributor Guide]].
+
* [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)]
 +
* [http://de.slideshare.net/AlexanderNyssen/gef4-our-mission-to-mars Alexander Nyßen (2014): GEF4 - Our mission to Mars, EclipseCon Europe, Ludwigsburg, 2014]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef4-there-there-sreallysomethinggoingon Alexander Nyßen (2014): GEF4 - There's really something going on!, EclipseCon NA, San Francisco (CA), 2014]
 +
* [[media:GEF4.pdf | Alexander Nyßen (2013): GEF4, RheinJug, Düsseldorf, 2013 ]], [https://lecture2go.uni-hamburg.de/veranstaltungen/-/v/15671 Video (German)]
 +
* [[media:GEF4_SwtFX.pdf | Alexander Nyßen (2013): GEF4 SwtFX (Lightning Talks), EclipseCon Europe, Ludwigsburg, 2013 ]]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef4-continue-to-share-and-enjoy Alexander Nyßen (2013): GEF4 - (Continue to) Share and Enjoy..., EclipseCon NA, Boston (MA), 2013]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef4-share-enjoy Alexander Nyßen (2012): GEF4 - Share And Enjoy..., EclipseCon Europe, Ludwigsburg, 2012]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef-past-present-and-future Alexander Nyßen (2012): GEF - Past, Present, and Future, EclipseCon NA, Reston (VA), 2012]
  
== Update Sites ==
 
A Tycho-based build infrastructure for the GEF4 provisional component has been configured under [https://hudson.eclipse.org/hudson/job/gef4-master https://hudson.eclipse.org/hudson/job/gef4-master]. The build job is triggered hourly in case of changes to the source code repository and further once per day. It produces an update-site, which does not get promoted to downloads.eclipse.org, but can directly be consumed from:
 
  
* [https://hudson.eclipse.org/hudson/job/gef4-master/lastSuccessfulBuild/artifact/update-site https://hudson.eclipse.org/hudson/job/gef4-master/lastSuccessfulBuild/artifact/update-site]
 
  
In addition to this, integration, milestones, and release builds are promoted to downloads.eclipse.org and can be found here:
 
  
* [http://download.eclipse.org/tools/gef/gef4/updates/integration http://download.eclipse.org/tools/gef/gef4/updates/integration]
 
* [http://download.eclipse.org/tools/gef/gef4/updates/milestones http://download.eclipse.org/tools/gef/gef4/updates/milestones]
 
* [http://download.eclipse.org/tools/gef/gef4/updates/releases http://download.eclipse.org/tools/gef/gef4/updates/releases]
 
  
Note that while integration builds are promoted automatically once per week (every friday), milestone and release builds are published only manually on the respective occasions (not yet). Further note that these update sites are merged (so old builds are preserved), while the nightly update site gets replaced on each build.
 
  
 
[[Category:GEF]]
 
[[Category:GEF]]

Revision as of 02:26, 2 June 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. An overview of the significant features added during the Mars release train can be found in the New and Noteworthy in 3.10. Information on earlier achievements can be inferred from the talks listed under further reading.

Having complete the migration of the Zest 2.x code base to GEF4 with Mars M6 (see #372365 for details), we have worked on closing parts of the remaining functional gap between GEF4 and GEF 3.x up to M7. From M7 onwards we are now concentrating on augmenting the javadoc and 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. You may also consult the Further Reading-section for additional information.

GEF4-Components.png

  • 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 (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 (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 (Coudio.UI) - 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