blob: 520604280aec2f18cc19e984cbebb053098c3a5c [file] [log] [blame]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" >
<title>Migration Guide</title>
<link href="book.css" rel="stylesheet" type="text/css">
<link href="code.css" rel="stylesheet" type="text/css">
<link rel="home" href="00-Main.html" title="">
</head>
<body>
<a name="MigrationGuide"></a>
<h1>Migration Guide</h1>
<a name="VersionOne"></a>
<h2>From 0.7.0 to 1.0.0</h2>
<p>
<ul>
<li>
<em>API changes</em> If in your custom <em>ControlFactory</em> you were using the field
<em>edbc</em> you should now use the getter <em>getDatabindingContext()</em>. Similarly for the field
<em>domain</em>: use <em>getEditingDomain()</em>.
</li>
</ul>
</p>
<a name="SixSeven"></a>
<h2>From 0.6.0 to 0.7.0</h2>
<p>
<ul>
<li>
<em>Multiple DSL files in the same project</em>: thanks to the radical change to the structure
of EMF Parsley projects, detailed in the following, it is now possible to define several
<em>.parsley</em> files in the same project.
</li>
<li>
<em>Structure of projects</em>: the structure of EMF Parsley projects has radically changed
(see <a href="01-Overview.html#DslProjectStructure" title="Go to &quot;The structure of an EMF Parsley project&quot;">The structure of an EMF Parsley project</a>).
If you have existing projects you need to perform these steps to adjust the compilation errors you will
get:
<ol>
<li>
Remove the executable extension factory class from the <em>src</em> folder (the DSL will now generate it in the
<em>emfparsley-gen</em> source folder)
<div class="image" >
<img src="images/project-migration-exec-ext-fact.png" class=" "
/>
<div class="caption">
</div>
</div>
</li>
<li>
Remove the guice module from the <em>src</em> folder, in the example above, it is <em>FirstexampleGuiceModule</em>
</li>
<li>
Modify the activator: instead of extending <em>EmfParsleyAbstractActivator</em> it must extend the
standard <a class="jdoc" href="http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/plugin/AbstractUIPlugin.html" title="View JavaDoc"><abbr title="org.eclipse.ui.plugin.AbstractUIPlugin" >AbstractUIPlugin</abbr></a>; then remove the method
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">public</span>&nbsp;EmfParsleyGuiceModule&nbsp;createModule()<br/>
</p>
</div>
</div>
</li>
<li>
Manually remove all the contents of the <em>emfparsley-gen</em> folder (the name of the generated
classes are now prefixed with the module name, but the previously generated ones might still be there)
<div class="image" >
<img src="images/project-migration-clean-gen.png" class=" "
/>
<div class="caption">
</div>
</div>
</li>
<li>
Perform a "clean" on the project (so that the contents of <em>emfparsley-gen</em> are generated)
</li>
<li>
Read the next part about <em>plugin.xml</em>
</li>
</ol>
</li>
<li>
<em>The plugin.xml and the new EMF Parsley builder</em>: the way we handle the
<em>plugin.xml</em> has improved, and we also automatically merge subsequent changes in the
DSL file <em>parts</em> section. Please have a look at <a href="01-Overview.html#PluginXml" title="Go to &quot;How the DSL handles the plugin.xml&quot;">How the DSL handles the plugin.xml</a> for
the details.
IMPORTANT: This merging takes place ONLY if your project has the <em>EMF Parsley builder nature</em>.
Since version 0.6.1 this nature is automatically applied to the projects created with our wizard.
In existing projects, you have to enable the nature yourself by right-clicking on the project,
then "Configure" and then "Enable EMF Parsley builder.
Once you added this new nature, please remove the <em>plugin.xml_emfparsley_gen</em> from the root
of your project, and perform a clean of the project.
</li>
<li>
<em>InjectorProvider</em>: the activator generated by the project wizard does not provide
anymore a means to retrieve the injector. This functionality is now implemented by an <em>InjectorProvider</em>
class which is automatically generated for each DSL module (see <a href="01-Overview.html#InjectorProvider" title="Go to &quot;Obtaining the Injector&quot;">Obtaining the Injector</a>).
For example, in the first example,
<a href="02-FirstExample.html#FirstExample" title="Go to &quot;First Example&quot;">First Example</a>, instead of doing
<div class="literallayout">
<div class="incode">
<p class="code">
FirstexampleActivator.getDefault().getInjector();<br/>
</p>
</div>
</div>
you need to do
<div class="literallayout">
<div class="incode">
<p class="code">
FirstexampleInjectorProvider.getInjector();<br/>
</p>
</div>
</div>
</li>
</ul>
</p>
<a name="FiveMinors"></a>
<h2>From 0.5.0 to 0.6.0</h2>
<p>
<ul>
<li>
The way we handle the <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/edit/domain/EditingDomain.html" title="View JavaDoc"><abbr title="org.eclipse.emf.edit.domain.EditingDomain" >EditingDomain</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/edit/domain/EditingDomain.java" title="View Source Code" >(src)</a> is
changed and improved to some extent. In standard scenarios this should not
require any modifications. In advanced scenarios this will provide complete
control on the editing domain. We refer to the new section in the documentation,
<a href="06-Customization.html#EditingDomain" title="Go to &quot;Editing Domain&quot;">Editing Domain</a>.
</li>
<li>
<em>Tree With Columns</em>: a new component has been added:
The <em>Tree With Columns Component</em> provides a tree representation just like <a href="05-Components.html#TreeComponent" title="Go to &quot;Tree Component&quot;">Tree Component</a>,
but it also shows table columns representing the features of the specified <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/ecore/EClass.html" title="View JavaDoc"><abbr title="org.eclipse.emf.ecore.EClass" >EClass</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/EClass.java" title="View Source Code" >(src)</a>.
IMPORTANT: the <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/ecore/EClass.html" title="View JavaDoc"><abbr title="org.eclipse.emf.ecore.EClass" >EClass</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/EClass.java" title="View Source Code" >(src)</a> is used to retrieve the features to be shown, and
NOT to filter elements to be shown (as opposite to the <a href="05-Components.html#TableComponent" title="Go to &quot;Table Component&quot;">Table Component</a>). If a given
row in the tree represents an object whose class does not have the feature for a given column, then the
corresponding table cell for that object will be empty.
For example, the following screenshot shows a tree with columns representing a library; the specified
<a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/ecore/EClass.html" title="View JavaDoc"><abbr title="org.eclipse.emf.ecore.EClass" >EClass</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/EClass.java" title="View Source Code" >(src)</a> is the <em>Writer</em> so the columns show the features of the
<em>Writer</em>&apos;s class. Some of these features, e.g., <em>address</em>, <em>firstName</em> and <em>lastName</em>, are defined
in the superclasses of <em>Writer</em>. The objects of class <em>Employee</em> have these features as well, while
they don&apos;t have features that are specific of <em>Writer</em>, e.g., <em>name</em> and <em>books</em>, thus the corresponding
cells for employees will be empty.
<div class="image" >
<img src="images/03-components-treecolumns.png" class=" "
/>
<div class="caption">
</div>
</div>
<em>EMF Parsley</em> provides a factory that can be used to create such a component, like in the code below:
<div class="literallayout">
<div class="incode">
<p class="code">
@Inject&nbsp;ViewerFactory&nbsp;viewerFactory;<br/>
<br/>
(...)<br/>
<br/>
treeViewer&nbsp;=&nbsp;createTreeViewerWithColumns(parent,&nbsp;getEClass(),&nbsp;getContents());<br/>
</p>
</div>
</div>
Since this component mixes the features of a tree and a table, the customizations are basically the
same shown in the subsections of <a href="05-Components.html#TreeComponent" title="Go to &quot;Tree Component&quot;" >section TreeComponent</a> and <a href="05-Components.html#TableComponent" title="Go to &quot;Table Component&quot;" >section TableComponent</a>.
</li>
<li>
<em>EmfSelectionHelper</em> only deals with selection element; utility methods for events is now
delegated to <em>EmfEventHelper</em>.
</li>
<li>
label provider for trees and table label providers for tables can now specify declaratively custom
fonts, foreground and background colors.
For tables, you can customize the font, foreground and background color for the entire row or for a single
cell.
Here are some examples:
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">labelProvider</span>{<br/>
...<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">font</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book&nbsp;-&gt;&nbsp;<span class="comment">//&nbsp;must&nbsp;return&nbsp;a&nbsp;org.eclipse.swt.graphics.Font<br/>
</span>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">foreground</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book&nbsp;-&gt;&nbsp;<span class="comment">//&nbsp;must&nbsp;return&nbsp;a&nbsp;org.eclipse.swt.graphics.Color<br/>
</span>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">background</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Book&nbsp;-&gt;&nbsp;<span class="comment">//&nbsp;must&nbsp;return&nbsp;a&nbsp;org.eclipse.swt.graphics.Color<br/>
</span>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
}<br/>
</p>
</div>
</div>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">tableLabelProvider</span>&nbsp;{<br/>
...&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">font</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;:&nbsp;name&nbsp;-&gt;&nbsp;JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">foreground</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;:&nbsp;books&nbsp;-&gt;&nbsp;Display.getCurrent().getSystemColor(SWT.COLOR_BLUE)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">background</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;:&nbsp;address&nbsp;-&gt;&nbsp;Display.getCurrent().getSystemColor(SWT.COLOR_GREEN)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">rowFont</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;-&gt;&nbsp;JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">rowForeground</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;-&gt;&nbsp;Display.getCurrent().getSystemColor(SWT.COLOR_BLUE)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">rowBackground</span>&nbsp;{<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;-&gt;&nbsp;Display.getCurrent().getSystemColor(SWT.COLOR_GREEN)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
}<br/>
</p>
</div>
</div>
</li>
</ul>
</p>
<a name="FourFive"></a>
<h2>From 0.4 to 0.5</h2>
<p>
<ul>
<li>
<em>ViewerInitializer</em> has been removed: all creation and initialization of viewers
is performed using <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/viewers/ViewerFactory.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.viewers.ViewerFactory" >ViewerFactory</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/viewers/ViewerFactory.java" title="View Source Code" >(src)</a>; its API has been
revised and simplified.
</li>
<li>
the packages <em>factories</em> and <em>builders</em> have been removed
and their classes have been moved to other packages.
If you get compiler errors, a simple "Organize Imports" should fix
the imports. If you use the DSL a simple regeneration should fix things.
</li>
<li>
<em>IViewerMouseListener</em> has been moved from the <em>listeners</em>
package to the <em>viewers</em> package.
</li>
<li>
classes in <em>editor.outline</em> have been moved into <em>editors</em>
package.
</li>
<li>
The creation of caption labels for forms and dialogs has slightly
changed, concerning the default behavior
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=472691">https://bugs.eclipse.org/bugs/show_bug.cgi?id=472691</a>):
we take the text from <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/edit/provider/IItemPropertyDescriptor.html" title="View JavaDoc"><abbr title="org.eclipse.emf.edit.provider.IItemPropertyDescriptor" >IItemPropertyDescriptor</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/edit/provider/IItemPropertyDescriptor.java" title="View Source Code" >(src)</a> if
the EObject provides it. (This does not happen for table column headers, since we don&apos;t have
any EObject when we build the table columns).
If you used to call this method on a
<a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/ui/provider/FormFeatureCaptionProvider.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.ui.provider.FormFeatureCaptionProvider" >FormFeatureCaptionProvider</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/ui/provider/FormFeatureCaptionProvider.java" title="View Source Code" >(src)</a> or
<a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/ui/provider/DialogFeatureCaptionProvider.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.ui.provider.DialogFeatureCaptionProvider" >DialogFeatureCaptionProvider</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/ui/provider/DialogFeatureCaptionProvider.java" title="View Source Code" >(src)</a>
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">public</span>&nbsp;Label&nbsp;getLabel(Composite&nbsp;parent,&nbsp;EClass&nbsp;eClass,&nbsp;EStructuralFeature&nbsp;feature)<br/>
</p>
</div>
</div>
be warned that this method has changed its signature into
<div class="literallayout">
<div class="incode">
<p class="code">
<span class="keyword">public</span>&nbsp;Label&nbsp;getLabel(Composite&nbsp;parent,&nbsp;EObject&nbsp;o,&nbsp;EStructuralFeature&nbsp;feature)<br/>
</p>
</div>
</div>
and of course also its semantics, since you need to pass an EObject not its EClass.
</li>
<li>
a new method is available in <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/edit/action/EditingMenuBuilder.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.edit.action.EditingMenuBuilder" >EditingMenuBuilder</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/edit/action/EditingMenuBuilder.java" title="View Source Code" >(src)</a>,
<em>actionChange</em>: If you want to implement more complex menu commands that do not
only add elements to a container, you can use the method
<em>actionChange</em>, specifying the label for the menu, the model&apos;s element
that will be affected by the changes specified as a lambda expression
(the third argument). The lambda expression will also get the specified
model&apos;s element as argument. (This is related to
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=475188">https://bugs.eclipse.org/bugs/show_bug.cgi?id=475188</a>).
Please also have a look at the updated documentation of section <a href="06-Customization.html#ContextualMenu" title="Go to &quot;Contextual Menu&quot;">Contextual Menu</a>:
the already existing <em>actionAdd</em> should be used with care, since it might leave the model
with dangling references -- with that respect we also updated the first example
<a href="02-FirstExample.html#FirstExample" title="Go to &quot;First Example&quot;">First Example</a>, so that
it uses <em>actionChange</em> to implement correctly what we used to achieve with <em>actionAdd</em>.
</li>
<li>
Adding context menu to a viewer has been extremely simplified
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=455727">https://bugs.eclipse.org/bugs/show_bug.cgi?id=455727</a>):
A context menu can be added to any <a class="jdoc" href="http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/StructuredViewer.html" title="View JavaDoc"><abbr title="org.eclipse.jface.viewers.StructuredViewer" >StructuredViewer</abbr></a> by using an
injected <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/menus/ViewerContextMenuHelper.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.menus.ViewerContextMenuHelper" >ViewerContextMenuHelper</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/menus/ViewerContextMenuHelper.java" title="View Source Code" >(src)</a>. This provides some
methods for adding the context menu
<div class="literallayout">
<div class="incode">
<p class="code">
@Inject&nbsp;ViewerContextMenuHelper&nbsp;contextMenuHelper;<br/>
(...)<br/>
<br/>
<span class="comment">//&nbsp;simplest&nbsp;form<br/>
</span>contextMenuHelper.addViewerContextMenu(viewer);<br/>
<br/>
<span class="comment">//&nbsp;if&nbsp;you&nbsp;have&nbsp;an&nbsp;AdapterFactoryEditingDomain&nbsp;already<br/>
</span>contextMenuHelper.addViewerContextMenu(viewer,&nbsp;editingDomain);<br/>
<br/>
<span class="comment">//&nbsp;if&nbsp;you&apos;re&nbsp;inside&nbsp;an&nbsp;IWorkbenchPart<br/>
</span>contextMenuHelper.addViewerContextMenu(viewer,&nbsp;editingDomain,&nbsp;part);<br/>
</p>
</div>
</div>
</li>
<li>
Drag and drop support has been separated from context menu support
(<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=475914">https://bugs.eclipse.org/bugs/show_bug.cgi?id=475914</a>):
thus, adding context menu does NOT automatically add drag and drop.
Drag and drop can be added to any <a class="jdoc" href="http://help.eclipse.org/helios/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/StructuredViewer.html" title="View JavaDoc"><abbr title="org.eclipse.jface.viewers.StructuredViewer" >StructuredViewer</abbr></a> by using an
injected <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/edit/ui/dnd/ViewerDragAndDropHelper.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.edit.ui.dnd.ViewerDragAndDropHelper" >ViewerDragAndDropHelper</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/edit/ui/dnd/ViewerDragAndDropHelper.java" title="View Source Code" >(src)</a>,
using its methods <em>addDragAndDrop</em>.
</li>
<li>
Saveable table views and table views reacting on selection
do not require an implementation of the method
<em>getContents()</em>, which has also been removed from the API, from the
<a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/config/Configurator.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.config.Configurator" >Configurator</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/config/Configurator.java" title="View Source Code" >(src)</a> methods, and from
the <em>configurator</em> section in the DSL: contents retrieval is completely
delegated to the new <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/edit/ui/provider/TableViewerContentProvider.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.edit.ui.provider.TableViewerContentProvider" >TableViewerContentProvider</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/edit/ui/provider/TableViewerContentProvider.java" title="View Source Code" >(src)</a>,
whose default implementation is able to automatically retrieve all the
contents of a given type (i.e., EClass) automatically.
The DSL provides the new <em>tableViewerContentProvider</em> specification,
see the new section <a href="06-Customization.html#TableViewerContentProvider" title="Go to &quot;Table Viewer Content Provider&quot;">Table Viewer Content Provider</a>.
</li>
<li>
Similarly, table views reacting on selection
do not require an implementation of the method
<em>getEStructuralFeature()</em>: they require an implementation of
<em>getEClass()</em> which specifies the type of the objects to be
shown in the table.
<em>getEStructuralFeature()</em> has also been removed from the API, from the
<a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/config/Configurator.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.config.Configurator" >Configurator</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/config/Configurator.java" title="View Source Code" >(src)</a> methods, and from
the <em>configurator</em> section in the DSL: contents retrieval is not
performed using a feature (which is limitative): it is completely
delegated to the new <a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/edit/ui/provider/TableViewerContentProvider.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.edit.ui.provider.TableViewerContentProvider" >TableViewerContentProvider</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/edit/ui/provider/TableViewerContentProvider.java" title="View Source Code" >(src)</a>,
whose default implementation is able to automatically retrieve all the
contents of a given type (i.e., EClass) automatically.
</li>
</ul>
</p>
<a name="ThreeFour"></a>
<h2>From 0.3 to 0.4</h2>
<p>
<ul>
<li>
<em>EmptyResourceInitializer</em> has been removed: you should now use
<a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/resource/ResourceManager.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.resource.ResourceManager" >ResourceManager</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/resource/ResourceManager.java" title="View Source Code" >(src)</a>,
see section <a href="06-Customization.html#ResourceManager" title="Go to &quot;Resource Manager&quot;">Resource Manager</a>
</li>
<li>
<em>ResourceSaveManager</em> has been removed: you should now use
<a class="jdoc" href="http://download.eclipse.org/modeling/emf/emf/javadoc/2.10.0/org/eclipse/emf/parsley/resource/ResourceSaveStrategy.html" title="View JavaDoc"><abbr title="org.eclipse.emf.parsley.resource.ResourceSaveStrategy" >ResourceSaveStrategy</abbr></a> <a class="srcLink" href="https://github.com/eclipse/emf/blob/R2_9_0/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/parsley/resource/ResourceSaveStrategy.java" title="View Source Code" >(src)</a>,
see section <a href="06-Customization.html#ResourceSaveStrategy" title="Go to &quot;Resource Save Strategy&quot;">Resource Save Strategy</a>
</li>
<li>
Project wizards have been redesigned: they generate a <em>module.parsley</em>
that uses the <em>configurator</em> for specifying required information
(see section <a href="06-Customization.html#Configurator" title="Go to &quot;Configurator&quot;">Configurator</a> and the updated
first example, section <a href="02-FirstExample.html#FirstExample" title="Go to &quot;First Example&quot;">First Example</a>)
</li>
</ul>
</p>
</body>
</html>