From 208dec557e0b9f67d68f9660a03df9379415f6c2 Mon Sep 17 00:00:00 2001
From: Dongyue Mou <mou@fortiss.org>
Date: Wed, 28 Sep 2011 09:21:14 +0000
Subject: [PATCH] removed ObservableValue and Observables, all projects use
 EMFObservableValue and EMFObservables by default the DataBindingContext is
 also changed to EMFDataBindingContext Moved NavigatorTreeLabelProvider into
 util package with new name ModelElementLabelProvider, so that it can be
 reused by other projects refs 153

---
 .../trunk/META-INF/MANIFEST.MF                |   1 -
 .../databinding/EObjectObservableValue.java   | 128 ------------------
 .../kernel/ui/databinding/Observables.java    |  48 -------
 .../kernel/ui/databinding/package.html        |   8 --
 .../ui/extension/base/EObjectActionBase.java  |   1 +
 .../extension/base/PropertySectionBase.java   |   6 +-
 .../properties/IdLabeledPropertySection.java  |   7 +-
 .../NamedCommentedPropertySection.java        |   6 +-
 .../ui/internal/views/NavigatorViewPart.java  |   3 +-
 .../ModelElementLabelProvider.java}           |  38 +++---
 10 files changed, 30 insertions(+), 216 deletions(-)
 delete mode 100644 org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/EObjectObservableValue.java
 delete mode 100644 org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/Observables.java
 delete mode 100644 org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/package.html
 rename org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/{internal/views/NavigatorTreeLabelProvider.java => util/ModelElementLabelProvider.java} (78%)

diff --git a/org.fortiss.tooling.kernel.ui/trunk/META-INF/MANIFEST.MF b/org.fortiss.tooling.kernel.ui/trunk/META-INF/MANIFEST.MF
index ae868f1be..bdb5cee23 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/META-INF/MANIFEST.MF
+++ b/org.fortiss.tooling.kernel.ui/trunk/META-INF/MANIFEST.MF
@@ -16,7 +16,6 @@ Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-Vendor: fortiss
 Export-Package: org.fortiss.tooling.kernel.ui,
- org.fortiss.tooling.kernel.ui.databinding,
  org.fortiss.tooling.kernel.ui.extension,
  org.fortiss.tooling.kernel.ui.extension.base,
  org.fortiss.tooling.kernel.ui.extension.data,
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/EObjectObservableValue.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/EObjectObservableValue.java
deleted file mode 100644
index 4e9caba24..000000000
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/EObjectObservableValue.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                     |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.ui.databinding;
-
-import org.eclipse.core.databinding.observable.Diffs;
-import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.databinding.observable.value.AbstractObservableValue;
-import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.swt.widgets.Display;
-import org.fortiss.tooling.kernel.service.ICommandStackService;
-
-/**
- * Implementation of {@link IObservableValue} for {@link EObject}s.
- * 
- * @author hummel
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating GREEN Hash: 94D2F02DEDBCCDFD7ABC432477684C9B
- */
-public class EObjectObservableValue extends AbstractObservableValue {
-
-	/** The wrapped object. */
-	private final EObject eObject;
-
-	/** The wrapped structural feature. */
-	private final EStructuralFeature structuralFeature;
-
-	/** Flag used for detecting our own updates. */
-	private boolean updating = false;
-
-	/** The adapter for sending change events. */
-	private final Adapter modelChangeAdapter = new AdapterImpl() {
-		/** {@inheritDoc} */
-		@Override
-		public void notifyChanged(final Notification msg) {
-			if (!updating && msg.getFeature() == structuralFeature) {
-				Display.getDefault().asyncExec(new Runnable() {
-					@Override
-					public void run() {
-						fireValueChange(Diffs.createValueDiff(
-								msg.getOldValue(), msg.getNewValue()));
-					}
-				});
-			}
-		}
-	};
-
-	/** Constructor. */
-	public EObjectObservableValue(Realm realm, EObject eObject,
-			EStructuralFeature structuralFeature) {
-		super(realm);
-		this.eObject = eObject;
-		this.structuralFeature = structuralFeature;
-
-		eObject.eAdapters().add(modelChangeAdapter);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public synchronized void dispose() {
-		eObject.eAdapters().remove(modelChangeAdapter);
-		super.dispose();
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	protected Object doGetValue() {
-		return eObject.eGet(structuralFeature);
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	protected void doSetValue(final Object value) {
-		Object oldValue = doGetValue();
-		if (oldValue == null && value == null || oldValue != null
-				&& oldValue.equals(value)) {
-			return;
-		}
-
-		updating = true;
-		ICommandStackService.INSTANCE.runAsCommand(eObject, new Runnable() {
-			@Override
-			public void run() {
-				eObject.eSet(structuralFeature, value);
-			}
-		});
-		updating = false;
-	}
-
-	/** {@inheritDoc} */
-	@Override
-	public Object getValueType() {
-		if (structuralFeature.isMany()) {
-			return EList.class;
-		}
-
-		if (structuralFeature instanceof EAttribute) {
-			return ((EAttribute) structuralFeature).getEAttributeType()
-					.getInstanceClass();
-		}
-		return ((EReference) structuralFeature).getEReferenceType()
-				.getInstanceClass();
-	}
-
-}
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/Observables.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/Observables.java
deleted file mode 100644
index ab4a5a430..000000000
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/Observables.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*--------------------------------------------------------------------------+
-$Id$
-|                                                                          |
-| Copyright 2011 ForTISS GmbH                     |
-|                                                                          |
-| Licensed under the Apache License, Version 2.0 (the "License");          |
-| you may not use this file except in compliance with the License.         |
-| You may obtain a copy of the License at                                  |
-|                                                                          |
-|    http://www.apache.org/licenses/LICENSE-2.0                            |
-|                                                                          |
-| Unless required by applicable law or agreed to in writing, software      |
-| distributed under the License is distributed on an "AS IS" BASIS,        |
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-| See the License for the specific language governing permissions and      |
-| limitations under the License.                                           |
-+--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.ui.databinding;
-
-import org.conqat.lib.commons.assertion.CCSMPre;
-import org.eclipse.core.databinding.observable.Realm;
-import org.eclipse.core.databinding.observable.value.IObservableValue;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
-
-/**
- * Observerables for {@link EObject} models.
- * 
- * @author hummel
- * @author $Author$
- * @version $Rev$
- * @ConQAT.Rating GREEN Hash: 714FEC022718BEA0D783DC7A39A08742
- */
-public class Observables {
-
-	/** Returns an observable for the given object and structural feature. */
-	public static IObservableValue observeValue(EObject eObject,
-			EStructuralFeature structuralFeature) {
-		return observeValue(Realm.getDefault(), eObject, structuralFeature);
-	}
-
-	/** Returns an observable for the given object and structural feature. */
-	public static IObservableValue observeValue(Realm realm, EObject eObject,
-			EStructuralFeature structuralFeature) {
-		CCSMPre.isTrue(eObject != null, "Can not observe null value!");
-		return new EObjectObservableValue(realm, eObject, structuralFeature);
-	}
-}
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/package.html b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/package.html
deleted file mode 100644
index e6cd7c225..000000000
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/databinding/package.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!--  
-  $Id$
-  @version $Rev$
-  @ConQAT.Rating GREEN Hash: 996283773B2EC0D22D4A844A3C9E30A8
--->
-<body>
-Support classes for using the data binding mechanism with EMF EObjects.
-</body>
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java
index 789263ed8..29b2eed21 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/EObjectActionBase.java
@@ -48,4 +48,5 @@ public abstract class EObjectActionBase extends Action {
 	public EObject getTarget() {
 		return target;
 	}
+
 }
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java
index d6f835945..45f53d68c 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/PropertySectionBase.java
@@ -20,11 +20,11 @@ package org.fortiss.tooling.kernel.ui.extension.base;
 import org.conqat.ide.commons.ui.databinding.validate.NumberPositiveValidator;
 import org.conqat.ide.commons.ui.databinding.validate.TextToDoubleValidator;
 import org.conqat.ide.commons.ui.databinding.validate.TextToIntegerValidator;
-import org.eclipse.core.databinding.DataBindingContext;
 import org.eclipse.core.databinding.conversion.NumberToStringConverter;
 import org.eclipse.core.databinding.conversion.StringToNumberConverter;
 import org.eclipse.core.databinding.observable.value.IObservableValue;
 import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.emf.databinding.EMFDataBindingContext;
 import org.eclipse.gef.EditPart;
 import org.eclipse.jface.fieldassist.ControlDecoration;
 import org.eclipse.jface.layout.GridDataFactory;
@@ -60,7 +60,7 @@ public abstract class PropertySectionBase extends AbstractPropertySection {
 	protected Composite composite;
 
 	/** Stores the data binding context used. */
-	protected DataBindingContext dbc = new DataBindingContext();
+	protected EMFDataBindingContext dbc = new EMFDataBindingContext();
 
 	/** {@inheritDoc} */
 	@Override
@@ -144,7 +144,7 @@ public abstract class PropertySectionBase extends AbstractPropertySection {
 	@Override
 	public void refresh() {
 		dbc.dispose();
-		dbc = new DataBindingContext();
+		dbc = new EMFDataBindingContext();
 	}
 
 	/** Binds a positive double value. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/IdLabeledPropertySection.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/IdLabeledPropertySection.java
index 66443a0db..663e0b699 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/IdLabeledPropertySection.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/IdLabeledPropertySection.java
@@ -18,6 +18,7 @@ $Id$
 package org.fortiss.tooling.kernel.ui.internal.properties;
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.emf.databinding.EMFObservables;
 import org.eclipse.jface.databinding.swt.SWTObservables;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
@@ -25,7 +26,6 @@ import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
 import org.fortiss.tooling.kernel.model.FortissToolingKernelPackage;
 import org.fortiss.tooling.kernel.model.IIdLabeled;
-import org.fortiss.tooling.kernel.ui.databinding.Observables;
 import org.fortiss.tooling.kernel.ui.extension.base.PropertySectionBase;
 
 /**
@@ -65,8 +65,9 @@ public class IdLabeledPropertySection extends PropertySectionBase {
 	public void refresh() {
 		super.refresh();
 
-		IObservableValue modelObservable = Observables.observeValue(idLabeled,
-				FortissToolingKernelPackage.Literals.IID_LABELED__ID);
+		IObservableValue modelObservable = EMFObservables
+				.observeValue(idLabeled,
+						FortissToolingKernelPackage.Literals.IID_LABELED__ID);
 		dbc.bindValue(SWTObservables.observeText(idText, SWT.None),
 				modelObservable, null, null);
 	}
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/NamedCommentedPropertySection.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/NamedCommentedPropertySection.java
index 1dfaee3b6..3d19626eb 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/NamedCommentedPropertySection.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/properties/NamedCommentedPropertySection.java
@@ -18,6 +18,7 @@ $Id$
 package org.fortiss.tooling.kernel.ui.internal.properties;
 
 import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.emf.databinding.EMFObservables;
 import org.eclipse.jface.databinding.swt.SWTObservables;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
@@ -25,7 +26,6 @@ import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
 import org.fortiss.tooling.kernel.model.FortissToolingKernelPackage;
 import org.fortiss.tooling.kernel.model.INamedCommentedElement;
-import org.fortiss.tooling.kernel.ui.databinding.Observables;
 import org.fortiss.tooling.kernel.ui.extension.base.PropertySectionBase;
 
 /**
@@ -73,12 +73,12 @@ public class NamedCommentedPropertySection extends PropertySectionBase {
 	public void refresh() {
 		super.refresh();
 
-		IObservableValue modelObservable = Observables.observeValue(
+		IObservableValue modelObservable = EMFObservables.observeValue(
 				namedCommented,
 				FortissToolingKernelPackage.Literals.INAMED_ELEMENT__NAME);
 		dbc.bindValue(SWTObservables.observeText(nameText, SWT.FocusOut),
 				modelObservable, null, null);
-		modelObservable = Observables
+		modelObservable = EMFObservables
 				.observeValue(
 						namedCommented,
 						FortissToolingKernelPackage.Literals.INAMED_COMMENTED_ELEMENT__COMMENT);
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
index 990935827..fe47cf1dd 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorViewPart.java
@@ -64,6 +64,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService;
 import org.fortiss.tooling.kernel.ui.service.INavigatorService;
 import org.fortiss.tooling.kernel.ui.service.IPropertiesService;
 import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
+import org.fortiss.tooling.kernel.ui.util.ModelElementLabelProvider;
 
 /**
  * {@link ViewPart} of the model navigator provided by the tooling kernel.
@@ -127,7 +128,7 @@ public final class NavigatorViewPart extends ViewPart implements
 		IDecoratorManager decoratorManager = PlatformUI.getWorkbench()
 				.getDecoratorManager();
 		viewer.setLabelProvider(new DecoratingLabelProvider(
-				new NavigatorTreeLabelProvider(), decoratorManager
+				new ModelElementLabelProvider(), decoratorManager
 						.getLabelDecorator()));
 		viewer.setContentProvider(new NavigatorTreeContentProvider());
 
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeLabelProvider.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ModelElementLabelProvider.java
similarity index 78%
rename from org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeLabelProvider.java
rename to org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ModelElementLabelProvider.java
index 56baecb76..14bf57e7b 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/NavigatorTreeLabelProvider.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ModelElementLabelProvider.java
@@ -15,51 +15,47 @@ $Id$
 | See the License for the specific language governing permissions and      |
 | limitations under the License.                                           |
 +--------------------------------------------------------------------------*/
-package org.fortiss.tooling.kernel.ui.internal.views;
+package org.fortiss.tooling.kernel.ui.util;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.viewers.BaseLabelProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.swt.graphics.Image;
 import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
 import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
 
 /**
- * {@link ILabelProvider} for the model navigator tree.
  * 
- * @author hoelzlf
+ * @author mou
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating GREEN Hash: FFAE22D5782B4A3DB33744FDE430B00D
+ * @ConQAT.Rating RED Hash:
  */
-public final class NavigatorTreeLabelProvider extends BaseLabelProvider
-		implements ILabelProvider {
-
+public class ModelElementLabelProvider extends LabelProvider {
 	/** {@inheritDoc} */
 	@Override
-	public Image getImage(Object element) {
-		// delegate to the model element handlers
+	public String getText(Object element) {
 		if (element instanceof EObject) {
 			IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
 					.getModelElementHandler((EObject) element);
-			if (handler != null) {
-				return handler.getIcon();
-			}
+
+			if (handler != null)
+				return handler.getName((EObject) element);
 		}
-		return null;
+
+		return super.getText(element);
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	public String getText(Object element) {
-		// delegate to the model element handlers
+	public Image getImage(Object element) {
 		if (element instanceof EObject) {
 			IModelElementHandler<EObject> handler = IModelElementHandlerService.INSTANCE
 					.getModelElementHandler((EObject) element);
-			if (handler != null) {
-				return handler.getName((EObject) element);
-			}
+
+			if (handler != null)
+				return handler.getIcon();
 		}
-		return "";
+
+		return super.getImage(element);
 	}
 }
-- 
GitLab