Bug 462873 - Change DMR to use segments
https://bugs.eclipse.org/bugs/show_bug.cgi?id=462873

multireference, table, core.swt renderers

Change-Id: I864563202aa2239a7b07d8f088d2b62bccbf95ee
Signed-off-by: Lucas Koehler <l.koehler93@gmail.com>
diff --git a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/util/CellEditorFactory.java b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/util/CellEditorFactory.java
index 9051d89..5c53912 100644
--- a/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/util/CellEditorFactory.java
+++ b/bundles/org.eclipse.emf.ecp.edit.swt/src/org/eclipse/emf/ecp/edit/internal/swt/util/CellEditorFactory.java
@@ -80,6 +80,7 @@
 

 	}

 

+	// TODO: use DomainModelReference instead of strucutralFeature and EObject

 	public CellEditor getCellEditor(EStructuralFeature eStructuralFeature, EObject eObject, Table table,

 		ViewModelContext viewModelContext) {

 		int bestPriority = -1;

diff --git a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
index d63b076..106b22d 100644
--- a/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
+++ b/bundles/org.eclipse.emf.ecp.view.context/src/org/eclipse/emf/ecp/view/internal/context/ViewModelContextImpl.java
@@ -12,7 +12,6 @@
 package org.eclipse.emf.ecp.view.internal.context;
 
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -22,6 +21,8 @@
 import java.util.TreeSet;
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import org.eclipse.core.databinding.observable.IObserving;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionRegistry;
@@ -32,6 +33,7 @@
 import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.EStructuralFeature.Setting;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -54,6 +56,8 @@
 import org.eclipse.emf.ecp.view.spi.model.util.ViewModelUtil;
 import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
+import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
 
 /**
  * The Class ViewModelContextImpl.
@@ -263,8 +267,9 @@
 			};
 			controlChangeListener.put(vControl, changeListener);
 
-			vControl.getDomainModelReference().getChangeListener().add(changeListener);
-			registerDomainChangeListener(vControl.getDomainModelReference());
+			// TODO: change listener
+			// vControl.getDomainModelReference().getChangeListener().add(changeListener);
+			// registerDomainChangeListener(vControl.getDomainModelReference());
 		}
 	}
 
@@ -274,36 +279,36 @@
 			settingToControlMap.get(setting).remove(vControl);
 		}
 
-		final Iterator<Setting> iterator = vControl.getDomainModelReference().getIterator();
-		while (iterator.hasNext()) {
-			final Setting setting = iterator.next();
-			if (setting == null) {
-				continue;
-			}
-			final UniqueSetting uniqueSetting = UniqueSetting.createSetting(setting);
-			if (!settingToControlMap.containsKey(uniqueSetting)) {
-				settingToControlMap.put(uniqueSetting, new LinkedHashSet<VControl>());
-			}
-			settingToControlMap.get(uniqueSetting).add(vControl);
-		}
-
-		// IObservableValue observableValue;
-		// try {
-		// observableValue = Activator.getInstance().getEMFFormsDatabinding()
-		// .getObservableValue(vControl.getDomainModelReference(), getDomainModel());
-		// } catch (final DatabindingFailedException ex) {
-		// Activator.getInstance().getReportService().report(new DatabindingFailedReport(ex));
-		// return;
+		// final Iterator<Setting> iterator = vControl.getDomainModelReference().getIterator();
+		// while (iterator.hasNext()) {
+		// final Setting setting = iterator.next();
+		// if (setting == null) {
+		// continue;
 		// }
-		// final IObserving observing = (IObserving) observableValue;
-		// final EObject eObject = (EObject) observing.getObserved();
-		// final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
-		// observableValue.dispose();
-		// final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, structuralFeature);
+		// final UniqueSetting uniqueSetting = UniqueSetting.createSetting(setting);
 		// if (!settingToControlMap.containsKey(uniqueSetting)) {
 		// settingToControlMap.put(uniqueSetting, new LinkedHashSet<VControl>());
 		// }
 		// settingToControlMap.get(uniqueSetting).add(vControl);
+		// }
+
+		IObservableValue observableValue;
+		try {
+			observableValue = Activator.getInstance().getEMFFormsDatabinding()
+				.getObservableValue(vControl.getDomainModelReference(), getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			Activator.getInstance().getReportService().report(new DatabindingFailedReport(ex));
+			return;
+		}
+		final IObserving observing = (IObserving) observableValue;
+		final EObject eObject = (EObject) observing.getObserved();
+		final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
+		observableValue.dispose();
+		final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, structuralFeature);
+		if (!settingToControlMap.containsKey(uniqueSetting)) {
+			settingToControlMap.put(uniqueSetting, new LinkedHashSet<VControl>());
+		}
+		settingToControlMap.get(uniqueSetting).add(vControl);
 	}
 
 	private void vControlRemoved(VControl vControl) {
@@ -311,41 +316,42 @@
 			return;
 		}
 
-		final Iterator<Setting> iterator = vControl.getDomainModelReference().getIterator();
-		while (iterator.hasNext()) {
-			final Setting next = iterator.next();
-			final UniqueSetting uniqueSetting = UniqueSetting.createSetting(next);
-			if (settingToControlMap.containsKey(uniqueSetting)) {
-				settingToControlMap.get(uniqueSetting).remove(vControl);
-				if (settingToControlMap.get(uniqueSetting).size() == 0) {
-					settingToControlMap.remove(uniqueSetting);
-				}
-			}
-		}
-
-		// IObservableValue observableValue;
-		// try {
-		// observableValue = Activator.getInstance().getEMFFormsDatabinding()
-		// .getObservableValue(vControl.getDomainModelReference(), getDomainModel());
-		// } catch (final DatabindingFailedException ex) {
-		// Activator.getInstance().getReportService().report(new DatabindingFailedReport(ex));
-		// return;
-		// }
-		// final IObserving observing = (IObserving) observableValue;
-		// final EObject eObject = (EObject) observing.getObserved();
-		// final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
-		// observableValue.dispose();
-		// final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, structuralFeature);
+		// final Iterator<Setting> iterator = vControl.getDomainModelReference().getIterator();
+		// while (iterator.hasNext()) {
+		// final Setting next = iterator.next();
+		// final UniqueSetting uniqueSetting = UniqueSetting.createSetting(next);
 		// if (settingToControlMap.containsKey(uniqueSetting)) {
 		// settingToControlMap.get(uniqueSetting).remove(vControl);
 		// if (settingToControlMap.get(uniqueSetting).size() == 0) {
 		// settingToControlMap.remove(uniqueSetting);
 		// }
 		// }
+		// }
 
-		vControl.getDomainModelReference().getChangeListener().remove(controlChangeListener.get(vControl));
-		controlChangeListener.remove(vControl);
-		unregisterDomainChangeListener(vControl.getDomainModelReference());
+		IObservableValue observableValue;
+		try {
+			observableValue = Activator.getInstance().getEMFFormsDatabinding()
+				.getObservableValue(vControl.getDomainModelReference(), getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			Activator.getInstance().getReportService().report(new DatabindingFailedReport(ex));
+			return;
+		}
+		final IObserving observing = (IObserving) observableValue;
+		final EObject eObject = (EObject) observing.getObserved();
+		final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
+		observableValue.dispose();
+		final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, structuralFeature);
+		if (settingToControlMap.containsKey(uniqueSetting)) {
+			settingToControlMap.get(uniqueSetting).remove(vControl);
+			if (settingToControlMap.get(uniqueSetting).size() == 0) {
+				settingToControlMap.remove(uniqueSetting);
+			}
+		}
+
+		// TODO: change listener
+		// vControl.getDomainModelReference().getChangeListener().remove(controlChangeListener.get(vControl));
+		// controlChangeListener.remove(vControl);
+		// unregisterDomainChangeListener(vControl.getDomainModelReference());
 	}
 
 	private void vControlAdded(VControl vControl) {
@@ -353,36 +359,36 @@
 			return;
 		}
 
-		// IObservableValue observableValue;
-		// try {
-		// observableValue = Activator.getInstance().getEMFFormsDatabinding()
-		// .getObservableValue(vControl.getDomainModelReference(), getDomainModel());
-		// } catch (final DatabindingFailedException ex) {
-		// Activator.getInstance().getReportService().report(new DatabindingFailedReport(ex));
-		// return;
+		IObservableValue observableValue;
+		try {
+			observableValue = Activator.getInstance().getEMFFormsDatabinding()
+				.getObservableValue(vControl.getDomainModelReference(), getDomainModel());
+		} catch (final DatabindingFailedException ex) {
+			Activator.getInstance().getReportService().report(new DatabindingFailedReport(ex));
+			return;
+		}
+		final IObserving observing = (IObserving) observableValue;
+		final EObject eObject = (EObject) observing.getObserved();
+		final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
+		observableValue.dispose();
+		final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, structuralFeature);
+		if (!settingToControlMap.containsKey(uniqueSetting)) {
+			settingToControlMap.put(uniqueSetting, new LinkedHashSet<VControl>());
+		}
+		settingToControlMap.get(uniqueSetting).add(vControl);
+
+		// final Iterator<Setting> iterator = vControl.getDomainModelReference().getIterator();
+		// while (iterator.hasNext()) {
+		// final Setting next = iterator.next();
+		// if (next == null) {
+		// continue;
 		// }
-		// final IObserving observing = (IObserving) observableValue;
-		// final EObject eObject = (EObject) observing.getObserved();
-		// final EStructuralFeature structuralFeature = (EStructuralFeature) observableValue.getValueType();
-		// observableValue.dispose();
-		// final UniqueSetting uniqueSetting = UniqueSetting.createSetting(eObject, structuralFeature);
+		// final UniqueSetting uniqueSetting = UniqueSetting.createSetting(next);
 		// if (!settingToControlMap.containsKey(uniqueSetting)) {
 		// settingToControlMap.put(uniqueSetting, new LinkedHashSet<VControl>());
 		// }
 		// settingToControlMap.get(uniqueSetting).add(vControl);
-
-		final Iterator<Setting> iterator = vControl.getDomainModelReference().getIterator();
-		while (iterator.hasNext()) {
-			final Setting next = iterator.next();
-			if (next == null) {
-				continue;
-			}
-			final UniqueSetting uniqueSetting = UniqueSetting.createSetting(next);
-			if (!settingToControlMap.containsKey(uniqueSetting)) {
-				settingToControlMap.put(uniqueSetting, new LinkedHashSet<VControl>());
-			}
-			settingToControlMap.get(uniqueSetting).add(vControl);
-		}
+		// }
 	}
 
 	// private void eObjectRemoved(EObject eObject) {
@@ -546,10 +552,11 @@
 		settingToControlMap.clear();
 
 		for (final VControl vControl : controlChangeListener.keySet()) {
-			if (vControl.getDomainModelReference() != null) {
-				vControl.getDomainModelReference().getChangeListener().remove(controlChangeListener.get(vControl));
-			}
-			unregisterDomainChangeListener(vControl.getDomainModelReference());
+			// TODO: change listener
+			// if (vControl.getDomainModelReference() != null) {
+			// vControl.getDomainModelReference().getChangeListener().remove(controlChangeListener.get(vControl));
+			// }
+			// unregisterDomainChangeListener(vControl.getDomainModelReference());
 		}
 		controlChangeListener.clear();
 
diff --git a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java
index a92a0ac..cf29a84 100644
--- a/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java
+++ b/bundles/org.eclipse.emf.ecp.view.table.ui.swt/src/org/eclipse/emf/ecp/view/spi/table/swt/TableControlSWTRenderer.java
@@ -390,6 +390,7 @@
 		ColumnViewerToolTipSupport.enableFor(tableViewer);
 
 		final ObservableListContentProvider cp = new ObservableListContentProvider();
+		tableViewer.setContentProvider(cp);
 		InternalEObject tempInstance = null;
 		if (!clazz.isAbstract() && !clazz.isInterface()) {
 			tempInstance = getInstanceOf(clazz);
@@ -408,12 +409,6 @@
 		final VTableDomainModelReference tableDomainModelReference = VTableDomainModelReference.class.cast(
 			getVElement().getDomainModelReference());
 
-		final IObservableList list = getEMFFormsDatabinding()
-			.getObservableList(tableDomainModelReference, getViewModelContext().getDomainModel());
-		tableViewer.setInput(list);
-
-		final EClass columnRootEClass = ((EReference) list.getElementType()).getEReferenceType();
-
 		for (final VDomainModelReference dmr : tableDomainModelReference.getColumnDomainModelReferences()) {
 			if (dmr == null) {
 				continue;
@@ -421,7 +416,7 @@
 
 			IValueProperty valueProperty;
 			try {
-				valueProperty = getEMFFormsDatabinding().getValueProperty(dmr, columnRootEClass);
+				valueProperty = getEMFFormsDatabinding().getValueProperty(dmr, clazz);
 			} catch (final DatabindingFailedException ex) {
 				getReportService().report(new RenderingFailedReport(ex));
 				continue;
@@ -429,8 +424,8 @@
 			final EStructuralFeature eStructuralFeature = (EStructuralFeature) valueProperty.getValueType();
 
 			final EMFFormsLabelProvider labelService = getEMFFormsLabelProvider();
-			final String text = labelService.getDisplayName(dmr, columnRootEClass);
-			final String tooltipText = labelService.getDescription(dmr, columnRootEClass);
+			final String text = labelService.getDisplayName(dmr, clazz);
+			final String tooltipText = labelService.getDescription(dmr, clazz);
 
 			final CellEditor cellEditor = createCellEditor(tempInstance, eStructuralFeature, tableViewer.getTable());
 			final TableViewerColumn column = TableViewerColumnBuilder
@@ -462,7 +457,9 @@
 			}
 			columnNumber++;
 		}
-		tableViewer.setContentProvider(cp);
+		final IObservableList list = getEMFFormsDatabinding()
+			.getObservableList(tableDomainModelReference, getViewModelContext().getDomainModel());
+		tableViewer.setInput(list);
 
 		// IMPORTANT:
 		// - the minimumWidth and (non)resizable settings of the ColumnWeightData are not supported properly
diff --git a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java
index deadae0..ce20955 100644
--- a/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.control.multireference.tests/src/org/eclipse/emf/ecp/view/internal/control/multireference/MultiReferenceRenderer_PTest.java
@@ -24,12 +24,10 @@
 import org.eclipse.core.databinding.observable.list.IObservableList;

 import org.eclipse.core.databinding.observable.list.WritableList;

 import org.eclipse.core.databinding.observable.value.IObservableValue;

-import org.eclipse.emf.common.util.BasicEList;

 import org.eclipse.emf.ecore.EObject;

 import org.eclipse.emf.ecore.EStructuralFeature;

 import org.eclipse.emf.ecore.EStructuralFeature.Setting;

 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;

-import org.eclipse.emf.ecp.view.spi.model.DomainModelReferenceChangeListener;

 import org.eclipse.emf.ecp.view.spi.model.VControl;

 import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;

 import org.eclipse.emf.ecp.view.spi.model.reporting.ReportService;

@@ -118,15 +116,12 @@
 		when(setting.getEObject()).thenReturn(eObject);

 		when(setting.getEStructuralFeature()).thenReturn(eStructuralFeature);

 

-		final BasicEList<DomainModelReferenceChangeListener> changeListener = new BasicEList<DomainModelReferenceChangeListener>();

-		when(domainModelReference.getChangeListener()).thenReturn(changeListener);

-

 		final ImageRegistryService imageRegistryService = mock(ImageRegistryService.class);

 		final VTViewTemplateProvider templateProvider = mock(VTViewTemplateProvider.class);

 

 		renderer = new MultiReferenceSWTRenderer(vControl, viewContext, reportService, databindingService,

 			labelProvider, templateProvider, imageRegistryService);

-		renderer.init();

+		// Do not init renderer hear because the databinding service needs to be properly mocked before.

 	}

 

 	/**

@@ -242,6 +237,8 @@
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(

 			observableValue);

 		when(observableValue.getObserved()).thenReturn(mock(EObject.class));

+		renderer.init();

+

 		final Composite composite = (Composite) renderer.render(new SWTGridCell(0, 0, renderer), shell);

 		final Composite controlComposite = (Composite) composite.getChildren()[1];

 		final Table table = (Table) controlComposite.getChildren()[0];

@@ -264,6 +261,7 @@
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(

 			observableValue);

 		when(observableValue.getObserved()).thenReturn(mock(EObject.class));

+		renderer.init();

 

 		final Composite composite = (Composite) renderer.render(new SWTGridCell(0, 0, renderer), shell);

 		final Composite controlComposite = (Composite) composite.getChildren()[1];

diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch b/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch
index 640bb0a..cf05908 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/AllPluginTests core.swt.launch
@@ -33,7 +33,7 @@
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>

 <booleanAttribute key="run_in_ui_thread" value="true"/>

 <stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.xml@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.runtime@default:true,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.mockito.mockito-all@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>

-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt.tests@default:false,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emf.emfforms.core.services.labelprovider@default:default,org.eclipse.emf.emfforms.localization@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.swt.core@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.test.common@default:default,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt.tests@default:false,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emf.emfforms.core.services.labelprovider@default:default,org.eclipse.emf.emfforms.localization@default:default,org.eclipse.emfforms.core.services.databinding.segment@default:default,org.eclipse.emfforms.core.services.databinding@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.swt.core@default:default"/>

 <booleanAttribute key="show_selected_only" value="false"/>

 <booleanAttribute key="tracing" value="false"/>

 <booleanAttribute key="useCustomFeatures" value="false"/>

diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/AbstractControl_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/AbstractControl_PTest.java
index e36c8c4..448c735 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/AbstractControl_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/AbstractControl_PTest.java
@@ -19,8 +19,6 @@
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.when;
 
-import java.util.Collections;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.core.databinding.observable.IObserving;
@@ -28,11 +26,10 @@
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.property.value.IValueProperty;
 import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
@@ -40,10 +37,11 @@
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
 import org.eclipse.emf.ecp.view.spi.core.swt.AbstractControlSWTRenderer;
-import org.eclipse.emf.ecp.view.spi.model.DomainModelReferenceChangeListener;
 import org.eclipse.emf.ecp.view.spi.model.LabelAlignment;
 import org.eclipse.emf.ecp.view.spi.model.VControl;
+import org.eclipse.emf.ecp.view.spi.model.VDMRSegment;
 import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
+import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
 import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
 import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
 import org.eclipse.emf.ecp.view.spi.swt.layout.GridDescriptionFactory;
@@ -58,12 +56,11 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
+import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.mockito.Mockito;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
 
 public abstract class AbstractControl_PTest {
 	protected static final String CUSTOM_VARIANT = "org.eclipse.rap.rwt.customVariant"; //$NON-NLS-1$
@@ -82,6 +79,15 @@
 	public static void tearDownAfterClass() {
 	}
 
+	/**
+	 * Reset services after every test case.
+	 */
+	@After()
+	public void after() {
+		reset(databindingService);
+		reset(labelProvider);
+	}
+
 	private Resource createResource() {
 		final Resource.Factory.Registry registry = Resource.Factory.Registry.INSTANCE;
 		final Map<String, Object> extToFactoryMap = registry
@@ -106,25 +112,15 @@
 
 	protected void mockControl(EObject eObject,
 		final EStructuralFeature eStructuralFeature) throws DatabindingFailedException {
-		final VDomainModelReference domainModelReference = Mockito
-			.mock(VDomainModelReference.class);
-		final Setting setting = mock(Setting.class);
+		final VDomainModelReference domainModelReference = VViewFactory.eINSTANCE.createDomainModelReference();
+		final VDMRSegment featureSegment = VViewFactory.eINSTANCE.createDMRSegment();
+		featureSegment.setPropertyName(eStructuralFeature.getName());
+		domainModelReference.getSegments().add(featureSegment);
 		final Resource resource = createResource();
 		resource.getContents().add(eObject);
 
-		when(setting.getEObject()).thenReturn(eObject);
-		when(setting.getEStructuralFeature()).thenReturn(eStructuralFeature);
-		when(domainModelReference.getIterator()).then(new Answer<Iterator<Setting>>() {
-			@Override
-			public Iterator<Setting> answer(InvocationOnMock invocation) throws Throwable {
-				return Collections.singleton(setting).iterator();
-			}
-		});
-
 		mockDatabindingIsUnsettable();
 
-		final BasicEList<DomainModelReferenceChangeListener> changeListener = new BasicEList<DomainModelReferenceChangeListener>();
-		when(domainModelReference.getChangeListener()).thenReturn(changeListener);
 		Mockito.when(vControl.getDomainModelReference()).thenReturn(
 			domainModelReference);
 	}
@@ -134,7 +130,8 @@
 		when(structuralFeature.isUnsettable()).thenReturn(false);
 		final IValueProperty valueProperty = mock(IValueProperty.class);
 		when(valueProperty.getValueType()).thenReturn(structuralFeature);
-		when(databindingService.getValueProperty(any(VDomainModelReference.class))).thenReturn(valueProperty);
+		when(databindingService.getValueProperty(any(VDomainModelReference.class), any(EClass.class)))
+			.thenReturn(valueProperty);
 	}
 
 	protected void setMockLabelAlignment(LabelAlignment labelAlignment) {
@@ -177,20 +174,23 @@
 
 	@Test
 	public void renderValidationIconLabelAlignmentNone()
-		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, DatabindingFailedException {
 		setMockLabelAlignment(LabelAlignment.NONE);
 		renderValidationIcon(new SWTGridCell(0, 0, renderer));
 	}
 
 	@Test
 	public void renderValidationIconLabelAlignmentLeft()
-		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, DatabindingFailedException {
 		setMockLabelAlignment(LabelAlignment.LEFT);
 		renderValidationIcon(new SWTGridCell(0, 1, renderer));
 	}
 
 	private void renderValidationIcon(SWTGridCell gridCell)
-		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+		throws NoRendererFoundException, NoPropertyDescriptorFoundExeption, DatabindingFailedException {
+		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EClass.class))).thenReturn(
+			mock(IObservableValue.class));
+		renderer.init();
 		final Control render = renderer.render(gridCell, shell);
 		assertTrue(Label.class.isInstance(render));
 		assertEquals("", Label.class.cast(render).getText());
@@ -209,8 +209,10 @@
 	 *
 	 * @throws NoRendererFoundException
 	 * @throws NoPropertyDescriptorFoundExeption
+	 * @throws DatabindingFailedException
 	 */
-	protected void labelServiceUsage() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+	protected void labelServiceUsage() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		DatabindingFailedException {
 		reset(labelProvider);
 		final String testDescription = "test-description";
 		final String testDisplayName = "test-displayname";
@@ -219,7 +221,12 @@
 		when(labelProvider.getDisplayName(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			testDisplayName);
 
+		mockDatabindingIsUnsettable();
+		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EClass.class))).thenReturn(
+			mock(IObservableValue.class));
+
 		setMockLabelAlignment(LabelAlignment.LEFT);
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 0, renderer));
 		assertTrue(Label.class.isInstance(renderControl));
 
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java
index 52e62f4..c00abdb 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/BooleanControlRenderer_PTest.java
@@ -57,7 +57,6 @@
 		setup();
 		renderer = new BooleanControlSWTRenderer(vControl, context, reportService, databindingService, labelProvider,
 			templateProvider);
-		renderer.init();
 	}
 
 	@After
@@ -73,6 +72,7 @@
 		when(mockedObservableValue.getRealm()).thenReturn(realm);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 1, renderer));
 		assertControl(render);
 	}
@@ -85,6 +85,7 @@
 		when(mockedObservableValue.getRealm()).thenReturn(realm);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 2, renderer));
 
 		assertControl(render);
@@ -159,6 +160,7 @@
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservable);
 
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 2, renderer));
 		final Button button = (Button) renderControl;
 		return button;
@@ -169,9 +171,11 @@
 	 *
 	 * @throws NoRendererFoundException
 	 * @throws NoPropertyDescriptorFoundExeption
+	 * @throws DatabindingFailedException
 	 */
 	@Test
-	public void testLabelServiceUsage() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
+	public void testLabelServiceUsage() throws NoRendererFoundException, NoPropertyDescriptorFoundExeption,
+		DatabindingFailedException {
 		labelServiceUsage();
 	}
 }
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/DateTimeControlRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/DateTimeControlRenderer_PTest.java
index 7a081e1..527ad34 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/DateTimeControlRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/DateTimeControlRenderer_PTest.java
@@ -71,7 +71,6 @@
 		setup();
 		renderer = new DateTimeControlSWTRenderer(vControl, context, reportService, databindingService, labelProvider,
 			templateProvider);
-		renderer.init();
 	}
 
 	@After
@@ -88,9 +87,10 @@
 		final EObject mockedEObject = mock(EObject.class);
 		when(mockedEObject.eIsSet(any(EStructuralFeature.class))).thenReturn(true);
 		when(mockedObservableValue.getObserved()).thenReturn(mockedEObject);
-
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 1, renderer));
 		assertControl(render);
 	}
@@ -106,6 +106,8 @@
 		when(mockedObservableValue.getObserved()).thenReturn(mockedEObject);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 2, renderer));
 
 		assertControl(render);
@@ -259,6 +261,7 @@
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservable);
 
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 2, renderer));
 
 		final Composite composite = (Composite) renderControl;
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerRenderer_PTest.java
index 7c97336..217a6f6 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/EnumComboViewerRenderer_PTest.java
@@ -17,6 +17,7 @@
 import static org.mockito.Mockito.when;
 
 import org.eclipse.core.databinding.property.Properties;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecp.view.core.swt.test.model.SimpleTestObject;
 import org.eclipse.emf.ecp.view.core.swt.test.model.TestEnum;
@@ -66,7 +67,6 @@
 		setup();
 		renderer = new EnumComboViewerSWTRenderer(vControl, context, reportService, databindingService, labelProvider,
 			templateProvider, editSupport);
-		renderer.init();
 	}
 
 	@After
@@ -159,9 +159,10 @@
 		mockDatabindingIsUnsettable();
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservable);
-		when(databindingService.getValueProperty(any(VDomainModelReference.class))).thenReturn(
+		when(databindingService.getValueProperty(any(VDomainModelReference.class), any(EClass.class))).thenReturn(
 			Properties.selfValue(mockedObservable.getValueType()));
 
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 2, renderer));
 
 		final Combo combo = (Combo) renderControl;
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/NumberControlRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/NumberControlRenderer_PTest.java
index 3ba5942..0291b7f 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/NumberControlRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/NumberControlRenderer_PTest.java
@@ -22,6 +22,7 @@
 import java.util.Locale;
 
 import org.eclipse.core.databinding.property.Properties;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
@@ -66,7 +67,6 @@
 		setup();
 		renderer = new NumberControlSWTRenderer(vControl, context, reportService, databindingService, labelProvider,
 			templateProvider, editSupport);
-		renderer.init();
 	}
 
 	@After
@@ -92,8 +92,10 @@
 		when(mockedObservableValue.getValueType()).thenReturn(mockedEStructuralFeature);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
-		when(databindingService.getValueProperty(any(VDomainModelReference.class))).thenReturn(
+		when(databindingService.getValueProperty(any(VDomainModelReference.class), any(EClass.class))).thenReturn(
 			Properties.selfValue(mockedEStructuralFeature));
+
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 1, renderer));
 		assertControl(render);
 	}
@@ -116,9 +118,10 @@
 		when(mockedObservableValue.getValueType()).thenReturn(mockedEStructuralFeature);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
-		when(databindingService.getValueProperty(any(VDomainModelReference.class))).thenReturn(
+		when(databindingService.getValueProperty(any(VDomainModelReference.class), any(EClass.class))).thenReturn(
 			Properties.selfValue(mockedEStructuralFeature));
 
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 2, renderer));
 
 		assertControl(render);
@@ -216,9 +219,10 @@
 		mockDatabindingIsUnsettable();
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservable, new ObservingWritableValue(mockedObservable));
-		when(databindingService.getValueProperty(any(VDomainModelReference.class))).thenReturn(
+		when(databindingService.getValueProperty(any(VDomainModelReference.class), any(EClass.class))).thenReturn(
 			Properties.selfValue(mockedObservable.getValueType()));
 
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 2, renderer));
 		final Text text = (Text) renderControl;
 		return text;
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/XMLDateControlRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/XMLDateControlRenderer_PTest.java
index 5a67483..84576e0 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/XMLDateControlRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/internal/core/swt/renderer/XMLDateControlRenderer_PTest.java
@@ -28,6 +28,7 @@
 import javax.xml.datatype.XMLGregorianCalendar;
 
 import org.eclipse.core.databinding.property.Properties;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecp.edit.spi.ViewLocaleService;
@@ -73,7 +74,6 @@
 		setup();
 		renderer = new XMLDateControlSWTRenderer(vControl, context, reportService, databindingService, labelProvider,
 			templateProvider, editSupport);
-		renderer.init();
 	}
 
 	@After
@@ -95,6 +95,8 @@
 		when(mockedObservableValue.getValueType()).thenReturn(mockedEStructuralFeature);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 1, renderer));
 		assertControl(render);
 	}
@@ -113,6 +115,8 @@
 		when(mockedObservableValue.getValueType()).thenReturn(mockedEStructuralFeature);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 2, renderer));
 
 		assertControl(render);
@@ -212,9 +216,10 @@
 		mockDatabindingIsUnsettable();
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservable, new ObservingWritableValue(mockedObservable));
-		when(databindingService.getValueProperty(any(VDomainModelReference.class))).thenReturn(
+		when(databindingService.getValueProperty(any(VDomainModelReference.class), any(EClass.class))).thenReturn(
 			Properties.selfValue(mockedObservable.getValueType()));
 
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 2, renderer));
 		final Composite composite = (Composite) renderControl;
 		final Text text = (Text) composite.getChildren()[0];
diff --git a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/renderer/TextControlRenderer_PTest.java b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/renderer/TextControlRenderer_PTest.java
index 0500d02..26d4cd4 100644
--- a/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/renderer/TextControlRenderer_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.core.swt.tests/src/org/eclipse/emf/ecp/view/spi/core/swt/renderer/TextControlRenderer_PTest.java
@@ -59,7 +59,7 @@
 		setup();
 		renderer = new TextControlSWTRenderer(vControl, context, reportService, databindingService, labelProvider,
 			templateProvider, editSupport);
-		renderer.init();
+		// Don't init renderer here: Databinding service has to be properly mocked before it can be inited
 	}
 
 	@After
@@ -82,6 +82,7 @@
 		when(mockedObservableValue.getValueType()).thenReturn(mockedEStructuralFeature);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 1, renderer));
 		assertControl(render);
 	}
@@ -102,6 +103,7 @@
 		when(mockedObservableValue.getValueType()).thenReturn(mockedEStructuralFeature);
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
+		renderer.init();
 		final Control render = renderControl(new SWTGridCell(0, 2, renderer));
 
 		assertControl(render);
@@ -195,6 +197,7 @@
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservable, new ObservingWritableValue(mockedObservable));
 
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 2, renderer));
 		final Text text = (Text) renderControl;
 		return text;
@@ -227,6 +230,7 @@
 		when(databindingService.getObservableValue(any(VDomainModelReference.class), any(EObject.class))).thenReturn(
 			mockedObservableValue);
 
+		renderer.init();
 		final Control renderControl = renderControl(new SWTGridCell(0, 2, renderer));
 		assertTrue(Text.class.isInstance(renderControl));
 
diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch
index 3ccdb1a..3e77432 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/All Tests for view.table.ui.swt.launch
@@ -33,7 +33,7 @@
 <stringAttribute key="product" value="org.eclipse.platform.ide"/>

 <booleanAttribute key="run_in_ui_thread" value="true"/>

 <stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.batik.css*1.7.0.v201011041433@default:default,org.apache.batik.util*1.7.0.v201011041433@default:default,org.apache.batik.util.gui*1.7.0.v200903091627@default:default,org.apache.commons.codec@default:default,org.apache.commons.logging@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources.win32.x86_64@default:false,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.cdo.ecore.retrofit@default:false,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.databinding.edit@default:default,org.eclipse.emf.databinding@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.emfstore.client@default:default,org.eclipse.emf.emfstore.common.model@default:default,org.eclipse.emf.emfstore.common@default:default,org.eclipse.emf.emfstore.examplemodel.edit@default:default,org.eclipse.emf.emfstore.examplemodel@default:default,org.eclipse.emf.emfstore.migration@default:default,org.eclipse.emf.emfstore.server.model@default:default,org.eclipse.emf.emfstore.server@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.region@default:false,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface@default:default,org.eclipse.net4j.util@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.hamcrest.core@default:default,org.hamcrest.library@default:default,org.junit@default:default,org.mockito.mockito-all@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>

-<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.test@default:false,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt.test@default:false,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context.test@default:false,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi.test@default:false,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model.test@default:false,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt.test@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emf.emfforms.core.services.labelprovider@default:default,org.eclipse.emf.emfforms.localization@default:default,org.eclipse.emfforms.core.services.databinding.featurepath@default:default,org.eclipse.emfforms.core.services.databinding@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.swt.core@default:default"/>

+<stringAttribute key="selected_workspace_plugins" value="org.eclipse.emf.ecp.common.ui@default:default,org.eclipse.emf.ecp.common@default:default,org.eclipse.emf.ecp.core.test@default:false,org.eclipse.emf.ecp.core@default:default,org.eclipse.emf.ecp.edit.swt.test@default:false,org.eclipse.emf.ecp.edit.swt@default:default,org.eclipse.emf.ecp.edit@default:default,org.eclipse.emf.ecp.editor.e3@default:default,org.eclipse.emf.ecp.emfstore.core@default:default,org.eclipse.emf.ecp.explorereditorbridge@default:default,org.eclipse.emf.ecp.ui.rcp@default:false,org.eclipse.emf.ecp.ui.view.swt.test@default:false,org.eclipse.emf.ecp.ui.view.swt@default:default,org.eclipse.emf.ecp.ui.view.test@default:default,org.eclipse.emf.ecp.ui.view@default:default,org.eclipse.emf.ecp.ui@default:default,org.eclipse.emf.ecp.view.context.test@default:false,org.eclipse.emf.ecp.view.context@default:default,org.eclipse.emf.ecp.view.core.swt@default:default,org.eclipse.emf.ecp.view.label.model@default:default,org.eclipse.emf.ecp.view.model.common@default:default,org.eclipse.emf.ecp.view.model.provider.generator@default:default,org.eclipse.emf.ecp.view.model.provider.xmi.test@default:false,org.eclipse.emf.ecp.view.model.provider.xmi@default:default,org.eclipse.emf.ecp.view.model.test@default:false,org.eclipse.emf.ecp.view.model@default:default,org.eclipse.emf.ecp.view.table.columnservice@default:default,org.eclipse.emf.ecp.view.table.model@default:default,org.eclipse.emf.ecp.view.table.ui.swt.test@default:default,org.eclipse.emf.ecp.view.table.ui.swt@default:default,org.eclipse.emf.ecp.view.template.model@default:default,org.eclipse.emf.ecp.view.template.service@default:default,org.eclipse.emf.ecp.view.test.common.swt@default:default,org.eclipse.emf.ecp.view.util.swt@default:default,org.eclipse.emf.ecp.view.vertical.model@default:default,org.eclipse.emf.emfforms.core.services.emfspecificservice@default:default,org.eclipse.emf.emfforms.core.services.labelprovider@default:default,org.eclipse.emf.emfforms.localization@default:default,org.eclipse.emfforms.core.services.databinding.segment@default:default,org.eclipse.emfforms.core.services.databinding@default:default,org.eclipse.emfforms.core.services.editsupport@default:default,org.eclipse.emfforms.swt.core@default:default"/>

 <booleanAttribute key="show_selected_only" value="false"/>

 <booleanAttribute key="tracing" value="false"/>

 <booleanAttribute key="useCustomFeatures" value="false"/>

diff --git a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTableDatabindingLabel_PTest.java b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTableDatabindingLabel_PTest.java
index c511911..d176bc5 100644
--- a/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTableDatabindingLabel_PTest.java
+++ b/tests/org.eclipse.emf.ecp.view.table.ui.swt.test/src/org/eclipse/emf/ecp/view/table/ui/swt/test/SWTTableDatabindingLabel_PTest.java
@@ -253,8 +253,11 @@
 	private void assertDatabinding(final WritableList mockedObservableList, final Table table) {
 		assertEquals(mockedObservableList.size(), table.getItemCount());
 		for (int i = 0; i < mockedObservableList.size(); i++) {
-			assertEquals(Boolean.toString(((EClass) mockedObservableList.get(i)).isAbstract()), table.getItem(i)
-				.getText(1));
+			assertEquals(
+				"Assert fails for list item with index " + i + ": "
+					+ mockedObservableList.get(i) + ": ",
+				Boolean.toString(((EClass) mockedObservableList.get(i)).isAbstract()), table.getItem(i)
+					.getText(1));
 		}
 	}
 
@@ -265,8 +268,10 @@
 		final List<EClass> initialList = new LinkedList<EClass>();
 		final EClass class1 = EcoreFactory.eINSTANCE.createEClass();
 		class1.setAbstract(false);
+		class1.setName("EClass1");
 		final EClass class2 = EcoreFactory.eINSTANCE.createEClass();
 		class2.setAbstract(true);
+		class2.setName("EClass2");
 		initialList.add(class1);
 		initialList.add(class2);
 		return initialList;
@@ -285,6 +290,7 @@
 			mockedObservableList);
 
 		final Control renderedControl = renderer.render(new SWTGridCell(0, 0, renderer), shell);
+
 		assertTrue(Composite.class.isInstance(renderedControl));
 		final Control tableControl = getTable(renderedControl);
 		assertTrue(Table.class.isInstance(tableControl));