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"

(Implemented inline-rendering of nested graphs (M5))
m
 
(12 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 [https://projects.eclipse.org/projects/tools.gef/releases/3.10.0-mars GEF 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 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] production components are not further developed but only maintained, while development is currently focussing the [[GEF/GEF4|GEF4]].
+
* [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 [[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.
+
 
+
----
+
 
+
== Draw2d 3.10.0 ==
+
 
+
Only minor changes have been applied to the [https://www.eclipse.org/gef/draw2d/ Draw2d 3.x] production component, which is in maintenance mode.
+
 
+
=== 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 ==
+
 
+
Only minor changes have been applied to the [https://www.eclipse.org/gef/gef_mvc/index.php GEF (MVC) 3.x] production component, which is in maintenance mode.
+
 
+
=== 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]).
+
 
+
----
+
 
+
== Zest 1.6.0 ==
+
 
+
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 [[GEF/GEF4/DOT|GEF4 DOT]] <code>Graph</code> view was introduced, which is based on [[GEF/GEF4/Zest|GEF4 Zest]] 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 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|400px|Nesting node]]
+
 
+
=== Implemented rotation of nodes (M5) ===
+
 
+
=== Implemented inline-rendering of nested graphs (M5) ===
+
 
+
Nesting nodes will now render their nested nodes at a certain zoom threshold.
+
 
+
[[File:GEF4-Zest-InlineRenderingNestedGraphs.png|400px]]
+
 
+
=== Implemented navigating nested graphs with continuous zoom (M5) ===
+
 
+
=== 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 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]]

Latest revision as of 10:18, 9 June 2017


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

Back to the top