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/4.0"

(= Revised DynamicAnchor (M7))
(34 intermediate revisions by one other user not shown)
Line 15: Line 15:
 
''As declared in the [https://projects.eclipse.org/projects/tools.gef/releases/4.0.0-neon/plan project plan], the decision about contributing GEF4 in version 1.0.0 (instead of 0.3.0) and an overall 4.0.0 release (instead of 3.11.0) was postponed up to M5. That is, Bugzilla entries commented before Neon M6 will refer to a 3.11.0 release and milestone contributions (including M5) include GEF4 components in version 0.3.0.''
 
''As declared in the [https://projects.eclipse.org/projects/tools.gef/releases/4.0.0-neon/plan project plan], the decision about contributing GEF4 in version 1.0.0 (instead of 0.3.0) and an overall 4.0.0 release (instead of 3.11.0) was postponed up to M5. That is, Bugzilla entries commented before Neon M6 will refer to a 3.11.0 release and milestone contributions (including M5) include GEF4 components in version 0.3.0.''
  
Please note that several incompatible changes to the (up to 0.2.0 provisional) API of GEF4 were made. The list of added and removed classes can be found at [https://www.eclipse.org/gef/project-info/GEF4-0.2.0-0.3.0M5-Provisional-API-Diff.html]. The most notable API changes are outlined below, marking incompatible ones with [INCOMPATIBLE CHANGE].
+
Please note that several incompatible changes to the (up to 0.2.0 provisional) API of GEF4 were made. The list of added and removed classes can be found at [https://www.eclipse.org/gef/project-info/GEF4-0.2.0-0.3.0M5-Provisional-API-Diff.html]. The most notable API changes are outlined below.
  
 
----
 
----
  
== GEF4 FX (1.0.0) ==
+
== GEF4 Common (1.0.0) ==
  
=== (Most) Significant API Changes ===
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=484774 #484774] As outlined in detail in [http://nyssen.blogspot.de/2016/04/gef4-common-collections-and-properties.html 'GEF4 Collections and Properties - Guava goes FX'] the property notification support provided by [[GEF/GEF4/Common |GEF4 Common]] has been replaced with JavaFX observable collections and properties. In this turn, the [[GEF/GEF4/Common |GEF4 Common]] component has been augmented to provide observable collections and related collection properties for Guava's SetMultimap and Multiset, as well as replacements for the ObservableSet, ObservableList, and ObservableMap collections and related collection properties provided by JavaFX.
  
==== [INCOMPATIBLE CHANGE] Split FX.UI module into FX.SWT and FX.JFace modules (M2) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=482972 #482972] The adapter map injection support, described in detail in [http://nyssen.blogspot.com/2014/11/iadaptable-gef4s-interpretation-of.html Adaptable - 'GEF4's interpretation of a classic'], has been updated to ensure that adapter can always been retrieved via their actual runtime type, as well as been augmented with support for role-based adapter injection.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=471154 #471154]
+
  
Renamed FX.UI module into FX.SWT module and added FXColorPicker, FXSimpleLinearGradientPicker, and FXAdvancedLinearGradientPicker, which were provided by MVC.FX.UI module before (refactored from AbstractFXColorPicker, FXColorPicker, FXSimpleGradientPicker, and FXAdvancedGradientPicker). Introduced new FX.JFace module, which provides FXPaintCellEditor and FXPaintSelectionDialog, which were provided by MVC.FX.UI module before (refactored from FXFillCellEditor and FXFillSelectionDialog).
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481677 #481677] Adapter bindings can now be restricted to an adaptable of a certain role. Thereby, different bindings can e.g. be provided for a 'content' FXViewer and a 'palette' FXViewer.
  
==== [INCOMPATIBLE CHANGE] Moved over (and refactored) IFXCanvasFactory from MVC.UI ====
+
----
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=470636 #470636]
+
  
Moved over IFXCanvasFactory and changed signature of the create method to take an additional SWT style.
+
== GEF4 FX (1.0.0) ==
  
==== [INCOMPATIBLE CHANGE] Merged ScrollPaneEx and FXGridCanvas into InfiniteCanvas (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=471154 #471154] Renamed FX.UI module into FX.SWT module and added FXColorPicker, FXSimpleLinearGradientPicker, and FXAdvancedLinearGradientPicker, which were provided by MVC.FX.UI module before (refactored from AbstractFXColorPicker, FXColorPicker, FXSimpleGradientPicker, and FXAdvancedGradientPicker). Introduced new FX.JFace module, which provides FXPaintCellEditor and FXPaintSelectionDialog, which were provided by MVC.FX.UI module before (refactored from FXFillCellEditor and FXFillSelectionDialog).
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=479395 #479395]
+
  
Renamed the ScrollPaneEx to InfiniteCanvas and revised its API. The FXGridLayer has been removed and its functionality was moved to InfiniteCanvas. The InfiniteCanvas does now allow to insert visuals at different "positions" inside of the InfiniteCanvas: underlay group, scrolled underlay group, content group, scrolled overlay group, overlay group.
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=479395 #479395] Merged ScrollPaneEx and FXGridCanvas into InfiniteCanvas. The FXGridLayer has been removed and its functionality was moved to the newly created InfiniteCanvas. The InfiniteCanvas does now allow to insert visuals at different "positions" inside of the InfiniteCanvas: underlay group, scrolled underlay group, content group, scrolled overlay group, overlay group.
  
==== [INCOMPATIBLE CHANGE] Removed 'FX' prefix from all classes in FX module (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=454681 #454681] Added support to Connection for having a clickable area that is thicker than the connection stroke and allows to select also very thin connections. Its width is exposed by a property of Connection, so it can be bound (e.g. to adjust the width of the clickable area dependent on the scaling). Enhance the MVC logo example to demonstrate example usage of this feature.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481748 #481748]
+
  
Renamed IFXAnchor to IAnchor, AbstractFXAnchor to AbstractAnchor, FXChopBoxAnchor to ChopBoxAnchor and FXStaticAnchor to StaticAnchor. Renamed FXGeometryNode to GeometryNode. Renamed FXConnection to Connection, IFXDecoration to IConnectionDecoration, and IFXConnectionRouter to IConnectionRouter, FXPolyBezierConnectionRouter to PolyBezierConnectionRouter, and FXPolylineConnectionRouter to PolylineConnectionRouter. Renamed AbstractFXGesture to AbstractGesture, AbstractFXMouseDragGesture to AbstractMouseDragGesture, AbstractFXPinchSpreadGesture to AbstractPinchSpreadGesture, and AbstractFXRotateGesture to AbstractRotateGesture. Split FXUtils into NodeUtils and CursorUtils and moved it into o.e.g4.fx.utils package.
+
* Added support for proper clipping of decorations
 +
* Ensured that the curve node of a connection can be replaced
  
==== [INCOMPATIBLE CHANGE] Nested IControlFactory inside FXControlAdapter (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=488356 #488356] Introduced support for orthogonal routing of a Connection, including support for start and end point hints. While doing so, separated routing (manipulation of control points) from interpolating (visual appearance), so that routers (straight, orthogonal) and interpolators (poly-line, poly-bezier) can be freely mixed.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481741 #481741]
+
  
Inlined IControlFactory, as it is only useful in the context of an FXControlAdapter.
+
[[File:ConnectionSnippet.jpg|206px]]
  
=== Revised DynamicAnchor (M7) ===
+
* Exposed all relevant properties as (observable) properties, so it can be better used in a pure JavaFX environment.
  
Revised DynamicAnchor position computation.  
+
* Revised DynamicAnchor and its IComputationStrategy to be comparable to a JavaFX binding, where the resulting position value is based on observable computation parameters that might depend on the anchorage (static) or anchored visual (dynamic).
  
==== Add 'clickable-area' around connections (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=443954 #443954] GeometryNode has been revised to extend Region instead of Parent, so it no longer relies on overriding the deprecated impl_computeLayoutBounds() method that is deprecated and announced to be removed in future JavaFX releases. The API of GeometryNode was enhanced so that it does now allow to use relocate(double, double) and resize(double, double) to update the layout bounds (including layoutX and layoutY) while relocateGeometry(double, double) and resizeGeometry(double, double) can be used to update the geometric bounds. The layout bounds (and layoutX, layoutY) resemble the geometric bounds, expanded by a stroke offset (dependent on stroke width and type) and border insets.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=454681 #454681]
+
 
+
Add support for having a clickable area that is thicker than the connection stroke and allows to select also very thin connections. Its width is exposed by a property of Connection, so it can be bound (e.g. to adjust the width of the clickable area dependent on the scaling). Enhance the MVC logo example to demonstrate example usage of this feature.
+
  
 
----
 
----
Line 61: Line 54:
 
== GEF4 MVC (1.0.0) ==
 
== GEF4 MVC (1.0.0) ==
  
=== Support for orthogonal routing (M7) ===
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=471154 #471154] Refactored AbstractFXColorPicker, FXColorPicker, FXSimpleGradientPicker, and FXAdvancedGradientPicker and moved them into FX.SWT (renamed from FX.UI). Refactored FXFillCellEditor and FXFillSelectionDialog and moved them into FX.JFace.
  
=== Palette for MVC Logo example ===
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=477352 #477352] The FXTransformPolicy now provides an API for the creation and manipulation of transformation matrices. These matrices are then concatenated, together with the initial host transformation matrix, to yield the new host transformation matrix. Therefore, complex transformations can be set up properly at one point, and the important values can be changed later on, e.g. during user interaction. All transaction and interaction policies related to transforms (FXRelocateConnectionPolicy, FXRelocateOnDragPolicy, FXResizeRelocateOnHandleDragPolicy, FXResizeRelocatePolicy, FXRotatePolicy, FXRotateSelectedOnHandleDragPolicy, FXRotateSelectedOnRotatePolicy, FXScaleRelocateOnHandleDragPolicy, and FXScaleRelocatePolicy) have been renamed to express the actual transformation (e.g. "translate" instead of "relocate"). Additionally, the intermediate FXResizeRelocatePolicy, FXRotatePolicy, and FXScaleRelocatePolicy have been removed. The policies that were dependent on those intermediate policies are now directly using the FXTransformPolicy.
  
 +
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=479612 #479612]  Cleaned up ContentPolicy to only provide operations related to the content of the respective host part. It is intended to be registered at each IContentPart. Moved all "higher-level" operations into CreationPolicy and DeletionPolicy, which are to be registered at the IRootPart alone.
  
=== (Most) Significant API Changes ===
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=480875 #480875] Updating the selection, hover, and focus models is now handled within the CreationPolicy and the DeletionPolicy and the ClearHoverFocusSelectionOperation has been removed. The CreationPolicy selects and focusses a newly created part. The DeletionPolicy removes the deleted parts from the selection and focus models. Moreover, the CreationPolicy creates the IContentPart before executing operations on the history. Therefore, the content part can be used for live feedback even though the creation is not yet committed.
  
==== [INCOMPATIBLE CHANGE] Moved cell editor, dialogs, and pickers from MVC.FX.UI to FX.SWT and FX.JFace (M2) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481292 #481292] Renamed accessor methods provided by SelectionModel to be more concise. Especially clarified via names, whether an operation appends, prepends, or sets the selection.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=471154 #471154]
+
  
Refactored AbstractFXColorPicker, FXColorPicker, FXSimpleGradientPicker, and FXAdvancedGradientPicker and moved them into FX.SWT (renamed from FX.UI). Refactored FXFillCellEditor and FXFillSelectionDialog and moved them into FX.JFace.
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481600 #481600] Changed the implementation of ContentBehavior to ensure that deactivation does not remove children of its host. This way, deactivation of an FXViewer can now be temporarily applied (to disable all listeners) without loosing the content of the viewer.
  
==== [INCOMPATIBLE CHANGE] Renamed AbstractPolicy#enableRefreshVisuals() and #disableRefreshVisuals() (M3) ====
+
* In addition to straight routing based on waypoints, Connection now supports orthogonal routing.  
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=479615 #479615]
+
  
Renamed disableRefreshVisuals() to storeAndDisableRefreshVisuals() and enableRefreshVisuals() to restoreRefreshVisuals().
+
[[File:Straight_Routing_PolyBezier_Interpolator.jpg|250px]] [[File:Orthogonal_Routing_Polyline_Interpolator.jpg|250px]]
  
==== [INCOMPATIBLE CHANGE] Refactored FXTransformPolicy (MVC.FX) and the related policies (M2) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=493553 #493553] Changed that Domain now only executes ITransactionalOperations. Added means so that filtering of operations can be performed to control, which should be undoable. This can be used to e.g. filter out non content-related operations (like selection of focus change).
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=477352 #477352]
+
  
The FXTransformPolicy now provides an API for the creation and manipulation of transformation matrices. These matrices are then concatenated, together with the initial host transformation matrix, to yield the new host transformation matrix. Therefore, complex transformations can be set up properly at one point, and the important values can be changed later on, e.g. during user interaction.
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481677 #481688] Palette for MVC Logo example
 +
----
  
Moreover, the related policies (FXRelocateConnectionPolicy, FXRelocateOnDragPolicy, FXResizeRelocateOnHandleDragPolicy, FXResizeRelocatePolicy, FXRotatePolicy, FXRotateSelectedOnHandleDragPolicy, FXRotateSelectedOnRotatePolicy, FXScaleRelocateOnHandleDragPolicy, and FXScaleRelocatePolicy) have been renamed to express the actual transformation (e.g. "translate" instead of "relocate"). Additionally, the intermediate FXResizeRelocatePolicy, FXRotatePolicy, and FXScaleRelocatePolicy have been removed. The policies that were dependent on those intermediate policies are now directly using the FXTransformPolicy.
+
== GEF4 Layout (1.0.0) ==
  
==== [INCOMPATIBLE CHANGE] Add 'Abstract' prefix to FXEditor and FXView (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=491097 #491097] The LayoutContext and ILayoutAlgorithm now use a [[GEF/GEF4/Graph |GEF4 Graph]] data model as input and output model for layout calculations instead of its own layout interface abstractions.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481750 #481750]
+
 
+
Renamed FXEditor to AbstractFXEditor and FXView to AbstractFXView.
+
 
+
==== [INCOMPATIBLE CHANGE] Refactored ContentPolicy, CreationPolicy, and DeletionPolicy (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=479612 #479612]
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=480875 #480875]
+
 
+
Cleaned up ContentPolicy to only provide operations related to the content of the respective host part. It is intended to be registered at each IContentPart. Moved all "higher-level" operations into CreationPolicy and DeletionPolicy, which are to be registered at the IRootPart alone.
+
 
+
Furthermore, updating the selection, hover, and focus models is now handled within the CreationPolicy and the DeletionPolicy and the ClearHoverFocusSelectionOperation has been removed. The CreationPolicy selects and focusses a newly created part. The DeletionPolicy removes the deleted parts from the selection and focus models. Moreover, the CreationPolicy creates the IContentPart before executing operations on the history. Therefore, the content part can be used for live feedback even though the creation is not yet committed.
+
 
+
==== [INCOMPATIBLE CHANGE] Adjusted API of SelectionModel (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481292 #481292]
+
 
+
Renamed accessor methods provided by SelectionModel to be more concise. Especially clarified via names, whether an operation appends, prepends, or sets the selection.
+
 
+
==== Refactored ContentBehavior to prevent deactivation removes all children of host (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=481600 #481600]
+
 
+
Changed the implementation of ContentBehavior to ensure that deactivation does not remove children of its host. This way, deactivation of an FXViewer can now be temporarily applied (to disable all listeners) without loosing the content of the viewer.
+
 
+
=== [INCOMPATIBLE CHANGE] Refactored Connection and related abstractions (M6/M7) ===
+
 
+
Changed contract so that a Connection now delegates to an IConnectionRouter and an IConnectionInterpolator.
+
 
+
Added support for specifying positions hints for start and end points, which can be used to influence positions for attached anchors.
+
 
+
=== [INCOMPATIBLE CHANGE] Changed contract of IDomain to execute only ITransactionalOperation (RC1) ===
+
  
 
----
 
----
Line 120: Line 83:
 
== GEF4 Graph (1.0.0) ==
 
== GEF4 Graph (1.0.0) ==
  
==== [INCOMPATIBLE CHANGE] Enhanced builder API (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=480293 #480293] Enhanced the builder API so that graph-, node-, and edge-builders can be chained appropriately. Node-builders can now be provided with an Object-key, that can be referred to by edge-builders.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=480293 #480293]
+
  
Enhanced the builder API so that graph-, node-, and edge-builders can be chained appropriately. Node-builders can now be provided with an Object-key, that can be referred to by edge-builders.
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=484774 #484774] Adopted API to expose all relevant properties through JavaFx observable collections/properties.
  
 
----
 
----
Line 129: Line 91:
 
== GEF4 Zest (1.0.0) ==
 
== GEF4 Zest (1.0.0) ==
  
==== [INCOMPATIBLE CHANGE] Factored out Zest.FX.JFace from Zest.FX.UI (M2) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=470636 #470636] Separated out the Zest JFace-API into an own module (Zest.FX.JFace), so it can be consumed without introducing dependencies on the Eclipse Workbench UI.
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=470636 #470636]
+
  
Separeted out the Zest JFace-API into an own module, so it can be consumed without introducing dependencies on the Eclipse Workbench UI.
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=478944 #478944] Removed IEdgeDecorationProvider from Zest.FX.Jface. Respective ZestProperties.EDGE_SOURCE_DECORATION and ZestProperties.EDGE_TARGET_DECORATION attributes may be provided via IGraphNodeLabelProvider#getEdgeAttributes() instead.
 
+
==== [INCOMPATIBLE CHANGE] Removed IEdgeDecorationProvider (M3) ====
+
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=478944 #478944]
+
 
+
Removed IEdgeDecorationProvider from Zest.FX.Jface. Respective ZestProperties.EDGE_SOURCE_DECORATION and ZestProperties.EDGE_TARGET_DECORATION attributes may be provided via IGraphNodeLabelProvider#getEdgeAttributes() instead.
+
  
 
----
 
----
Line 143: Line 99:
 
== GEF4 DOT (1.0.0) ==
 
== GEF4 DOT (1.0.0) ==
  
The GEF4 DOT component has been completely revised and has made significant progress towards a full DOT authoring environment. A preference page has been added ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=446639 #446639]), via which the path to the native dot executable can be specified. In addition to image export, it is now also employed by the DOT Graph view to enable layouting in native mode in addition to the already provided emulated mode (based on matching GEF4 Layout algorithms). The view now also provides additional rendering capabilities, including edge decorations (¢https://bugs.eclipse.org/bugs/show_bug.cgi?id=477980]}, splines, as well as all available kind of labels (for edges and nodes). The DOT editor has been enhanced with additional validation support for arrowtype, point, splinetype, shape, and style attribute values.
+
The [[GEF/GEF4/DOT | GEF4 DOT]] component has been completely revised and has made significant progress towards a full DOT authoring environment. It does not provide public API yet and is currently limited to provide end-user functionality.
 +
 
 +
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=446639 #446639] A preference page has been added, via which the path to the native dot executable can be specified. In addition to image export, it is now also employed by the DOT Graph view to enable layouting in native mode in addition to the already provided emulated mode (based on matching GEF4 Layout algorithms).  
 +
* [https://bugs.eclipse.org/bugs/show_bug.cgi?id=477980 #477980] The DOT Graph view now also provides additional rendering capabilities, including edge decorations, splines, as well as all available kind of labels (for edges and nodes).  
 +
* The DOT editor has been enhanced with additional validation support for arrowtype, point, splinetype, shape, and style attribute values.

Revision as of 13:27, 18 May 2016

General

The GEF 4.0.0 (Neon) release provides minor revisions of the maintenance components Draw2d 3.x (3.11.0), GEF (MVC) 3.x (3.11.0), and Zest 1.x (1.7.0), as well as major revisions of the new GEF4 components (1.0.0).

As declared in the project plan, the decision about contributing GEF4 in version 1.0.0 (instead of 0.3.0) and an overall 4.0.0 release (instead of 3.11.0) was postponed up to M5. That is, Bugzilla entries commented before Neon M6 will refer to a 3.11.0 release and milestone contributions (including M5) include GEF4 components in version 0.3.0.

Please note that several incompatible changes to the (up to 0.2.0 provisional) API of GEF4 were made. The list of added and removed classes can be found at [1]. The most notable API changes are outlined below.


GEF4 Common (1.0.0)

  • #484774 As outlined in detail in 'GEF4 Collections and Properties - Guava goes FX' the property notification support provided by GEF4 Common has been replaced with JavaFX observable collections and properties. In this turn, the GEF4 Common component has been augmented to provide observable collections and related collection properties for Guava's SetMultimap and Multiset, as well as replacements for the ObservableSet, ObservableList, and ObservableMap collections and related collection properties provided by JavaFX.
  • #482972 The adapter map injection support, described in detail in Adaptable - 'GEF4's interpretation of a classic', has been updated to ensure that adapter can always been retrieved via their actual runtime type, as well as been augmented with support for role-based adapter injection.
  • #481677 Adapter bindings can now be restricted to an adaptable of a certain role. Thereby, different bindings can e.g. be provided for a 'content' FXViewer and a 'palette' FXViewer.

GEF4 FX (1.0.0)

  • #471154 Renamed FX.UI module into FX.SWT module and added FXColorPicker, FXSimpleLinearGradientPicker, and FXAdvancedLinearGradientPicker, which were provided by MVC.FX.UI module before (refactored from AbstractFXColorPicker, FXColorPicker, FXSimpleGradientPicker, and FXAdvancedGradientPicker). Introduced new FX.JFace module, which provides FXPaintCellEditor and FXPaintSelectionDialog, which were provided by MVC.FX.UI module before (refactored from FXFillCellEditor and FXFillSelectionDialog).
  • #479395 Merged ScrollPaneEx and FXGridCanvas into InfiniteCanvas. The FXGridLayer has been removed and its functionality was moved to the newly created InfiniteCanvas. The InfiniteCanvas does now allow to insert visuals at different "positions" inside of the InfiniteCanvas: underlay group, scrolled underlay group, content group, scrolled overlay group, overlay group.
  • #454681 Added support to Connection for having a clickable area that is thicker than the connection stroke and allows to select also very thin connections. Its width is exposed by a property of Connection, so it can be bound (e.g. to adjust the width of the clickable area dependent on the scaling). Enhance the MVC logo example to demonstrate example usage of this feature.
  • Added support for proper clipping of decorations
  • Ensured that the curve node of a connection can be replaced
  • #488356 Introduced support for orthogonal routing of a Connection, including support for start and end point hints. While doing so, separated routing (manipulation of control points) from interpolating (visual appearance), so that routers (straight, orthogonal) and interpolators (poly-line, poly-bezier) can be freely mixed.

ConnectionSnippet.jpg

  • Exposed all relevant properties as (observable) properties, so it can be better used in a pure JavaFX environment.
  • Revised DynamicAnchor and its IComputationStrategy to be comparable to a JavaFX binding, where the resulting position value is based on observable computation parameters that might depend on the anchorage (static) or anchored visual (dynamic).
  • #443954 GeometryNode has been revised to extend Region instead of Parent, so it no longer relies on overriding the deprecated impl_computeLayoutBounds() method that is deprecated and announced to be removed in future JavaFX releases. The API of GeometryNode was enhanced so that it does now allow to use relocate(double, double) and resize(double, double) to update the layout bounds (including layoutX and layoutY) while relocateGeometry(double, double) and resizeGeometry(double, double) can be used to update the geometric bounds. The layout bounds (and layoutX, layoutY) resemble the geometric bounds, expanded by a stroke offset (dependent on stroke width and type) and border insets.

GEF4 MVC (1.0.0)

  • #471154 Refactored AbstractFXColorPicker, FXColorPicker, FXSimpleGradientPicker, and FXAdvancedGradientPicker and moved them into FX.SWT (renamed from FX.UI). Refactored FXFillCellEditor and FXFillSelectionDialog and moved them into FX.JFace.
  • #477352 The FXTransformPolicy now provides an API for the creation and manipulation of transformation matrices. These matrices are then concatenated, together with the initial host transformation matrix, to yield the new host transformation matrix. Therefore, complex transformations can be set up properly at one point, and the important values can be changed later on, e.g. during user interaction. All transaction and interaction policies related to transforms (FXRelocateConnectionPolicy, FXRelocateOnDragPolicy, FXResizeRelocateOnHandleDragPolicy, FXResizeRelocatePolicy, FXRotatePolicy, FXRotateSelectedOnHandleDragPolicy, FXRotateSelectedOnRotatePolicy, FXScaleRelocateOnHandleDragPolicy, and FXScaleRelocatePolicy) have been renamed to express the actual transformation (e.g. "translate" instead of "relocate"). Additionally, the intermediate FXResizeRelocatePolicy, FXRotatePolicy, and FXScaleRelocatePolicy have been removed. The policies that were dependent on those intermediate policies are now directly using the FXTransformPolicy.
  • #479612 Cleaned up ContentPolicy to only provide operations related to the content of the respective host part. It is intended to be registered at each IContentPart. Moved all "higher-level" operations into CreationPolicy and DeletionPolicy, which are to be registered at the IRootPart alone.
  • #480875 Updating the selection, hover, and focus models is now handled within the CreationPolicy and the DeletionPolicy and the ClearHoverFocusSelectionOperation has been removed. The CreationPolicy selects and focusses a newly created part. The DeletionPolicy removes the deleted parts from the selection and focus models. Moreover, the CreationPolicy creates the IContentPart before executing operations on the history. Therefore, the content part can be used for live feedback even though the creation is not yet committed.
  • #481292 Renamed accessor methods provided by SelectionModel to be more concise. Especially clarified via names, whether an operation appends, prepends, or sets the selection.
  • #481600 Changed the implementation of ContentBehavior to ensure that deactivation does not remove children of its host. This way, deactivation of an FXViewer can now be temporarily applied (to disable all listeners) without loosing the content of the viewer.
  • In addition to straight routing based on waypoints, Connection now supports orthogonal routing.

Straight Routing PolyBezier Interpolator.jpg Orthogonal Routing Polyline Interpolator.jpg

  • #493553 Changed that Domain now only executes ITransactionalOperations. Added means so that filtering of operations can be performed to control, which should be undoable. This can be used to e.g. filter out non content-related operations (like selection of focus change).
  • #481688 Palette for MVC Logo example

GEF4 Layout (1.0.0)

  • #491097 The LayoutContext and ILayoutAlgorithm now use a GEF4 Graph data model as input and output model for layout calculations instead of its own layout interface abstractions.

GEF4 Graph (1.0.0)

  • #480293 Enhanced the builder API so that graph-, node-, and edge-builders can be chained appropriately. Node-builders can now be provided with an Object-key, that can be referred to by edge-builders.
  • #484774 Adopted API to expose all relevant properties through JavaFx observable collections/properties.

GEF4 Zest (1.0.0)

  • #470636 Separated out the Zest JFace-API into an own module (Zest.FX.JFace), so it can be consumed without introducing dependencies on the Eclipse Workbench UI.
  • #478944 Removed IEdgeDecorationProvider from Zest.FX.Jface. Respective ZestProperties.EDGE_SOURCE_DECORATION and ZestProperties.EDGE_TARGET_DECORATION attributes may be provided via IGraphNodeLabelProvider#getEdgeAttributes() instead.

GEF4 DOT (1.0.0)

The GEF4 DOT component has been completely revised and has made significant progress towards a full DOT authoring environment. It does not provide public API yet and is currently limited to provide end-user functionality.

  • #446639 A preference page has been added, via which the path to the native dot executable can be specified. In addition to image export, it is now also employed by the DOT Graph view to enable layouting in native mode in addition to the already provided emulated mode (based on matching GEF4 Layout algorithms).
  • #477980 The DOT Graph view now also provides additional rendering capabilities, including edge decorations, splines, as well as all available kind of labels (for edges and nodes).
  • The DOT editor has been enhanced with additional validation support for arrowtype, point, splinetype, shape, and style attribute values.

Back to the top