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