Jump to: navigation, search

Difference between revisions of "GEF/GEF4"

< GEF
 
(160 intermediate revisions by 3 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.  
+
[[GEF/GEF4 | GEF4]] is the fourth generation API of the [http://www.eclipse.org/gef Graphical Editing Framework (GEF)]. It supersedes the [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] legacy components, which are not developed further but only maintained. [[GEF/GEF4 | GEF4]] is set up in terms of smaller, more lightweight [[#Developer 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.  
  
 
== 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 nearing completion, 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 can be migrated, after it GEF (MFC).
+
We are currently working on the [https://projects.eclipse.org/projects/tools.gef/releases/4.1.0-neon.1 4.1.0 (Neon.1)] and [https://projects.eclipse.org/projects/tools.gef/releases/5.0.0-oxygen 5.0.0 (Oxygen)] releases. Please note that for Oxygen, all [[GEF/GEF4 | GEF4]] components will be migrated back to the original GEF namespace (changing their versions to 5.0.0), and the project documentation will be moved from this wiki to [https://github.com/eclipse/gef/wiki GitHub].
  
Additional information about current status and plans can also be found here:
+
The latest published release is [https://projects.eclipse.org/projects/tools.gef/releases/4.0.0-neon 4.0.0 (Neon)], which includes 1.0.0 versions of all [[GEF/GEF4|GEF4]] [[#Developer Documentation|components]]. Please note that these are not compatible to the 0.1.0 and 0.2.0 versions provided as part of the preceding [http://projects.eclipse.org/projects/tools.gef/releases/3.10.0-mars GEF 3.10.0 (Mars)] and [https://projects.eclipse.org/projects/tools.gef/releases/3.10.1-mars.1 GEF 3.10.1 (Mars.1)] releases. Please refer to [[GEF/New_and_Noteworthy/4.0| New and Noteworthy in 4.0]] to be informed about the most important changes.
* [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]
+
  
== Components ==
+
If you are still interested in information about changes from 0.1.0 to 0.2.0, these can be found in [[GEF/New_and_Noteworthy/3.10.1 | New and Noteworthy in 3.10.1]]. An overview of all significant features added earlier during the Mars release train can in addition be found in [[GEF/New_and_Noteworthy/3.10| New and Noteworthy in 3.10]]. Information on earlier achievements and plans can be inferred from the talks listed under [[#Further Reading|Further Reading]].
  
* [[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])
+
== Developer Resources ==  
* [[Image:Progress.gif]][[GEF/GEF4/Graphics | GEF4 Graphics]] - Provides toolkit-independent support for rendering planar geometries, images, and text. Up to now, rendering is supported on SWT (through GC) and on AWT (through Graphics2D) widgets. JavaFX-support is planned. ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=386029 386029])
+
* [[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])
+
  
* [[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 migrated/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])
+
As an [https://www.eclipse.org/projects/dev_process/#2_3_Three_Communities adopter], please consult the [[GEF/Adopter Guide |GEF Adopter Guide]] that describes in a step-by-step manner how to setup your environment in order to develop your client code against GEF4. As a [https://www.eclipse.org/projects/dev_process/#2_3_Three_Communities contributor/committer], please consult the [[GEF/Contributor Guide |GEF Contributor Guide]] that describes how to checkout and compile the sources, execute a headless Tycho-build, provide a patch, and more.
  
== Bugs/Enhancements ==
+
In either case, all relevant information about where 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].
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 ==
+
The developer documentation for each GEF4 component is referenced from within the [[#Developer Documentation | developer documentation]] section on this page. Each component documentation includes references to examples, where applicable.
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]].
+
  
== Update Sites ==
+
== Developer Documentation ==
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:
+
[[GEF/GEF4|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.
  
* [https://hudson.eclipse.org/hudson/job/gef4-master/lastSuccessfulBuild/artifact/update-site https://hudson.eclipse.org/hudson/job/gef4-master/lastSuccessfulBuild/artifact/update-site]
+
[[Image:GEF4-Components.png|800px]]
  
In addition to this, integration, milestones, and release builds are promoted to downloads.eclipse.org and can be found here:
+
''The naming of the components' sub-modules indicate their UI-toolkit and Eclipse UI dependencies. That is, module names containing '.SWT', '.JFace', or '.FX' indicate a respective dependency to SWT, JFace, or JavaFX. Module names containing '.UI' indicate a dependency to the Eclipse UI. Please not that '.FX' is only used to indicate dependencies on the JavaFX UI toolkit and that JavaFX [http://docs.oracle.com/javase/8/javafx/collections-tutorial/collections.htm#JFXCL107 collections] and [http://www.oracle.com/pls/topic/lookup?ctx=javase80&id=JFXBD107 properties] are used throughout (except by [[GEF/GEF4/Geometry | GEF4 Geometry]] and [[GEF/GEF4/Cloudio|GEF4 Cloudio]]).''
  
* [http://download.eclipse.org/tools/gef/gef4/updates/integration http://download.eclipse.org/tools/gef/gef4/updates/integration]
+
* [[GEF/GEF4/Common | <span style="color:#5B8E92">GEF4 Common (Common)</span>]] - Provides basic abstractions and infrastructure used by (potentially) all other [[GEF/GEF4|GEF4]] components, including an enhanced [http://nyssen.blogspot.de/2014/11/iadaptable-gef4s-interpretation-of.html adaptable pattern] and notification support.
* [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.
+
* [[GEF/GEF4/Geometry | <span style="color:#268558">GEF4 Geometry (Geometry / Geometry.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).
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Geometry/Examples#Examples (undeployed)|<span style="color:#268558">Geometry Examples</span>]].
 +
 
 +
* [[GEF/GEF4/FX | <span style="color:#4C6084">GEF4 FX (FX / FX.SWT / FX.JFace)</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).
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/FX/Examples#Examples (undeployed)|<span style="color:#4C6084">FX Examples</span>]] and [[GEF/GEF4/FX/Examples#Examples.SWT (undeployed)|<span style="color:#4C6084">FX SWT Examples</span>]].
 +
 
 +
* [[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 data model by [[GEF/GEF4/DOT | GEF4 DOT]] and underlying visualization-model for [[GEF/GEF4/Zest | GEF4 Zest]].
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Graph/Examples#Examples (undeployed) | <span style="color:#960607">Graph Examples</span>]].
 +
 
 +
* [[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.
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Layout/Examples|<span style="color:#7C866A">Layout Examples</span>]].
 +
 
 +
* [[GEF/GEF4/MVC | <span style="color:#05124E">GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI)</span>]] - Provides 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.
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by a bundled [[GEF/GEF4/MVC/Examples#Logo Example (Standalone, Eclipse UI, Web)|<span style="color:#05124E">MVC Logo Example</span>]], which is available as a standalone application, an Eclipse Workbench UI integrated view, as well as a JNLP-based web application.
 +
 
 +
* [[GEF/GEF4/Zest | <span style="color:#206FAD">GEF4 Zest (Zest.FX / Zest.FX.JFace / Zest.FX.UI)</span>]] - Provides support for visualization of [[GEF/GEF4/Graph | GEF4 Graph]]-based models, integrating automated layout based on [[GEF/GEF4/Layout | GEF4 Layout]]. Internally built on [[GEF/GEF4/FX|GEF4 FX]] and [[GEF/GEF4/MVC|GEF4 MVC]].
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by a bundled [[GEF/GEF4/Zest/Examples#Graph Example (Standalone, Eclipse UI)|<span style="color:#206FAD">Zest Graph Example</span>]], which is available as a standalone application and an Eclipse Workbench UI integrated view, as well as undeployed [[GEF/GEF4/Zest/Examples#Examples (undeployed)|<span style="color:#206FAD">Zest Examples</span>]] and [[GEF/GEF4/Zest/Examples#Examples.JFace (undeployed)|<span style="color:#206FAD">Zest JFace Examples</span>]].
 +
 
 +
* [[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.
 +
: [[File:Idea.png|12px]] Usage of (still internal) API is demonstrated by undeployed [[GEF/GEF4/DOT/Examples#Examples (undeployed)|<span style="color:#561D8E">DOT Examples</span>]].
 +
 
 +
* [[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.
 +
: [[File:Idea.png|12px]] Usage of (still internal) API is demonstrated by undeployed [[GEF/GEF4/Cloudio/Examples#Examples.UI (undeployed)|<span style="color:#8A3572">Cloudio UI Examples</span>]].
 +
 
 +
== User Documentation ==
 +
The user documentation for the [[GEF/GEF4/DOT| GEF4 DOT]] and [[GEF/GEF4/Cloudio|GEF4 Cloudio]] end-user tools is provided in terms of a [[GEF/GEF4/DOT/User Guide|GEF4 DOT User Guide]] and [[GEF/GEF4/Cloudio/User Guide|GEF4 Cloudio User Guide]].
 +
 
 +
== 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://nyssen.blogspot.de/2016/04/gef4-common-collections-and-properties.html Alexander Nyßen (2016): GEF4 Common Collections and Properties - Guava goes FX, ANy's Argument (Blog)]
 +
* [http://de.slideshare.net/AlexanderNyssen/gef4-sightseeing-mars Alexander Nyßen (2015): GEF4 - Sightseeing Mars, EclipseCon Europe, Ludwigsburg, 2015]
 +
*[http://nyssen.blogspot.de/2015/06/gef4-mission-to-mars-accomplished.html Alexander Nyßen (2015): GEF4 - Mission to Mars Accomplished!, ANy's Argument (Blog)] 
 +
*[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 Talk), 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]
  
 
[[Category:GEF]]
 
[[Category:GEF]]

Latest revision as of 21:39, 25 July 2016

GEF4 is the fourth generation API of the Graphical Editing Framework (GEF). It supersedes the Draw2d 3.x, GEF (MVC) 3.x, and Zest 1.x legacy components, which are not developed further but only maintained. 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.

Current Status

We are currently working on the 4.1.0 (Neon.1) and 5.0.0 (Oxygen) releases. Please note that for Oxygen, all GEF4 components will be migrated back to the original GEF namespace (changing their versions to 5.0.0), and the project documentation will be moved from this wiki to GitHub.

The latest published release is 4.0.0 (Neon), which includes 1.0.0 versions of all GEF4 components. Please note that these are not compatible to the 0.1.0 and 0.2.0 versions provided as part of the preceding GEF 3.10.0 (Mars) and GEF 3.10.1 (Mars.1) releases. Please refer to New and Noteworthy in 4.0 to be informed about the most important changes.

If you are still interested in information about changes from 0.1.0 to 0.2.0, these can be found in New and Noteworthy in 3.10.1. An overview of all significant features added earlier during the Mars release train can in addition be found in New and Noteworthy in 3.10. Information on earlier achievements and plans can be inferred from the talks listed under Further Reading.

Developer Resources

As an adopter, please consult the GEF Adopter Guide that describes in a step-by-step manner how to setup your environment in order to develop your client code against GEF4. As a contributor/committer, please consult the GEF Contributor Guide that describes how to checkout and compile the sources, execute a headless Tycho-build, provide a patch, and more.

In either case, all relevant information about where 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.

The developer documentation for each GEF4 component is referenced from within the developer documentation section on this page. Each component documentation includes references to examples, where applicable.

Developer 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

The naming of the components' sub-modules indicate their UI-toolkit and Eclipse UI dependencies. That is, module names containing '.SWT', '.JFace', or '.FX' indicate a respective dependency to SWT, JFace, or JavaFX. Module names containing '.UI' indicate a dependency to the Eclipse UI. Please not that '.FX' is only used to indicate dependencies on the JavaFX UI toolkit and that JavaFX collections and properties are used throughout (except by GEF4 Geometry and GEF4 Cloudio).

Idea.png Usage of API is demonstrated by undeployed Geometry Examples.
  • GEF4 FX (FX / FX.SWT / FX.JFace) - 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).
Idea.png Usage of API is demonstrated by undeployed FX Examples and FX SWT Examples.
  • GEF4 Graph (Graph) - Provides a simply, UI-independent data-model (Graph, Node, Edge) for representing directed graphs. Is used as data model by GEF4 DOT and underlying visualization-model for GEF4 Zest.
Idea.png Usage of API is demonstrated by undeployed Graph Examples.
  • GEF4 Layout (Layout) - Provides layout algorithm implementations as well as a model facade to adapt layout model data for these algorithms.
Idea.png Usage of API is demonstrated by undeployed Layout Examples.
  • GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI) - Provides 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.
Idea.png Usage of API is demonstrated by a bundled MVC Logo Example, which is available as a standalone application, an Eclipse Workbench UI integrated view, as well as a JNLP-based web application.
Idea.png Usage of API is demonstrated by a bundled Zest Graph Example, which is available as a standalone application and an Eclipse Workbench UI integrated view, as well as undeployed Zest Examples and Zest JFace Examples.
Idea.png Usage of (still internal) API is demonstrated by undeployed DOT Examples.
  • 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.
Idea.png Usage of (still internal) API is demonstrated by undeployed Cloudio UI Examples.

User Documentation

The user documentation for the GEF4 DOT and GEF4 Cloudio end-user tools is provided in terms of a GEF4 DOT User Guide and GEF4 Cloudio User Guide.

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: