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"

(Introduction of FXGridLayer (M2))
m
(31 intermediate revisions by 2 users not shown)
Line 18: Line 18:
  
 
=== Tooltip Delay (3.10.0 M1) ===
 
=== Tooltip Delay (3.10.0 M1) ===
TooltipHelper now allows clients to set the tooltip delay (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=323656 Bug #323656]).
+
<code>TooltipHelper</code> now allows clients to set the tooltip delay (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=323656 Bug #323656]).
  
 
== GEF (MVC) 3.10.0 ==  
 
== GEF (MVC) 3.10.0 ==  
  
 
=== Redoing Commands (M2) ===
 
=== Redoing Commands (M2) ===
Added Command#canRedo(), which by default delegates to #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 [https://bugs.eclipse.org/bugs/show_bug.cgi?id=332351 Bug #332351]).
+
Added <code>Command#canRedo()</code>, which by default delegates to <code>Command#canExecute()</code> but can be overwritten to decide whether a command is redoable or not. The <code>CommandStack</code> now evaluates this when checking of the command on its top can be redone (<code>CommandStack#canRedo()</code>) (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=332351 Bug #332351]).
  
 
== Zest 1.6.0 ==  
 
== Zest 1.6.0 ==  
  
 
== GEF4 Common 0.1.0 ==
 
== GEF4 Common 0.1.0 ==
 +
 +
=== Creation of Component (M1) ===
 +
GEF4 Common component was created by extracting generic components from GEF4 MVC and GEF4 FX, including some generic abstractions like <code>IActivatable</code>, <code>IAdaptable</code>, or <code>IPropertyChangeNotifier</code>, as well as related helper/utility classes.
 +
 +
=== Introduction of AdapterMap-Binding-Support (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 <code>IAdaptable</code>s.
 +
 +
=== 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]).
 +
 +
=== 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.
  
 
== GEF4 Geometry 0.1.0 ==
 
== GEF4 Geometry 0.1.0 ==
 +
 +
=== 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 ==
 
== GEF4 Graph 0.1.0 ==
 +
 +
=== Added methods to alter a Graph's nodes, edges, and attributes (M4) ===
 +
 +
=== 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) ===
  
 
== GEF4 Layout 0.1.0 ==
 
== GEF4 Layout 0.1.0 ==
 +
 +
=== 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 some Zest.Core layout examples (M5) ===
 +
The examples demonstrate different layout algorithms. Therefore they rather belong to the GEF4 Layout component. Moreover, the original examples use Zest.Core for the visualization, which is replaced by Zest.FX in the migrated examples.
  
 
== GEF4 DOT 0.1.0 ==
 
== GEF4 DOT 0.1.0 ==
 +
 +
=== Re-created DOT Graph Viewer 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).
 +
 +
=== 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).
 +
 +
=== Refactored tests and examples (M5) ===
 +
Mainly, unnecessary classes were removed and classes with similar purpose were merged.
  
 
== GEF4 FX 0.1.0 ==
 
== GEF4 FX 0.1.0 ==
  
=== Added of FXGridLayer (M2) ===
+
=== Integrated SwtFX as FX.UI (M1) ===
A new FXGridLayer is now provided, which can be used as a background layer.
+
Integrated and refactored SwtFX into FX.UI as part of the GEF4 FX component (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441464 Bug #441464]).  
  
=== Revision IFXAnchor API (M2) ===
+
=== Removed SwtFXScene (M1) ===
IFXAnchor#attach() and IFXAnchor#detach() now take an IAdaptable argument, which may be used to provide additional information to the specific anchor. In case of an FXChopBoxAnchor, this mechanism is used to pass in a ReferencePointProvider, thereby replicating the old FXChopBoxHelper mechanism. Furthermore, an ComputationStrategy interface has been extracted from the FXChopBoxAnchor (an implementation can be passed in via the FXChopBoxAnchor constructor), so the strategy, which is used to compute anchor positions, can be replaced.
+
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]).
  
=== Extraction of IFXConnectionRouter (M2) ===
+
=== Added FXGridLayer (M2) ===
An IFXConnectionRouter interface has been extracted from FXConnection. It can be passed in via FXConnection#setRouter() and is responsible of computing a curve geometry from the passed in (manually provided) waypoints of the connection.
+
A new <code>FXGridLayer</code> is now provided, which can be used as a background layer.
 +
 
 +
=== Revised IFXAnchor API (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 ==
 
== GEF4 MVC 0.1.0 ==
  
=== Added GridLayer and Implemented Snap-To-Grid (M2) ===
+
=== Added grid layer and implemented snap-to-grid support (M2) ===
 +
The <code>FXRootPart</code> now creates an <code>FXGridLayer</code> 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>.
  
 
=== Added support for hover handles (M3) ===
 
=== Added support for hover handles (M3) ===
 +
 +
=== Add 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) ===
 +
 +
=== Added support for creation of new content via the CreationPolicy (M4) ===
 +
The <code>CreationPolicy</code> uses the <code>ContentPolicy</code> to create new content. In the MVC example, a simple creation-menu is implemented which can be activated using the secondary mouse button.
 +
 +
[[Image:GEF4MVC-simple-creation-menu.png|Simple creation menu]]
  
 
== GEF4 Zest 0.1.0 ==
 
== GEF4 Zest 0.1.0 ==
 +
 +
=== Created Zest.FX and Zest.FX.UI as a replacement for Zest2 Core (M1) ===
  
 
=== Implemented Pruning/Unpruning of child nodes (M3) ===
 
=== Implemented Pruning/Unpruning of child nodes (M3) ===
  
== GEF4 Cloudio 0.1.0 ==  
+
=== Extract dependencies to GEF4 Layout into adapters (M4) ===
  
 +
=== Renamed "subgraph" to "pruning" (M4) ===
 +
The term "subgraph" does now refer to the combined rendering of multiple hidden nodes. Whereas "pruning" refers to hiding nodes, without visualizing them.
 +
 +
=== 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 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 o.e.g4.zest.fx.ui.jface, but the ZestContentViewer does also support the JFace ILabelProvider, IColorProvider, IFontProvider, and IToolTipProvider (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=441131 Bug #441131] for details).
 +
 +
== GEF4 Cloudio 0.1.0 ==
  
  
 
[[Category:GEF]]
 
[[Category:GEF]]

Revision as of 05:59, 26 March 2015

General

The Eclipse 3.10.0 (Mars) release provides minor releases for Draw2d (3.10.0), GEF (MVC) (3.10.0), and Zest (1.6.0), as well as initial versions (0.1.0) of all new GEF4 components.

All GEF4 components are purely provisional, that is no API is exposed yet. While the Common, Geometry, MVC components have been mostly written from scratch, the Graph, Layout, DOT, Zest, and Cloudio components are (at least partially) based on the former Zest2 code base. In contrast to the prior Zest2 code base, everything contributed to the 3.10.0 (Mars) release will be completely self-contained, i.e. none of the GEF4 components relies on API provided by Draw2d/GEF (MVC) 3.x, or Zest 1.x.

An overview of all GEF4 components and detailed documentation on each can be found under GEF4.

Draw2d 3.10.0

Tooltip Delay (3.10.0 M1)

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

GEF (MVC) 3.10.0

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

GEF4 Common 0.1.0

Creation of Component (M1)

GEF4 Common component was created by extracting generic components from GEF4 MVC and GEF4 FX, including some generic abstractions like IActivatable, IAdaptable, or IPropertyChangeNotifier, as well as related helper/utility classes.

Introduction of AdapterMap-Binding-Support (M1)

To combine the IAdaptable-mechanism with Google Guice-based dependency injection, a specific map-binding was introduced, which allows to inject adapters into IAdaptables.

Support for registering/querying adapters with parameterized types (M4)

Augmented IAdaptable to enable registration and retrieval of adapters based on TypeToken keys. This way, registration of adapters can not only be performed based on raw types (e.g. Provider.class) but also using parameterized types (e.g. Provider<IGeometry> or Provider<IFXAnchor>) (see Bug #453119).

Added IPropertyStore and PropertyStoreSupport (M4)

You can use an IPropertyStorey to manage properties for which changes can be observed using the IPropertyChangeNotifier mechanism.

GEF4 Geometry 0.1.0

Introduced support for computing nearest intersection w.r.t .to reference point (M2)

Extended the ICurve interface with a method (getNearestIntersection(ICurve, Point)) that allows to compute the intersection point with another ICurve nearest to some reference point. This is e.g. quite handy when computing anchor position within FXChopBoxAnchor.

GEF4 Graph 0.1.0

Added methods to alter a Graph's nodes, edges, and attributes (M4)

Added support for nested graphs (M4)

A Node can have a nested Graph assigned to it. The node containing the nested graph is referred to as the 'nesting node'.

Migrated GraphCopier from GEF4 Dot (M5)

GEF4 Layout 0.1.0

Cleaned-up layout interfaces (M4)

Moved the sugiyama-specific abstractions (LayerProvider, NodeWrapper, CrossingReducer) into the SugiyamaLayoutAlgorithm as nested classes. Removed the ExpandCollapseManager from the LayoutContext, as it is specific to the SpaceTreeLayoutAlgorithm.

Migrated some Zest.Core layout examples (M5)

The examples demonstrate different layout algorithms. Therefore they rather belong to the GEF4 Layout component. Moreover, the original examples use Zest.Core for the visualization, which is replaced by Zest.FX in the migrated examples.

GEF4 DOT 0.1.0

Re-created DOT Graph Viewer based on GEF4 Zest (M3)

Replacing the former Zest2 code within org.eclipse.gef4.zest.ui 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 Bug #441129 for details).

Refactored grammar definition and fixed parsing problems within DOT editor (M4)

Refactored grammar definition and fixed several parsing issues within DOT editor (see 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 Bug #450448 for details).

Added proper outline view for DOT editor (M4)

Implemented a proper outline view for the DOT editor (see Bug #452650 for details).

Refactored tests and examples (M5)

Mainly, unnecessary classes were removed and classes with similar purpose were merged.

GEF4 FX 0.1.0

Integrated SwtFX as FX.UI (M1)

Integrated and refactored SwtFX into FX.UI as part of the GEF4 FX component (see Bug #441464).

Removed SwtFXScene (M1)

Removed the need for specific SwtFXScene implementation by ensuring that FXControlAdapter (formerly SwtFXControlAdapter) can work with an arbitrary JavaFX Scene (see Bug #441463).

Added FXGridLayer (M2)

A new FXGridLayer is now provided, which can be used as a background layer.

Revised IFXAnchor API (M2)

IFXAnchor#attach() and IFXAnchor#detach() now take an additional IAdaptable argument, which may be used to provide additional information to the specific anchor. In case of an FXChopBoxAnchor, this mechanism is used to pass in a FXChopBoxAnchor$ReferencePointProvider, thereby replicating the old FXChopBoxHelper mechanism which involved direct coupling. Furthermore, an FXChopBoxAnchor$ComputationStrategy interface has been extracted from the FXChopBoxAnchor (an implementation can be passed in via its constructor), so the strategy, which is used to compute anchor positions, can be replaced (see Bug #442971, Bug #444009).

Introduced IFXConnectionRouter (M2)

An IFXConnectionRouter interface has been extracted from FXConnection. It can be passed in via FXConnection#setRouter() and is responsible of computing a curve geometry from the passed in (manually provided) waypoints of the connection (see 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, reveal(Node) functionality, fully controllable behavior, etc. .

GEF4 MVC 0.1.0

Added grid layer and implemented snap-to-grid support (M2)

The FXRootPart now creates an FXGridLayer as underlying layer by default. Visibility of the layer can be controlled via a GridModel, which is to be registered as an IViewer adapter. The GridModel 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 FXResizeRelocatePolicy and FXBendPoliy.

Added support for hover handles (M3)

Add support for transaction-based execution of operations (M3)

The IDomain now allows to open/close transactions, executing a set of related IUndoableOperation 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)

Added support for creation of new content via the CreationPolicy (M4)

The CreationPolicy uses the ContentPolicy to create new content. In the MVC example, a simple creation-menu is implemented which can be activated using the secondary mouse button.

Simple creation menu

GEF4 Zest 0.1.0

Created Zest.FX and Zest.FX.UI as a replacement for Zest2 Core (M1)

Implemented Pruning/Unpruning of child nodes (M3)

Extract dependencies to GEF4 Layout into adapters (M4)

Renamed "subgraph" to "pruning" (M4)

The term "subgraph" does now refer to the combined rendering of multiple hidden nodes. Whereas "pruning" refers to hiding nodes, without visualizing them.

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.

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 code base (Bug #438734) and opens a migration path for users of the previous API. Custom content and "label" providers are defined within o.e.g4.zest.fx.ui.jface, but the ZestContentViewer does also support the JFace ILabelProvider, IColorProvider, IFontProvider, and IToolTipProvider (see Bug #441131 for details).

GEF4 Cloudio 0.1.0

Back to the top