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/New and Noteworthy/3.10"

(GEF4 Zest 0.1.0)
(Removed GEF4 section, pointing to GitHub CHANGELOG instead.)
(17 intermediate revisions by one other user not shown)
Line 13: Line 13:
 
While [[GEF/GEF4/Common|GEF4 Common]], [[GEF/GEF4/Geometry|GEF4 Geometry]], [[GEF/GEF4/FX|GEF4 FX]], and [[GEF/GEF4/MVC|GEF4 MVC]] components have been mostly written from scratch, the [[GEF/GEF4/Graph|GEF4 Graph]], [[GEF/GEF4/Layout|GEF4 Layout]], [[GEF/GEF4/DOT|GEF4 DOT]], [[GEF/GEF4/Zest|GEF4 Zest]], and [[GEF/GEF4/Cloudio|GEF4 Clodio]] components are (at least partially) based on the former [[Tree_Views_for_Zest |Zest2]] code base. However, in contrast to it, everything contributed to the 3.10.0 (Mars) release is completely self-contained, i.e. all components have been migrated/re-written so that none them relies on the API provided by [https://www.eclipse.org/gef/draw2d/ Draw2d 3.x], [https://www.eclipse.org/gef/gef_mvc/index.php GEF (MVC) 3.x], or [https://www.eclipse.org/gef/zest/index.php Zest 1.x].  
 
While [[GEF/GEF4/Common|GEF4 Common]], [[GEF/GEF4/Geometry|GEF4 Geometry]], [[GEF/GEF4/FX|GEF4 FX]], and [[GEF/GEF4/MVC|GEF4 MVC]] components have been mostly written from scratch, the [[GEF/GEF4/Graph|GEF4 Graph]], [[GEF/GEF4/Layout|GEF4 Layout]], [[GEF/GEF4/DOT|GEF4 DOT]], [[GEF/GEF4/Zest|GEF4 Zest]], and [[GEF/GEF4/Cloudio|GEF4 Clodio]] components are (at least partially) based on the former [[Tree_Views_for_Zest |Zest2]] code base. However, in contrast to it, everything contributed to the 3.10.0 (Mars) release is completely self-contained, i.e. all components have been migrated/re-written so that none them relies on the API provided by [https://www.eclipse.org/gef/draw2d/ Draw2d 3.x], [https://www.eclipse.org/gef/gef_mvc/index.php GEF (MVC) 3.x], or [https://www.eclipse.org/gef/zest/index.php Zest 1.x].  
  
An overview of all [[GEF/GEF4|GEF4]] components and detailed documentation on each can be found under [[GEF/GEF4#Components / Reference Documentation | GEF4 reference documentation]]. Here, only a short history and a list of the most significant changes, implemented during the Mars release timeframe, is given per component.
+
An overview of all [[GEF/GEF4|GEF4]] components and detailed documentation on each can be found under [[GEF/GEF4#Components / Reference Documentation | GEF4 reference documentation]]. The most significant changes in the Mars release timeframe are documented in the [https://github.com/eclipse/gef/blob/master/CHANGELOG.md#gef-3100-mars GEF@github.com CHANGELOG].
  
 
----
 
----
Line 38: Line 38:
  
 
Only minor changes have been applied to the [https://www.eclipse.org/gef/zest/index.php Zest 1.x] production component, which is in maintenance mode.
 
Only minor changes have been applied to the [https://www.eclipse.org/gef/zest/index.php Zest 1.x] production component, which is in maintenance mode.
 
----
 
 
== GEF4 Common 0.1.0 ==
 
 
The [[GEF/GEF4/Common |GEF4 Common]] component has been created by extracting generic abstractions (e.g. <code>IActivatable</code>, <code>IAdaptable</code>, or <code>IPropertyChangeNotifier</code>) and supporting classes from the [[GEF/GEF4/MVC | GEF4 MVC]] and [[GEF/GEF4/FX | GEF4 FX]] during the 3.10 development stream. It provides functionality that is (potentially) used by all other components and was basically written from scratch.
 
 
=== Added support for AdapterMap-Bindings (M1) ===
 
To combine the <code>IAdaptable</code>-mechanism with Google Guice-based dependency injection, a specific map-binding was introduced, which allows to inject adapters into an <code>IAdaptable</code> (see [http://nyssen.blogspot.de/2014/11/iadaptable-gef4s-interpretation-of.html 'IAdaptable - GEF4's interpretation of a classic'] for details).
 
 
=== Added support for registering/querying adapters with parameterized types (M4) ===
 
Augmented <code>IAdaptable</code> to enable registration and retrieval of adapters based on <code>TypeToken</code> keys. This way, registration of adapters can not only be performed based on raw types (e.g. <code>Provider.class</code>) but also using parameterized types (e.g. <code>Provider<IGeometry></code> or <code>Provider<IFXAnchor></code>) (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=453119 Bug #453119] and [http://nyssen.blogspot.de/2014/11/iadaptable-gef4s-interpretation-of.html 'IAdaptable - GEF4's interpretation of a classic'] for details).
 
 
=== Added IPropertyStore and PropertyStoreSupport (M4) ===
 
You can use an <code>IPropertyStorey</code> to manage properties for which changes can be observed using the <code>IPropertyChangeNotifier</code> mechanism.
 
 
=== Added support for Guice-based scoping of instances to IAdaptables (M5) ===
 
Implemented a specific Guice <code>Scope</code> (<code>AdaptableScope</code>) that allows to (transitively) scope instances to <code>IAdaptable</code>s (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=458320 Bug #458320]).
 
 
----
 
 
== GEF4 Geometry 0.1.0 ==
 
 
The [[GEF/GEF4/Geometry |GEF4 Geometry]] component has been written from scratch to provide a decent double-based geometry API, as a replacement to the geometry classes provided by [https://www.eclipse.org/gef/draw2d/ Draw2d 3.x].
 
 
=== Introduced support for computing nearest intersection w.r.t .to reference point (M2) ===
 
Extended the <code>ICurve</code> interface with a method (<code>getNearestIntersection(ICurve, Point)</code>) that allows to compute the intersection point with another <code>ICurve</code> nearest to some reference point. This is e.g. quite handy when computing anchor position within <code>FXChopBoxAnchor</code>.
 
 
----
 
 
== GEF4 Graph 0.1.0 ==
 
 
The [[GEF/GEF4/Graph |GEF4 Graph]] component has been factored out of the [[Tree_Views_for_Zest |Zest2]] code base (DOT4Zest).
 
 
=== Added methods to alter a Graph's nodes, edges, and attributes (M4) ===
 
 
Changed that a constructed <code>Graph</code> is immmutable. The limitation of read-only access had prevented use cases of [[GEF/GEF4/Zest|GEF4 Zest]] and [[GEF/GEF4/DOT|GEF4 DOT]], where a constructed <code>Graph</code> had to be modified after its initial construction.
 
 
=== Added support for nested graphs (M4) ===
 
A <code>Node</code> can have a nested <code>Graph</code> assigned to it. The node containing the nested graph is referred to as the 'nesting node'.
 
 
=== Migrated GraphCopier from GEF4 DOT (M5) ===
 
 
The <code>GraphCopier</code> that was initially bundled within DOT as <code>ZestGraphImport</code> was moved to [[GEF/GEF4/Graph|GEF4 Graph]], as it provides generic capabilities to copy <code>Graph</code> instances and is not bound to [[GEF/GEF4/Zest|GEF4 Zest]] or [[GEF/GEF4/DOT|GEF4 DOT]].
 
----
 
 
== GEF4 Layout 0.1.0 ==
 
 
The [[GEF/GEF4/Layout |GEF4 Layout]] component was factored out of the former [[Tree_Views_for_Zest |Zest2]] code base (<code>org.eclipse.gef4.zest.layouts</code>), which was initially created by forking [https://www.eclipse.org/gef/zest/ Zest 1.x] (<code>org.eclipse.zest.layouts</code>). It has been significantly refactored within this process.
 
 
=== Cleaned-up layout interfaces (M4) ===
 
Moved the sugiyama-specific abstractions (<code>LayerProvider</code>, <code>NodeWrapper</code>, <code>CrossingReducer</code>) into the <code>SugiyamaLayoutAlgorithm</code> as nested classes. Removed the <code>ExpandCollapseManager</code> from the <code>LayoutContext</code>, as it is specific to the <code>SpaceTreeLayoutAlgorithm</code>.
 
 
=== Migrated Zest.Core layout examples (M5) ===
 
The examples demonstrate different layout algorithms. Therefore they rather belong to the [[GEF/GEF4/Layout |GEF4 Layout]] component. Moreover, the original examples used zest.core for the visualization, which is replaced by Zest.FX in the migrated examples.
 
 
[[File:GEF4-Layout-SpringLayoutExample.png|400px]]
 
 
----
 
 
== GEF4 DOT 0.1.0 ==
 
 
The [[GEF/GEF4/DOT |GEF4 DOT]] component has been factored out of the [[Tree_Views_for_Zest |Zest2]] code base (DOT4Zest) and has been migrated to be based on [[GEF/GEF4/Zest|GEF4 Zest]].
 
 
=== Re-created DOT Graph view based on GEF4 Zest (M3) ===
 
Replacing the former Zest2 code within <code>org.eclipse.gef4.zest.ui</code> that still depended on Draw2d, a new GEF4 DOT Graph Viewer was introduced, which is based on Zest.FX and Zest.FX.UI and thus uses JavaFX for visualization purposes (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441129 Bug #441129] for details).
 
 
[[Image:GEF4-DOT-GraphView.png|400px]]
 
 
=== Refactored grammar definition and fixed parsing problems within DOT editor (M4) ===
 
Refactored grammar definition and fixed several parsing issues within DOT editor (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=451097 Bug #451097] for details).
 
 
=== Added concise lexical and semantic syntax coloring to DOT editor (M4) ===
 
Add proper support for lexical and semantic syntax coloring within DOT editor (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=450448 Bug #450448] for details).
 
 
=== Added proper outline view for DOT editor (M4) ===
 
Implemented a proper outline view for the DOT editor (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=452650 Bug #452650] for details).
 
 
[[Image:DotEditor.png|600px]]
 
 
=== Refactored tests and examples (M5) ===
 
Mainly, unnecessary classes were removed and classes with similar purpose were merged.
 
 
----
 
 
== GEF4 FX 0.1.0 ==
 
 
The [[GEF/GEF4/FX|GEF4 FX]] component has been written from scratch to replace the [https://eclipse.org/gef/draw2d/index.php Draw2d 3.x] production component. Parts of it were provided as a distinct ''SwtFx'' component up to M1 (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441464 Bug #441464]), when the code was merged in as the ''FX.UI'' module. It uses JavaFX for visualization and provides support for integrating JavaFX into SWT. A lightweight rendering support for SWT (as provided by Draw2d is not part of this component).
 
 
=== Removed SwtFXScene (M1) ===
 
Removed the need for specific SwtFXScene implementation by ensuring that <code>FXControlAdapter</code> (formerly <code>SwtFXControlAdapter</code>) can work with an arbitrary JavaFX <code>Scene</code> (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441463 Bug #441463]).
 
 
=== Revised IFXAnchor (M2) ===
 
<code>IFXAnchor#attach()</code> and <code>IFXAnchor#detach()</code> now take an additional <code>IAdaptable</code> argument, which may be used to provide additional information to the specific anchor. In case of an <code>FXChopBoxAnchor</code>, this mechanism is used to pass in a <code>FXChopBoxAnchor$ReferencePointProvider</code>, thereby replicating the old <code>FXChopBoxHelper</code> mechanism which involved direct coupling. Furthermore, an <code>FXChopBoxAnchor$ComputationStrategy</code> interface has been extracted from the <code>FXChopBoxAnchor</code> (an implementation can be passed in via its constructor), so the strategy, which is used to compute anchor positions, can be replaced (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=442971 Bug #442971], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=444009 Bug #444009]).
 
 
=== Introduced IFXConnectionRouter (M2) ===
 
An <code>IFXConnectionRouter</code> interface has been extracted from <code>FXConnection</code>. It can be passed in via <code>FXConnection#setRouter()</code> and is responsible of computing a curve geometry from the passed in (manually provided) waypoints of the connection (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=443781 Bug #443781]).
 
 
=== Introduced ScrollPaneEx (M5) ===
 
The ScrollPaneEx is an alternative to JavaFX's ScrollPane. The ScrollPaneEx provides a set-up which is suitable for graphical viewers/editors, i.e. an "infinite" canvas with viewport transformation, <code>reveal(Node)</code> functionality, fully controllable behavior, etc.
 
 
----
 
 
== GEF4 MVC 0.1.0 ==
 
 
The [[GEF/GEF4/MVC|GEF4 MVC]] component has been written from scratch to replace the [https://eclipse.org/gef/gef_mvc/index.php GEF (MVC) 3.x] production component. While some proven concepts have been adopted, the component is a complete re-design.
 
 
=== Added grid layer and implemented snap-to-grid support (M2) ===
 
The <code>FXRootPart</code> now creates an <code>FXGridLayer</code> (which was added to the [[GEF/GEF4/FX|GEF4/FX]] component) as underlying layer by default. Visibility of the layer can be controlled via a <code>GridModel</code>, which is to be registered as an <code>IViewer</code> adapter. The <code>GridModel</code> allows to select the grid cell height and width and whether the grid is to be zoomed with the contents layer or not. It can also be used to enable/disable snap-to-grid, which is respected by the <code>FXResizeRelocatePolicy</code> and <code>FXBendPoliy</code>.
 
 
[[File:GEF_MVC_Logo_Example_Grid.png|250px|FXGridLayer integrated in GEF4 MVC Logo example]]
 
 
=== Added support for hover handles (M3) ===
 
 
To enable that handles are only displayed during mouse hover (and a short delay after), <code>FXHoverBehavior</code> and the <code>FXDefaultHandlePartFactory</code> now support the creation (and automatic removal) of hover handles.
 
 
[[File:GEF_Zest_Graph_Example_HoverHandle.png|100px|Hover handle integrated in GEF4 Zest Graph example]]
 
 
=== Added support for transaction-based execution of operations (M3) ===
 
The <code>IDomain</code> now allows to open/close transactions, executing a set of related <code>IUndoableOperation</code> as an atomic (composite) operation. This way, several (transaction) policies can independently execute operations during an interaction, while undo/redo is performed for the overall transaction.
 
 
=== Introduced ContentPolicy and moved responsibility for content operations into IContentPart (M3) ===
 
Introduced <code>ContentPolicy</code> to formalize that parts of the interaction that affects the content (i.e. the to be visualized model). The content <code>ContentPolicy</code> provides undoable operations to add child content to a parent, to anchor content on other content, etc. All these operations delegate to the respective host <code>IContentPart</code>. As the respective content parts have to be implemented by adopters anyway, the model visualization and model manipulation related code can be kept in a single place (namely within the <code>IContentPart</code>). Furthermore, the <code>ContentPolicy</code> is generic and can be re-used independently.
 
 
=== Added support for content creation (M4, M7) ===
 
The <code>CreationPolicy</code> uses the <code>ContentPolicy</code> to create new content. In the MVC logo example, a simple creation-menu is integrated, which can be activated using the secondary mouse button (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=455495 #45495]).
 
 
[[Image:GEF4MVC-simple-creation-menu.png|250px| Creation menu integrated in GEF4 MVC Logo example]]
 
 
The MVC logo example furthermore demonstrates creation of connections via hover handles (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=445847 #445847]).
 
 
[[Image:GEF4-MVC-hover-handle-creation.png|250px| Hover handle for connection creation in GEF4 MVC Logo example]][[Image:GEF4-MVC-connection-creation.png|250px| Connection created via hover handle in GEF4 MVC Logo example]]
 
 
=== Added support for gesture-based interactions (M5, M7) ===
 
[[GEF/GEF4/MVC | MVC.FX]] offers support for pinch-spread, scroll, and rotate-gestures. The MVC logo example demonstrates gesture-based panning/scrolling, zooming, and rotating (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=449129 Bug #449129] and [https://bugs.eclipse.org/bugs/show_bug.cgi?id=462787 Bug #462787]).
 
----
 
 
== GEF4 Zest 0.1.0 ==
 
 
The [[GEF/GEF4/Zest |GEF4 Zest]] component has been basically re-written from scratch to replace the [https://www.eclipse.org/gef/zest/ Zest 1.x] production component, as well as the intermediary replacement in the form of the [[Tree_Views_for_Zest |Zest2]] code base (<code>org.eclipse.gef4.zest.core</code> and <code>org.eclipse.gef4.zest.jface</code>), which was initially created by forking [https://www.eclipse.org/gef/zest/ Zest 1.x] (<code>org.eclipse.zest.core</code>). It is now based on [[GEF/GEF4/Graph|GEF4 Graph]], [[GEF/GEF4/Layout|GEF4 Layout]], which were factored out of the [[Tree_Views_for_Zest |Zest2]] code base, and uses [[GEF/GEF4/MVC|GEF4 MVC]] as the underlying model-view-controller framework.
 
 
=== Implemented replacement API for zest.core (M6) ===
 
Re-implemented the functionality of zest.core within [[GEF/GEF4/Zest#Zest.FX|Zest.FX]] and [[GEF/GEF4/Zest#Zest.FX.UI|Zest.FX.UI]] modules (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=438734 Bug #438734] for details).
 
 
=== Implemented Pruning/Unpruning of child nodes (M3) ===
 
 
=== Implemented navigating nested graphs (M4) ===
 
Only one level of a hierarchy is rendered as once, but you can open a nested graph by double clicking the corresponding node.
 
 
[[Image:GEF4Zest-nesting-node.png|Nesting node]]
 
 
=== Implemented rotation of nodes (M5) ===
 
 
=== Implemented rendering of nested graphs (M5) ===
 
 
=== Implemented navigating nested graphs with continuous zoom (M5) ===
 
 
=== Implemented a replacement API for zest.jface (M6) ===
 
This completes the migration of the Zest 2 code base ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=438734 Bug #438734]) and opens a migration path for users of the previous API. Custom content and "label" providers are defined within <code>org.eclipse.gef4.zest.fx.ui.jface</code>, but the ZestContentViewer does also support the JFace <code>ILabelProvider</code>, <code>IColorProvider</code>, <code>IFontProvider</code>, and <code>IToolTipProvider</code> (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441131 Bug #441131] for details).
 
 
----
 
 
== GEF4 Cloudio 0.1.0 ==
 
 
The [[GEF/GEF4/Cloudio |GEF4 Cloudio]] component has been factored out of the [[Tree_Views_for_Zest |Zest2]] code base (Cloudio) into a standalone component. It does not rely on other [[GEF/GEF4|GEF4]] components and was not yet migrated to use JavaFX for rendering.
 
  
 
[[Category:GEF]]
 
[[Category:GEF]]

Revision as of 05:01, 14 May 2017

General

The GEF 3.10.0 (Mars) release provides minor releases for the production components Draw2d 3.x (3.10.0), GEF (MVC) 3.x (3.10.0), and Zest 1.x (1.6.0), as well as a first release (0.1.0) of the new GEF4 components. It has to be pointed out that the Draw2d 3.x, GEF (MVC) 3.x, and Zest 1.x production components are not further developed but only maintained, while development is currently focussing the GEF4.

While GEF4 Common, GEF4 Geometry, GEF4 FX, and GEF4 MVC components have been mostly written from scratch, the GEF4 Graph, GEF4 Layout, GEF4 DOT, GEF4 Zest, and GEF4 Clodio components are (at least partially) based on the former Zest2 code base. However, in contrast to it, everything contributed to the 3.10.0 (Mars) release is completely self-contained, i.e. all components have been migrated/re-written so that none them relies on the API provided by Draw2d 3.x, GEF (MVC) 3.x, or Zest 1.x.

An overview of all GEF4 components and detailed documentation on each can be found under GEF4 reference documentation. The most significant changes in the Mars release timeframe are documented in the GEF@github.com CHANGELOG.


Draw2d 3.10.0

Only minor changes have been applied to the Draw2d 3.x production component, which is in maintenance mode.

Tooltip Delay (3.10.0 M1)

TooltipHelper now allows clients to set the tooltip delay (see Bug #323656).


GEF (MVC) 3.10.0

Only minor changes have been applied to the GEF (MVC) 3.x production component, which is in maintenance mode.

Redoing Commands (M2)

Added Command#canRedo(), which by default delegates to Command#canExecute() but can be overwritten to decide whether a command is redoable or not. The CommandStack now evaluates this when checking of the command on its top can be redone (CommandStack#canRedo()) (see Bug #332351).


Zest 1.6.0

Only minor changes have been applied to the Zest 1.x production component, which is in maintenance mode.

Back to the top