Jump to: navigation, search

GEF/New and Noteworthy/3.10


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'.

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.

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).

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).

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

GEF4 Cloudio 0.1.0