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 FX 0.1.0)
m
 
(45 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
* [http://www.eclipse.org/gef/newandnoteworthy/New-and-Noteworthy-30.html New and Noteworthy in 3.0]
 
* [http://www.eclipse.org/gef/newandnoteworthy/New-and-Noteworthy-35.html New and Noteworthy in 3.5]
 
* [[GEF/New and Noteworthy/3.6| New and Noteworthy in 3.6]]
 
* [[GEF/New and Noteworthy/3.7| New and Noteworthy in 3.7]]
 
* [[GEF/New and Noteworthy/3.8| New and Noteworthy in 3.8]]
 
* [[GEF/New and Noteworthy/3.9| New and Noteworthy in 3.9]]
 
  
== General ==
+
The "New & Noteworthy" pages have been migrated to GitHub:
  
The Eclipse 3.10.0 (Mars) release provides minor releases for the production components [https://www.eclipse.org/gef/draw2d/ Draw2d 3.x] (3.10.0), [https://www.eclipse.org/gef/gef_mvc/index.php GEF (MVC) 3.x] (3.10.0), and [https://www.eclipse.org/gef/zest/index.php Zest 1.x] (1.6.0), as well as a first release (0.1.0) of the new [[GEF/GEF4|GEF4]] components. It has to be pointed out that [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] production components are not further developed but only maintained, and that development is currently focussing the [[GEF/GEF4|GEF4]] alone.
+
* [https://github.com/eclipse/gef/blob/master/CHANGELOG.md#gef-3100-mars GEF@github.com CHANGELOG]
 
+
* [https://github.com/eclipse/gef-legacy/blob/master/CHANGELOG.md#gef-3100-mars GEF-Legacy@github.com CHANGELOG]
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 GEF4 components and detailed documentation on each can be found under [[GEF/GEF4 | GEF4]]. Here, only a short history and a list of the most significant changes, implemented during the Mars release timeframe, is given per component.
+
 
+
----
+
 
+
== Draw2d 3.10.0 ==
+
 
+
=== Tooltip Delay (3.10.0 M1) ===
+
<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 ==
+
 
+
=== Redoing Commands (M2) ===
+
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]).
+
 
+
----
+
 
+
== GEF4 Common 0.1.0 ==
+
 
+
The [[GEF/GEF4/Common |GEF4 Common]] component has been created by extracting generic parts 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.
+
 
+
=== Creation of Component (M1) ===
+
[[GEF/GEF4/Common | GEF4 Common]] component was created by extracting generic abstractions from [[GEF/GEF4/MVC | GEF4 MVC]] and [[GEF/GEF4/FX | GEF4 FX]], including some generic abstractions like <code>IActivatable</code>, <code>IAdaptable</code>, or <code>IPropertyChangeNotifier</code>, as well as related utility/support 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 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) ===
+
 
+
=== 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 ==
+
 
+
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.
+
 
+
----
+
 
+
== 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 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).
+
 
+
[[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 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 ==
+
 
+
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) ===
+
[[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.
+
 
+
=== Created Zest.FX and Zest.FX.UI as a replacement for Zest2 Core (M1) ===
+
 
+
=== 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 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 ==
+
 
+
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]]

Latest revision as of 10:18, 9 June 2017


The "New & Noteworthy" pages have been migrated to GitHub:

Back to the top