Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikaël Barbero2012-09-27 14:52:24 +0000
committerMikaël Barbero2012-09-27 15:00:43 +0000
commit3102f2af1e70228595e3cd1a7086b27744bd2870 (patch)
tree94082e9554a424b7426ad61b6c82b40e6cf4171e /plugins
parent8fe821ef299481720ae316cbffb4af52616e0a07 (diff)
downloadorg.eclipse.emf.compare-3102f2af1e70228595e3cd1a7086b27744bd2870.tar.gz
org.eclipse.emf.compare-3102f2af1e70228595e3cd1a7086b27744bd2870.tar.xz
org.eclipse.emf.compare-3102f2af1e70228595e3cd1a7086b27744bd2870.zip
preliminary support of UMLDiff in the IDE UI
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.ide.ui/META-INF/MANIFEST.MF3
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDEManyStructuralFeatureAccessorImpl.java104
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDESingleStructuralFeatureAccessorImpl.java56
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLCompareNodeAdapterFactory.java130
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLDiffNode.java29
5 files changed, 299 insertions, 23 deletions
diff --git a/plugins/org.eclipse.emf.compare.uml2.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2.ide.ui/META-INF/MANIFEST.MF
index de9f9d5ea..1e4351302 100644
--- a/plugins/org.eclipse.emf.compare.uml2.ide.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.compare.uml2.ide.ui/META-INF/MANIFEST.MF
@@ -10,6 +10,7 @@ Require-Bundle: org.eclipse.emf.compare.uml2.edit;bundle-version="2.0.0",
org.eclipse.emf.compare.ide.ui;bundle-version="2.0.0",
org.eclipse.emf.compare;bundle-version="2.0.0",
org.eclipse.swt;bundle-version="3.100.0",
- org.eclipse.emf.compare.rcp.ui;bundle-version="2.0.0"
+ org.eclipse.emf.compare.rcp.ui;bundle-version="2.0.0",
+ org.eclipse.core.runtime;bundle-version="3.5.0"
Import-Package: com.google.common.collect;version="[10.0.0,11.0.0)"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDEManyStructuralFeatureAccessorImpl.java b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDEManyStructuralFeatureAccessorImpl.java
new file mode 100644
index 000000000..93f05a393
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDEManyStructuralFeatureAccessorImpl.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.uml2.ide.ui.internal.accessor;
+
+import static com.google.common.collect.Iterables.filter;
+
+import com.google.common.collect.ImmutableList;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.ReferenceChange;
+import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor.IDEManyStructuralFeatureAccessorImpl;
+import org.eclipse.emf.compare.rcp.ui.mergeviewer.MergeViewer.MergeViewerSide;
+import org.eclipse.emf.compare.uml2.UMLDiff;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+/**
+ * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
+ */
+public class UMLIDEManyStructuralFeatureAccessorImpl extends IDEManyStructuralFeatureAccessorImpl {
+
+ /**
+ * @param diff
+ * @param side
+ */
+ public UMLIDEManyStructuralFeatureAccessorImpl(Diff diff, MergeViewerSide side) {
+ super(diff, side);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.rcp.ui.mergeviewer.accessor.BasicStructuralFeatureAccessorImpl#getAffectedFeature(org.eclipse.emf.compare.Diff)
+ */
+ @Override
+ protected EStructuralFeature getAffectedFeature(Diff diff) {
+ if (diff instanceof UMLDiff) {
+ return ((UMLDiff)diff).getEReference();
+ }
+ return super.getAffectedFeature(diff);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.rcp.ui.mergeviewer.accessor.ManyStructuralFeatureAccessorImpl#getDiffValue(org.eclipse.emf.compare.Diff)
+ */
+ @Override
+ protected Object getDiffValue(Diff diff) {
+ if (diff instanceof UMLDiff) {
+ return ((UMLDiff)diff).getDiscriminant();
+ }
+ return super.getDiffValue(diff);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.rcp.ui.mergeviewer.accessor.BasicStructuralFeatureAccessorImpl#computeDifferences()
+ */
+ @Override
+ protected ImmutableList<Diff> computeDifferences() {
+ return ImmutableList.of(getInitialDiff());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.rcp.ui.mergeviewer.accessor.ManyStructuralFeatureAccessorImpl#findInsertionIndex(org.eclipse.emf.compare.Diff,
+ * boolean)
+ */
+ @Override
+ protected int findInsertionIndex(Diff diff, boolean rightToLeft) {
+ if (diff instanceof UMLDiff) {
+ return super.findInsertionIndex(getDiffFromUMLDiff((UMLDiff)diff), rightToLeft);
+ }
+ return super.findInsertionIndex(diff, rightToLeft);
+ }
+
+ private static Diff getDiffFromUMLDiff(UMLDiff diff) {
+ Diff ret = null;
+ EObject discriminant = diff.getDiscriminant();
+ EList<Diff> differences = diff.getMatch().getComparison().getDifferences(discriminant);
+ for (ReferenceChange referenceChange : filter(differences, ReferenceChange.class)) {
+ if (referenceChange.getKind() == diff.getKind()) {
+ EReference reference = referenceChange.getReference();
+ if (reference == diff.getEReference() && referenceChange.getValue() == discriminant) {
+ ret = referenceChange;
+ }
+ }
+ }
+ return ret;
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDESingleStructuralFeatureAccessorImpl.java b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDESingleStructuralFeatureAccessorImpl.java
new file mode 100644
index 000000000..7cdb2eb20
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/accessor/UMLIDESingleStructuralFeatureAccessorImpl.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Obeo.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.emf.compare.uml2.ide.ui.internal.accessor;
+
+import com.google.common.collect.ImmutableList;
+
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor.IDESingleStructuralFeatureAccessorImpl;
+import org.eclipse.emf.compare.rcp.ui.mergeviewer.MergeViewer.MergeViewerSide;
+import org.eclipse.emf.compare.uml2.UMLDiff;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+/**
+ * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
+ */
+public class UMLIDESingleStructuralFeatureAccessorImpl extends IDESingleStructuralFeatureAccessorImpl {
+
+ /**
+ * @param diff
+ * @param side
+ */
+ public UMLIDESingleStructuralFeatureAccessorImpl(Diff diff, MergeViewerSide side) {
+ super(diff, side);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.rcp.ui.mergeviewer.accessor.BasicStructuralFeatureAccessorImpl#getAffectedFeature(org.eclipse.emf.compare.Diff)
+ */
+ @Override
+ protected EStructuralFeature getAffectedFeature(Diff diff) {
+ if (diff instanceof UMLDiff) {
+ return ((UMLDiff)diff).getEReference();
+ }
+ return super.getAffectedFeature(diff);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.rcp.ui.mergeviewer.accessor.BasicStructuralFeatureAccessorImpl#computeDifferences()
+ */
+ @Override
+ protected ImmutableList<Diff> computeDifferences() {
+ return ImmutableList.of(getInitialDiff());
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLCompareNodeAdapterFactory.java b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLCompareNodeAdapterFactory.java
index 1fbb82b71..ffb98df85 100644
--- a/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLCompareNodeAdapterFactory.java
+++ b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLCompareNodeAdapterFactory.java
@@ -149,6 +149,136 @@ public class UMLCompareNodeAdapterFactory extends UMLCompareAdapterFactory imple
}
/**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createProfileApplicationChangeAdapter()
+ */
+ @Override
+ public Adapter createProfileApplicationChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createDependencyChangeAdapter()
+ */
+ @Override
+ public Adapter createDependencyChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createInterfaceRealizationChangeAdapter()
+ */
+ @Override
+ public Adapter createInterfaceRealizationChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createSubstitutionChangeAdapter()
+ */
+ @Override
+ public Adapter createSubstitutionChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createExtendChangeAdapter()
+ */
+ @Override
+ public Adapter createExtendChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createIncludeChangeAdapter()
+ */
+ @Override
+ public Adapter createIncludeChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createGeneralizationSetChangeAdapter()
+ */
+ @Override
+ public Adapter createGeneralizationSetChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createIntervalConstraintChangeAdapter()
+ */
+ @Override
+ public Adapter createIntervalConstraintChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createMessageChangeAdapter()
+ */
+ @Override
+ public Adapter createMessageChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createStereotypePropertyChangeAdapter()
+ */
+ @Override
+ public Adapter createStereotypePropertyChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createStereotypeApplicationChangeAdapter()
+ */
+ @Override
+ public Adapter createStereotypeApplicationChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createStereotypeReferenceChangeAdapter()
+ */
+ @Override
+ public Adapter createStereotypeReferenceChangeAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.uml2.util.UMLCompareAdapterFactory#createUMLDiffAdapter()
+ */
+ @Override
+ public Adapter createUMLDiffAdapter() {
+ return new UMLDiffNode(getRootAdapterFactory());
+ }
+
+ /**
* This adds a listener.
*
* @param notifyChangedListener
diff --git a/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLDiffNode.java b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLDiffNode.java
index cd8d9297f..a0fb27c1f 100644
--- a/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLDiffNode.java
+++ b/plugins/org.eclipse.emf.compare.uml2.ide.ui/src/org/eclipse/emf/compare/uml2/ide/ui/internal/provider/UMLDiffNode.java
@@ -10,19 +10,13 @@
*******************************************************************************/
package org.eclipse.emf.compare.uml2.ide.ui.internal.provider;
-import static com.google.common.collect.Iterables.filter;
-
import org.eclipse.compare.ITypedElement;
import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.compare.Diff;
-import org.eclipse.emf.compare.ReferenceChange;
-import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor.IDEManyStructuralFeatureAccessorImpl;
-import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.accessor.IDESingleStructuralFeatureAccessorImpl;
import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.DiffNode;
import org.eclipse.emf.compare.rcp.ui.mergeviewer.MergeViewer.MergeViewerSide;
import org.eclipse.emf.compare.uml2.UMLDiff;
-import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.compare.uml2.ide.ui.internal.accessor.UMLIDEManyStructuralFeatureAccessorImpl;
+import org.eclipse.emf.compare.uml2.ide.ui.internal.accessor.UMLIDESingleStructuralFeatureAccessorImpl;
import org.eclipse.emf.ecore.EReference;
/**
@@ -78,20 +72,11 @@ public class UMLDiffNode extends DiffNode {
case ADD:
case DELETE:
case MOVE:
- EObject discriminant = diff.getDiscriminant();
- EList<Diff> differences = diff.getMatch().getComparison().getDifferences(discriminant);
- for (ReferenceChange referenceChange : filter(differences, ReferenceChange.class)) {
- if (referenceChange.getKind() == diff.getKind()) {
- EReference reference = referenceChange.getReference();
- if (reference == diff.getEReference() && referenceChange.getValue() == discriminant) {
- if (reference.isMany()) {
- ret = new IDEManyStructuralFeatureAccessorImpl(referenceChange, side);
- } else {
- ret = new IDESingleStructuralFeatureAccessorImpl(referenceChange, side);
- }
- break;
- }
- }
+ EReference eReference = diff.getEReference();
+ if (eReference.isMany()) {
+ ret = new UMLIDEManyStructuralFeatureAccessorImpl(diff, side);
+ } else {
+ ret = new UMLIDESingleStructuralFeatureAccessorImpl(diff, side);
}
break;
case CHANGE:

Back to the top