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
(Developer Resources)
(Add blog post link that documents Common Collections)
(10 intermediate revisions by one other user not shown)
Line 1: Line 1:
__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 code base as a replacement for 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] components, which are only maintained, but not actively developed further. Being developed in parallel, [[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.
  
[[GEF/GEF4 | GEF4]] is the unified effort of the [http://www.eclipse.org/gef Graphical Editing Framework (GEF)] project team to develop a new code base as a replacement for 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] (which are only maintained, but not actively developed further).  
+
== Current Status ==
 +
A first snapshot release (0.1.0) and a bugfix release (0.2.0), including incompatible changes, have been published as part of the [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. Information about important changes from 0.1.0 to 0.2.0 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]].
  
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.  
+
Currently, we are working on the [https://projects.eclipse.org/projects/tools.gef/releases/4.0.0-neon 4.0.0 (Neon)] release, which will contain a 1.0.0 release of the [[GEF/GEF4|GEF4]] [[#Developer Documentation|components]]. It will not be compatible to the Mars.1 (0.2.0) release and indeed includes major refactorings. Please refer to [[GEF/New_and_Noteworthy/4.0| New and Noteworthy in 4.0]] to keep updated about the most important changes.
  
== Current Status ==
+
== Developer Resources ==  
A first snapshot release (0.1.0) and a bugfix release (0.2.0), including incompatible changes, have been published as part of the [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. Information about important changes from 0.1.0 to 0.2.0 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 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]].
+
  
Currently, we are working on the [https://projects.eclipse.org/projects/tools.gef/releases/3.11.04.0.0-neon 3.11.0/4.0.0 (Neon)] release, which will either contain a 0.3.0 or a 1.0.0 release of the [[GEF/GEF4|GEF4]] [[#Components / Reference Documentation|components]]. In either case, the release will not be compatible to the Mars.1 (0.2.0) release and will indeed include major refactorings. Please refer to [[GEF/New_and_Noteworthy/3.11| New and Noteworthy in 3.11]] to keep updated about the most important changes.
+
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.
  
Please note that '''all [[GEF/GEF4|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/Adopter_Guide|GEF Adopter Guide]] or [[GEF/Contributor_Guide |GEF 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.
+
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].
  
== Components / Reference Documentation ==
+
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.
 +
 
 +
== Developer Documentation ==
 
[[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.
 
[[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.
  
 
[[Image:GEF4-Components.png|800px]]
 
[[Image:GEF4-Components.png|800px]]
 +
 +
''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]]).''
  
 
* [[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.
 
* [[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.
Line 42: Line 46:
 
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Cloudio/Examples#Examples.UI (undeployed)|<span style="color:#8A3572">Cloudio UI Examples</span>]].
 
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Cloudio/Examples#Examples.UI (undeployed)|<span style="color:#8A3572">Cloudio UI Examples</span>]].
  
== Developer Resources ==  
+
== User Documentation ==
 
+
The user documentation for the end-user tools provided by [[GEF/GEF4/DOT| GEF4 DOT]] and [[GEF/GEF4/Cloudio|GEF4 Cloudio]] in terms of a [[GEF/GEF4/DOT/User Guide|GEF4 DOT User Guide]] and [[GEF/GEF4/Cloudio/User Guide|GEF4 Cloudio User Guide]]. Both are quite 'sparse' at the moment.
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/Adopter Guide |GEF Adopter Guide]] that describes how to setup your environment to develop against GEF4. If you want to contribute to GEF4, the [[GEF/Contributor Guide |GEF Contributor Guide]] describes how to checkout and compile the sources, execute a headless Tycho-build, provide a patch, and more.
+
 
+
The reference documentation for each [[GEF/GEF4|GEF4]] component is referenced from within the [[#Components / Reference Documentation | components]] section. Each component documentation includes references to examples, where applicable.
+
  
 
== Further Reading ==
 
== 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:
 
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/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://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)]

Revision as of 23:28, 24 April 2016

GEF4 is the unified effort of the Graphical Editing Framework (GEF) project team to develop a new code base as a replacement for the Draw2d 3.x, GEF (MVC) 3.x, and Zest 1.x components, which are only maintained, but not actively developed further. Being developed in parallel, 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

A first snapshot release (0.1.0) and a bugfix release (0.2.0), including incompatible changes, have been published as part of the GEF 3.10.0 (Mars) and GEF 3.10.1 (Mars.1) releases. Information about important changes from 0.1.0 to 0.2.0 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.

Currently, we are working on the 4.0.0 (Neon) release, which will contain a 1.0.0 release of the GEF4 components. It will not be compatible to the Mars.1 (0.2.0) release and indeed includes major refactorings. Please refer to New and Noteworthy in 4.0 to keep updated about the most important changes.

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.
  • 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 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 API is demonstrated by undeployed Cloudio UI Examples.

User Documentation

The user documentation for the end-user tools provided by GEF4 DOT and GEF4 Cloudio in terms of a GEF4 DOT User Guide and GEF4 Cloudio User Guide. Both are quite 'sparse' at the moment.

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