h2. Release Notes for Eclipse EEF

{toc:style=disc|minLevel=2|maxLevel=3}

This document contains the release notes for recent major releases of EEF.

h3(#eef2.1.1). Changes in EEF 2.1.1

* <span class="label label-info">Modified</span> Add the workbench part and the selection to the tab descriptor filter extension point.

h3(#eef2.1.0). Changes in EEF 2.1.0

* <span class="label label-info">Modified</span> Update the releng process
* <span class="label label-info">Modified</span> Fix some debug messages

h3(#eef2.0.2). Changes in EEF 2.0.2

h4. User-Visible Changes

* <span class="label label-info">Modified</span> Fix an issue with the order of the legacy tabs which did not use the afterSection part of the extension declaration
* <span class="label label-info">Modified</span> Fix an issue with the legacy tabs used by taking into account the contributor id

h3(#eef2.0.1). Changes in EEF 2.0.1

h4. User-Visible Changes

* <span class="label label-success">Added</span> A conflict resolution policy has been added to the Text widget. The implementation of the text widget now uses a new preference TEXT_CONFLICT_RESOLUTION_MODE, which is not exposed in the UI but can be configured programmatically using EEFPreferences.setTextConflictResolutionMode(). The default preference value can also be overridden by configuration, using the -pluginCustomization startup flag to point to a plugin_customization.ini file with, for example: org.eclipse.eef.ide.ui/TEXT_CONFLICT_RESOLUTION_MODE=USE_LOCAL_VERSION. EEFTextLifecycleManager supports three modes. First, USE_MODEL_VERSION which will overwrite the widget's content with the value computed from the new version of the model (no user feedback). This is the default behavior. Second, USE_LOCAL_VERSION which will keep the current value begin edited by the end-user in the widget (no user feedback). Third, ASK_USER which will open a simple dialog box to ask the user which version to keep. Note that the simple dialog provided is only suitable for short (single-line) text fields.
* <span class="label label-info">Modified</span> Fix an issue with the refresh of list widgets
* <span class="label label-info">Modified</span> Fix an issue with the conditional style of the text widgets

h4. Developer-Visible Changes

* <span class="label label-success">Added</span> The text widget has been modified to add support for the customization of the conflict resolution policy. Conflict resolution can be customized by providing a custom LifecycleManager which extends the default EEFTextLifecycleManager and overrides either askUserToResolveConflict() to take the preference in consideration, but implement ASK_USER differently, for example with a more sophisticated dialog or resolveEditionConflict() to provide a completely different strategy (possibly ignoring the preference).

h3(#eef2.0.0). Changes in EEF 2.0.0

h4. Specifier-Visible Changes

* <span class="label label-success">Added</span> You can now create _Toolbar Actions_ on pages and groups in order to define small buttons in their toolbars.
* <span class="label label-success">Added</span> _Buttons_ and _Widget Actions_ can now use an image along with a label thanks to the new _Image expression_.
* <span class="label label-success">Added</span> It is now possible to execute some behavior when the end users will click on the _Reference Widget_ thanks to the addition of an _OnClick expression_.
* <span class="label label-success">Added</span> You can indicate that a _Dynamic Mapping For_ should force the refresh of the user interface with the _Force Refresh_ property.

h4. Developer-Visible Changes

* <span class="label label-info">Modified</span> The class @org.eclipse.eef.core.api.controllers.AbstractEEFController@ and all its subclasses now require an EditingContextAdapter.
* <span class="label label-info">Modified</span> The interface @IConsumer@ has now been replaced by @java.util.Consumer@.

h3(#eef1.9.2). Changes in EEF 1.9.2

h4. User-Visible Changes

* <span class="label label-success">Added</span> A conflict resolution policy has been added to the Text widget. The implementation of the text widget now uses a new preference TEXT_CONFLICT_RESOLUTION_MODE, which is not exposed in the UI but can be configured programmatically using EEFPreferences.setTextConflictResolutionMode(). The default preference value can also be overridden by configuration, using the -pluginCustomization startup flag to point to a plugin_customization.ini file with, for example: org.eclipse.eef.ide.ui/TEXT_CONFLICT_RESOLUTION_MODE=USE_LOCAL_VERSION. EEFTextLifecycleManager supports three modes. First, USE_MODEL_VERSION which will overwrite the widget's content with the value computed from the new version of the model (no user feedback). This is the default behavior. Second, USE_LOCAL_VERSION which will keep the current value begin edited by the end-user in the widget (no user feedback). Third, ASK_USER which will open a simple dialog box to ask the user which version to keep. Note that the simple dialog provided is only suitable for short (single-line) text fields.

h4. Developer-Visible Changes

* <span class="label label-success">Added</span> The text widget has been modified to add support for the customization of the conflict resolution policy. Conflict resolution can be customized by providing a custom LifecycleManager which extends the default EEFTextLifecycleManager and overrides either askUserToResolveConflict() to take the preference in consideration, but implement ASK_USER differently, for example with a more sophisticated dialog or resolveEditionConflict() to provide a completely different strategy (possibly ignoring the preference).

h3(#eef1.9.1). Changes in EEF 1.9.1

h4. User-Visible Changes

* <span class="label label-info">Modified</span> Improved support for permissions.
* <span class="label label-info">Modified</span> Fixed an issue with the label used by the dialogs of the reference widget to improve the support of meta-models with column label providers.
* <span class="label label-info">Modified</span> Fixed an issue where the quick fixes did not trigger a refresh of the whole page.

h4. Developer-Visible Changes

* <span class="label label-info">Modified</span> The constructor @org.eclipse.eef.core.api.controllers.AbstractEEFController.AbstractEEFController(IVariableManager, IInterpreter)@ has been deprecated in favor of another constructor with the @EditingContextAdapter@ as an additional parameter. Multiple constructors in various classes which ended up calling this constructor without this new parameter have also been deprecated. They will be removed in EEF 2.0.0. See "this review":https://git.eclipse.org/r/#/c/94543 for the detailled list of the impacted classes.

h3(#eef1.9.0). Changes in EEF 1.9.0

h4. User-Visible Changes

* <span class="label label-success">Added</span> Add support for permissions with locks

h3(#eef1.8.0). Changes in EEF 1.8.0

h4. Specifier-Visible Changes

* <span class="label label-info">Modified</span> The selection variable of the hyperlink widget now refers properly to the value of the hyperlink.

h4. Developer-Visible Changes

* <span class="label label-info">Modified</span> The interfaces of the controllers for the default widget will now return an IStatus in order to support potential issues after the execution of the callback.


h3(#eef1.7.2). Changes in EEF 1.7.2

h4. Specifier-Visible Changes

* <span class="label label-info">Modified</span> The dynamic mappings will take into account all the "if" blocks with a valid predicate expression and not only the first one.
* <span class="label label-info">Modified</span> Fixed an issue with the enablement of the widget actions of the reference widget.


h3(#eef1.7.1). Changes in EEF 1.7.1

h4. Specifier-Visible Changes 

* <span class="label label-info">Modified</span> Fixed an issue where the variable @input@ was not available for some expressions in the select and radio widget.
* <span class="label label-info">Modified</span> Improve the documentation of the available extension points

h4. Developer-Visible Changes

* <span class="label label-success">Added</span> Added the documentation of the IEEFTabDescriptorFilter and IEEFExtReferenceViewerFilterProvider extension points.
* <span class="label label-info">Modified</span> Revert the lazy evaluation of the candidates of the select widget.

h3(#eef1.7.0). Changes in EEF 1.7.0

h4. User-Visible Changes

* <span class="label label-success">Added</span> Labels and hyperlinks can now have buttons on their right side.
* <span class="label label-info">Modified</span> Trigger the @editExpression@ of a single line text widget on @enter@.

h4. Specifier-Visible Changes

* <span class="label label-success">Added</span> A brand new widget outside of the default library is now available to edit references using an easier approach. Only the name of the reference to edit is necessary and the rest will be computed by the EEF runtime.
* <span class="label label-success">Added</span> Widget actions are now available on labels and hyperlinks.
* <span class="label label-success">Added</span> Labels and hyperlinks now have a displayExpression. If unused, the result of the valueExpression will be converted to a string using the @java.lang.Object#toString()@ operation.
* <span class="label label-success">Added</span> A new widget named List has been added, it has the same behavior as the multiple reference widget of the previous release.
* <span class="label label-info">Modified</span> The edit operation of a text field can now be triggered by the loss of focus on the text field.
* <span class="label label-info">Modified</span> The edit operation of a mono-line text field can now be triggered by pressing enter.
* <span class="label label-info">Modified</span> A selection variable is available in the hyperlink widget, it is equals to the value of the hyperlink instead of self.

h4. Developer-Visible Changes

* <span class="label label-info">Modified</span> The interface @org.eclipse.eef.core.api.EditingContextAdapter@ has now a new method @getEditingDomain()@ which is used to return an EditingDomain for the EEF runtime.
* <span class="label label-info">Modified</span> The constructor of the EEFLabelController now requires an EditingContextAdapter to run the expression of the widget actions.
* <span class="label label-success">Added</span> The class EEFStyleHelper is now API in order to help support style and conditional styles for custom widgets. Developers will need to override org.eclipse.eef.ide.ui.api.widgets.AbstractEEFWidgetLifecycleManager.getEEFStyleHelper() to provide their own implementation. The easiest way will need to extend the regular implementation and modify the three switchs to provide using the dedicated getters.


h3(#eef1.6.2). Changes in EEF 1.6.2

h4. User-Visible Changes

* <span class="label label-info">Modified</span> Trigger the @editExpression@ of a text widget on focus lost.

h3(#eef1.6.1). Changes in EEF 1.6.1

h4. Non-Visible Changes

* <span class="label label-info">Modified</span> Fixed a memory leak when selecting other editors.
* <span class="label label-info">Modified</span> Fixed an issue the refresh of the Properties view with an EMF proxy

h3(#eef1.6.0). Changes in EEF 1.6.0

h4. User-Visible Changes

* <span class="label label-success">Added</span> The user interface has been recreated from scratch with a new runtime. As a result multiple changes can be visible in the user interface.

h4. Specifier-Visible Changes

* <span class="label label-success">Added</span> A brand new "language":language/overview.html is available to create your user interface. Have a look at the documentation for additional details.

h4. Developer-Visible Changes

* <span class="label label-success">Added</span> A brand new API is available to create your user interface. Have a look at the documentation for additional details.
