<md-content layout="column" layout-align="center stretch" class="content">
  <ul class="breadcrumb">
    <li><a href="#/documentation/2.1.0">2.1.0</a></li>
  </ul>
		<h2 id="ReleaseNotesforEclipseEEF">Release Notes for Eclipse EEF</h2>
		<ol class="toc" style="list-style: disc;">
			<li>
				<a href="#/documentation/2.1.0/releasenotes#ReleaseNotesforEclipseEEF">Release Notes for Eclipse EEF</a>
				<ol style="list-style: disc;">
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef2.1.0">Changes in EEF 2.1.0</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef2.0.1">Changes in EEF 2.0.1</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef2.0.0">Changes in EEF 2.0.0</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.9.2">Changes in EEF 1.9.2</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.9.1">Changes in EEF 1.9.1</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.9.0">Changes in EEF 1.9.0</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.8.0">Changes in EEF 1.8.0</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.7.2">Changes in EEF 1.7.2</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.7.1">Changes in EEF 1.7.1</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.7.0">Changes in EEF 1.7.0</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.6.2">Changes in EEF 1.6.2</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.6.1">Changes in EEF 1.6.1</a>
					</li>
					<li>
						<a href="#/documentation/2.1.0/releasenotes#eef1.6.0">Changes in EEF 1.6.0</a>
					</li>
				</ol>
			</li>
		</ol>
		<p>This document contains the release notes for recent major releases of EEF.</p>
		<h3 id="eef2.1.0">Changes in EEF 2.1.0</h3>
		<ul>
			<li><span class="label label-info">Modified</span> Update the releng process</li>
			<li><span class="label label-info">Modified</span> Fix some debug messages</li>
		</ul>
		<h3 id="eef2.0.1">Changes in EEF 2.0.1</h3>
		<h4 id="UserVisibleChanges">User-Visible Changes</h4>
		<ul>
			<li><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&#8217;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.</li>
			<li><span class="label label-info">Modified</span> Fix an issue with the refresh of list widgets</li>
			<li><span class="label label-info">Modified</span> Fix an issue with the conditional style of the text widgets</li>
		</ul>
		<h4 id="DeveloperVisibleChanges">Developer-Visible Changes</h4>
		<ul>
			<li><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).</li>
		</ul>
		<h3 id="eef2.0.0">Changes in EEF 2.0.0</h3>
		<h4 id="SpecifierVisibleChanges">Specifier-Visible Changes</h4>
		<ul>
			<li><span class="label label-success">Added</span> You can now create 
				<em>Toolbar Actions</em> on pages and groups in order to define small buttons in their toolbars.
			</li>
			<li><span class="label label-success">Added</span> 
				<em>Buttons</em> and 
				<em>Widget Actions</em> can now use an image along with a label thanks to the new 
				<em>Image expression</em>.
			</li>
			<li><span class="label label-success">Added</span> It is now possible to execute some behavior when the end users will click on the 
				<em>Reference Widget</em> thanks to the addition of an 
				<em>OnClick expression</em>.
			</li>
			<li><span class="label label-success">Added</span> You can indicate that a 
				<em>Dynamic Mapping For</em> should force the refresh of the user interface with the 
				<em>Force Refresh</em> property.
			</li>
		</ul>
		<h4 id="DeveloperVisibleChanges2">Developer-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> The class 
				<code>org.eclipse.eef.core.api.controllers.AbstractEEFController</code> and all its subclasses now require an EditingContextAdapter.
			</li>
			<li><span class="label label-info">Modified</span> The interface 
				<code>IConsumer</code> has now been replaced by 
				<code>java.util.Consumer</code>.
			</li>
		</ul>
		<h3 id="eef1.9.2">Changes in EEF 1.9.2</h3>
		<h4 id="UserVisibleChanges2">User-Visible Changes</h4>
		<ul>
			<li><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&#8217;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.</li>
		</ul>
		<h4 id="DeveloperVisibleChanges3">Developer-Visible Changes</h4>
		<ul>
			<li><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).</li>
		</ul>
		<h3 id="eef1.9.1">Changes in EEF 1.9.1</h3>
		<h4 id="UserVisibleChanges3">User-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> Improved support for permissions.</li>
			<li><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.</li>
			<li><span class="label label-info">Modified</span> Fixed an issue where the quick fixes did not trigger a refresh of the whole page.</li>
		</ul>
		<h4 id="DeveloperVisibleChanges4">Developer-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> The constructor 
				<code>org.eclipse.eef.core.api.controllers.AbstractEEFController.AbstractEEFController(IVariableManager, IInterpreter)</code> has been deprecated in favor of another constructor with the 
				<code>EditingContextAdapter</code> 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 
				<a href="https://git.eclipse.org/r/#/c/94543">this review</a> for the detailled list of the impacted classes.
			</li>
		</ul>
		<h3 id="eef1.9.0">Changes in EEF 1.9.0</h3>
		<h4 id="UserVisibleChanges4">User-Visible Changes</h4>
		<ul>
			<li><span class="label label-success">Added</span> Add support for permissions with locks</li>
		</ul>
		<h3 id="eef1.8.0">Changes in EEF 1.8.0</h3>
		<h4 id="SpecifierVisibleChanges2">Specifier-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> The selection variable of the hyperlink widget now refers properly to the value of the hyperlink.</li>
		</ul>
		<h4 id="DeveloperVisibleChanges5">Developer-Visible Changes</h4>
		<ul>
			<li><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.</li>
		</ul>
		<h3 id="eef1.7.2">Changes in EEF 1.7.2</h3>
		<h4 id="SpecifierVisibleChanges3">Specifier-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> The dynamic mappings will take into account all the &#171;if&#187; blocks with a valid predicate expression and not only the first one.</li>
			<li><span class="label label-info">Modified</span> Fixed an issue with the enablement of the widget actions of the reference widget.</li>
		</ul>
		<h3 id="eef1.7.1">Changes in EEF 1.7.1</h3>
		<h4 id="SpecifierVisibleChanges4">Specifier-Visible Changes </h4>
		<ul>
			<li><span class="label label-info">Modified</span> Fixed an issue where the variable 
				<code>input</code> was not available for some expressions in the select and radio widget.
			</li>
			<li><span class="label label-info">Modified</span> Improve the documentation of the available extension points</li>
		</ul>
		<h4 id="DeveloperVisibleChanges6">Developer-Visible Changes</h4>
		<ul>
			<li><span class="label label-success">Added</span> Added the documentation of the IEEFTabDescriptorFilter and IEEFExtReferenceViewerFilterProvider extension points.</li>
			<li><span class="label label-info">Modified</span> Revert the lazy evaluation of the candidates of the select widget.</li>
		</ul>
		<h3 id="eef1.7.0">Changes in EEF 1.7.0</h3>
		<h4 id="UserVisibleChanges5">User-Visible Changes</h4>
		<ul>
			<li><span class="label label-success">Added</span> Labels and hyperlinks can now have buttons on their right side.</li>
			<li><span class="label label-info">Modified</span> Trigger the 
				<code>editExpression</code> of a single line text widget on 
				<code>enter</code>.
			</li>
		</ul>
		<h4 id="SpecifierVisibleChanges5">Specifier-Visible Changes</h4>
		<ul>
			<li><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.</li>
			<li><span class="label label-success">Added</span> Widget actions are now available on labels and hyperlinks.</li>
			<li><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 
				<code>java.lang.Object#toString()</code> operation.
			</li>
			<li><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.</li>
			<li><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.</li>
			<li><span class="label label-info">Modified</span> The edit operation of a mono-line text field can now be triggered by pressing enter.</li>
			<li><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.</li>
		</ul>
		<h4 id="DeveloperVisibleChanges7">Developer-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> The interface 
				<code>org.eclipse.eef.core.api.EditingContextAdapter</code> has now a new method 
				<code>getEditingDomain()</code> which is used to return an EditingDomain for the EEF runtime.
			</li>
			<li><span class="label label-info">Modified</span> The constructor of the EEFLabelController now requires an EditingContextAdapter to run the expression of the widget actions.</li>
			<li><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.</li>
		</ul>
		<h3 id="eef1.6.2">Changes in EEF 1.6.2</h3>
		<h4 id="UserVisibleChanges6">User-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> Trigger the 
				<code>editExpression</code> of a text widget on focus lost.
			</li>
		</ul>
		<h3 id="eef1.6.1">Changes in EEF 1.6.1</h3>
		<h4 id="NonVisibleChanges">Non-Visible Changes</h4>
		<ul>
			<li><span class="label label-info">Modified</span> Fixed a memory leak when selecting other editors.</li>
			<li><span class="label label-info">Modified</span> Fixed an issue the refresh of the Properties view with an EMF proxy</li>
		</ul>
		<h3 id="eef1.6.0">Changes in EEF 1.6.0</h3>
		<h4 id="UserVisibleChanges7">User-Visible Changes</h4>
		<ul>
			<li><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.</li>
		</ul>
		<h4 id="SpecifierVisibleChanges6">Specifier-Visible Changes</h4>
		<ul>
			<li><span class="label label-success">Added</span> A brand new 
				<a href="#/documentation/2.1.0/language/overview">language</a> is available to create your user interface. Have a look at the documentation for additional details.
			</li>
		</ul>
		<h4 id="DeveloperVisibleChanges8">Developer-Visible Changes</h4>
		<ul>
			<li><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.</li>
		</ul>
</md-content>
