Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikaël Barbero2013-09-30 15:44:31 +0000
committerMikaël Barbero2013-10-01 08:20:22 +0000
commit90abb11fce4f4ab47b692c66b689ae764db364a1 (patch)
tree4025fe42ad6c1b784b8931179b75d409db4b46bf
parent3c1e711f7f7683fab6d21dec561110d29226190a (diff)
downloadorg.eclipse.emf.compare-90abb11fce4f4ab47b692c66b689ae764db364a1.tar.gz
org.eclipse.emf.compare-90abb11fce4f4ab47b692c66b689ae764db364a1.tar.xz
org.eclipse.emf.compare-90abb11fce4f4ab47b692c66b689ae764db364a1.zip
Add cross referencer to TreeNode.data to retrieve TreeNode from EObject
The cross referencer is specific to each group provider because each create their own TreeNodes. It let us retrieve the proper TreeNode from the command stack listener to update the selection in the tree without re-creating a new TreeNode. Change-Id: I5a886a180bd2a1d9bc744d25c11931433e447112
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java25
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/BasicDifferenceGroupImpl.java29
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/IDifferenceGroupProvider.java8
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/AbstractDifferenceGroupProvider.java72
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java12
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/DefaultGroupProvider.java5
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/KindGroupProvider.java11
-rw-r--r--plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java15
8 files changed, 142 insertions, 35 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
index f981a4b5d..e5e2bca83 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java
@@ -36,6 +36,8 @@ import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.command.CommandStack;
import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.ui.dialogs.DiagnosticDialog;
import org.eclipse.emf.common.util.BasicMonitor;
import org.eclipse.emf.common.util.Diagnostic;
@@ -66,6 +68,7 @@ import org.eclipse.emf.compare.scope.IComparisonScope;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
@@ -318,14 +321,20 @@ public class EMFCompareStructureMergeViewer extends AbstractViewerWrapper implem
// org.eclipse.compare.CompareEditorInput#getElement(ISelection))
Object first = getFirst(affectedObjects, null);
if (first instanceof EObject) {
- TreeNode treeNode = TreeFactory.eINSTANCE.createTreeNode();
- treeNode.setData((EObject)first);
- final Object adaptedAffectedObject = fAdapterFactory.adapt(treeNode, ICompareInput.class);
- SWTUtil.safeAsyncExec(new Runnable() {
- public void run() {
- setSelectionToWidget(new StructuredSelection(adaptedAffectedObject), true);
- }
- });
+ Notifier notifier = ((Adapter)diffTreeViewer.getRoot()).getTarget();
+ IDifferenceGroupProvider groupProvider = (IDifferenceGroupProvider)EcoreUtil
+ .getExistingAdapter(notifier, IDifferenceGroupProvider.class);
+ Iterable<TreeNode> treeNodes = groupProvider.getTreeNodes((EObject)first);
+ TreeNode treeNode = getFirst(treeNodes, null);
+ if (treeNode != null) {
+ final Object adaptedAffectedObject = fAdapterFactory.adapt(treeNode,
+ ICompareInput.class);
+ SWTUtil.safeAsyncExec(new Runnable() {
+ public void run() {
+ setSelection(new StructuredSelection(adaptedAffectedObject), true);
+ }
+ });
+ }
}
}
} else {
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/BasicDifferenceGroupImpl.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/BasicDifferenceGroupImpl.java
index 9006e6ac9..ef61b7446 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/BasicDifferenceGroupImpl.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/BasicDifferenceGroupImpl.java
@@ -52,6 +52,7 @@ import org.eclipse.emf.compare.provider.utils.IStyledString.Style;
import org.eclipse.emf.compare.rcp.ui.EMFCompareRCPUIPlugin;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.extender.IDifferenceGroupExtender;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
import org.eclipse.emf.edit.tree.TreeFactory;
import org.eclipse.emf.edit.tree.TreeNode;
import org.eclipse.swt.graphics.Image;
@@ -89,6 +90,9 @@ public class BasicDifferenceGroupImpl extends AdapterImpl implements IDifference
private final IDifferenceGroupExtender.Registry registry = EMFCompareRCPUIPlugin.getDefault()
.getDifferenceGroupExtenderRegistry();
+ /** The cross reference adapter that will be added to this group's children. */
+ private final ECrossReferenceAdapter crossReferenceAdapter;
+
/**
* Instantiates this group given the comparison and filter that should be used in order to determine its
* list of differences.
@@ -102,9 +106,13 @@ public class BasicDifferenceGroupImpl extends AdapterImpl implements IDifference
* The whole unfiltered list of differences.
* @param filter
* The filter we'll use in order to filter the differences that are part of this group.
+ * @param crossReferenceAdapter
+ * The cross reference adapter that will be added to this group's children.
*/
- public BasicDifferenceGroupImpl(Comparison comparison, Predicate<? super Diff> filter) {
- this(comparison, filter, "Group", EMFCompareRCPUIPlugin.getImage("icons/full/toolb16/group.gif")); //$NON-NLS-1$//$NON-NLS-2$
+ public BasicDifferenceGroupImpl(Comparison comparison, Predicate<? super Diff> filter,
+ ECrossReferenceAdapter crossReferenceAdapter) {
+ this(comparison, filter, "Group", EMFCompareRCPUIPlugin.getImage("icons/full/toolb16/group.gif"), //$NON-NLS-2$
+ crossReferenceAdapter);
}
/**
@@ -119,9 +127,13 @@ public class BasicDifferenceGroupImpl extends AdapterImpl implements IDifference
* The filter we'll use in order to filter the differences that are part of this group.
* @param name
* The name that the EMF Compare UI will display for this group.
+ * @param crossReferenceAdapter
+ * The cross reference adapter that will be added to this group's children.
*/
- public BasicDifferenceGroupImpl(Comparison comparison, Predicate<? super Diff> filter, String name) {
- this(comparison, filter, name, EMFCompareRCPUIPlugin.getImage("icons/full/toolb16/group.gif")); //$NON-NLS-1$
+ public BasicDifferenceGroupImpl(Comparison comparison, Predicate<? super Diff> filter, String name,
+ ECrossReferenceAdapter crossReferenceAdapter) {
+ this(comparison, filter, name,
+ EMFCompareRCPUIPlugin.getImage("icons/full/toolb16/group.gif"), crossReferenceAdapter); //$NON-NLS-1$
}
/**
@@ -138,13 +150,16 @@ public class BasicDifferenceGroupImpl extends AdapterImpl implements IDifference
* The name that the EMF Compare UI will display for this group.
* @param image
* The icon that the EMF Compare UI will display for this group.
+ * @param crossReferenceAdapter
+ * The cross reference adapter that will be added to this group's children.
*/
public BasicDifferenceGroupImpl(Comparison comparison, Predicate<? super Diff> filter, String name,
- Image image) {
+ Image image, ECrossReferenceAdapter crossReferenceAdapter) {
this.comparison = comparison;
this.filter = filter;
this.name = name;
this.image = image;
+ this.crossReferenceAdapter = crossReferenceAdapter;
}
/**
@@ -232,6 +247,10 @@ public class BasicDifferenceGroupImpl extends AdapterImpl implements IDifference
children.add(buildSubTree);
}
}
+ for (TreeNode child : children) {
+ // this cross referencer has to live as long as the objects on which it is installed.
+ child.eAdapters().add(crossReferenceAdapter);
+ }
}
return children;
}
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/IDifferenceGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/IDifferenceGroupProvider.java
index b8fbac32e..2cebc868f 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/IDifferenceGroupProvider.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/IDifferenceGroupProvider.java
@@ -15,6 +15,8 @@ import java.util.Collection;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.tree.TreeNode;
/**
* Instances of this class will be used by EMF Compare in order to provide difference grouping facilities to
@@ -122,4 +124,10 @@ public interface IDifferenceGroupProvider extends Adapter {
void clear();
}
+ /**
+ * @param first
+ * @return
+ */
+ Iterable<TreeNode> getTreeNodes(EObject eObject);
+
}
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/AbstractDifferenceGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/AbstractDifferenceGroupProvider.java
new file mode 100644
index 000000000..165a42ed7
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/AbstractDifferenceGroupProvider.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2013 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.rcp.ui.internal.structuremergeviewer.groups.impl;
+
+import static com.google.common.collect.Lists.newArrayListWithCapacity;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.IDifferenceGroupProvider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
+import org.eclipse.emf.edit.tree.TreeNode;
+import org.eclipse.emf.edit.tree.TreePackage;
+
+/**
+ * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
+ */
+public abstract class AbstractDifferenceGroupProvider extends AdapterImpl implements IDifferenceGroupProvider {
+
+ private final ECrossReferenceAdapter crossReferenceAdapter;
+
+ /**
+ *
+ */
+ public AbstractDifferenceGroupProvider() {
+ crossReferenceAdapter = new ECrossReferenceAdapter() {
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.ecore.util.ECrossReferenceAdapter#isIncluded(org.eclipse.emf.ecore.EReference)
+ */
+ @Override
+ protected boolean isIncluded(EReference eReference) {
+ return eReference == TreePackage.Literals.TREE_NODE__DATA;
+ }
+ };
+ }
+
+ /**
+ * @return the crossReferenceAdapter
+ */
+ public ECrossReferenceAdapter getCrossReferenceAdapter() {
+ return crossReferenceAdapter;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.IDifferenceGroupProvider#getTreeNodes(java.lang.Object)
+ */
+ public List<TreeNode> getTreeNodes(EObject eObject) {
+ Collection<Setting> inverseReferences = crossReferenceAdapter
+ .getNonNavigableInverseReferences(eObject);
+ List<TreeNode> ret = newArrayListWithCapacity(inverseReferences.size());
+ for (Setting setting : inverseReferences) {
+ ret.add((TreeNode)setting.getEObject());
+ }
+ return ret;
+ }
+}
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java
index d48e899fa..ef30e2f38 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ByResourceGroupProvider.java
@@ -15,8 +15,8 @@ import static com.google.common.base.Predicates.not;
import static com.google.common.base.Predicates.or;
import static com.google.common.collect.Collections2.filter;
import static com.google.common.collect.Lists.newArrayList;
-import static org.eclipse.emf.compare.utils.EMFComparePredicates.containmentReferenceChange;
import static org.eclipse.emf.compare.utils.EMFComparePredicates.containmentMoveReferenceChange;
+import static org.eclipse.emf.compare.utils.EMFComparePredicates.containmentReferenceChange;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
@@ -25,7 +25,6 @@ import com.google.common.collect.Lists;
import java.util.Collection;
import java.util.List;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.Diff;
import org.eclipse.emf.compare.Match;
@@ -35,6 +34,7 @@ import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.Basic
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.IDifferenceGroup;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.IDifferenceGroupProvider;
import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
import org.eclipse.emf.edit.tree.TreeNode;
/**
@@ -44,7 +44,7 @@ import org.eclipse.emf.edit.tree.TreeNode;
* @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
* @since 3.0
*/
-public class ByResourceGroupProvider extends AdapterImpl implements IDifferenceGroupProvider {
+public class ByResourceGroupProvider extends AbstractDifferenceGroupProvider implements IDifferenceGroupProvider {
/** A human-readable label for this group provider. This will be displayed in the EMF Compare UI. */
private String label;
@@ -76,7 +76,7 @@ public class ByResourceGroupProvider extends AdapterImpl implements IDifferenceG
public Collection<? extends IDifferenceGroup> getGroups(Comparison comparison) {
if (group == null || !comparison.equals(comp)) {
this.comp = comparison;
- group = new ResourceGroup(comparison);
+ group = new ResourceGroup(comparison, getCrossReferenceAdapter());
}
return ImmutableList.of(group);
}
@@ -139,8 +139,8 @@ public class ByResourceGroupProvider extends AdapterImpl implements IDifferenceG
*
* @see org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.BasicDifferenceGroupImpl#BasicDifferenceGroupImpl(org.eclipse.emf.compare.Comparison)
*/
- public ResourceGroup(Comparison comparison) {
- super(comparison, Predicates.<Diff> alwaysTrue());
+ public ResourceGroup(Comparison comparison, ECrossReferenceAdapter crossReferenceAdapter) {
+ super(comparison, Predicates.<Diff> alwaysTrue(), crossReferenceAdapter);
}
/**
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/DefaultGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/DefaultGroupProvider.java
index daad205ae..c4ffbe4f3 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/DefaultGroupProvider.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/DefaultGroupProvider.java
@@ -16,7 +16,6 @@ import com.google.common.collect.ImmutableList;
import java.util.Collection;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.BasicDifferenceGroupImpl;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.IDifferenceGroup;
@@ -29,7 +28,7 @@ import org.eclipse.emf.compare.scope.IComparisonScope;
* @author <a href="mailto:axel.richard@obeo.fr">Axel Richard</a>
* @since 3.0
*/
-public class DefaultGroupProvider extends AdapterImpl implements IDifferenceGroupProvider {
+public class DefaultGroupProvider extends AbstractDifferenceGroupProvider implements IDifferenceGroupProvider {
/** The unique group provided by this provider. */
private IDifferenceGroup group;
@@ -45,7 +44,7 @@ public class DefaultGroupProvider extends AdapterImpl implements IDifferenceGrou
public Collection<? extends IDifferenceGroup> getGroups(Comparison comparison) {
if (group == null || !comparison.equals(comp)) {
this.comp = comparison;
- group = new BasicDifferenceGroupImpl(comparison, alwaysTrue());
+ group = new BasicDifferenceGroupImpl(comparison, alwaysTrue(), getCrossReferenceAdapter());
}
return ImmutableList.of(group);
}
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/KindGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/KindGroupProvider.java
index d91c8ec45..15d82b16b 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/KindGroupProvider.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/KindGroupProvider.java
@@ -17,7 +17,6 @@ import com.google.common.collect.Lists;
import java.util.Collection;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.DifferenceKind;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.BasicDifferenceGroupImpl;
@@ -32,7 +31,7 @@ import org.eclipse.emf.compare.scope.IComparisonScope;
* @author <a href="mailto:laurent.goubet@obeo.fr">Laurent Goubet</a>
* @since 3.0
*/
-public class KindGroupProvider extends AdapterImpl implements IDifferenceGroupProvider {
+public class KindGroupProvider extends AbstractDifferenceGroupProvider implements IDifferenceGroupProvider {
/** A human-readable label for this group provider. This will be displayed in the EMF Compare UI. */
private String label;
@@ -65,13 +64,13 @@ public class KindGroupProvider extends AdapterImpl implements IDifferenceGroupPr
if (differenceGroups == null || !comparison.equals(comp)) {
this.comp = comparison;
final IDifferenceGroup additions = new BasicDifferenceGroupImpl(comparison,
- ofKind(DifferenceKind.ADD), "Additions");
+ ofKind(DifferenceKind.ADD), "Additions", getCrossReferenceAdapter());
final IDifferenceGroup deletions = new BasicDifferenceGroupImpl(comparison,
- ofKind(DifferenceKind.DELETE), "Deletions");
+ ofKind(DifferenceKind.DELETE), "Deletions", getCrossReferenceAdapter());
final IDifferenceGroup changes = new BasicDifferenceGroupImpl(comparison,
- ofKind(DifferenceKind.CHANGE), "Changes");
+ ofKind(DifferenceKind.CHANGE), "Changes", getCrossReferenceAdapter());
final IDifferenceGroup moves = new BasicDifferenceGroupImpl(comparison,
- ofKind(DifferenceKind.MOVE), "Moves");
+ ofKind(DifferenceKind.MOVE), "Moves", getCrossReferenceAdapter());
Collection<IDifferenceGroup> groups = Lists.newArrayList();
if (!additions.getGroupTree().isEmpty()) {
groups.add(additions);
diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java
index e3f2882c5..bf5f9a28f 100644
--- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java
+++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/groups/impl/ThreeWayComparisonGroupProvider.java
@@ -31,7 +31,6 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.List;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.Conflict;
import org.eclipse.emf.compare.ConflictKind;
@@ -49,6 +48,7 @@ import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.IDiff
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.IDifferenceGroupProvider;
import org.eclipse.emf.compare.scope.IComparisonScope;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
import org.eclipse.emf.edit.tree.TreeNode;
/**
@@ -58,7 +58,7 @@ import org.eclipse.emf.edit.tree.TreeNode;
* @author <a href="mailto:axel.richard@obeo.fr">Axel Richard</a>
* @since 3.0
*/
-public class ThreeWayComparisonGroupProvider extends AdapterImpl implements IDifferenceGroupProvider {
+public class ThreeWayComparisonGroupProvider extends AbstractDifferenceGroupProvider implements IDifferenceGroupProvider {
/** A human-readable label for this group provider. This will be displayed in the EMF Compare UI. */
private String label;
@@ -91,13 +91,13 @@ public class ThreeWayComparisonGroupProvider extends AdapterImpl implements IDif
if (differenceGroups == null || !comparison.equals(comp)) {
this.comp = comparison;
final IDifferenceGroup conflicts = new ConflictsGroupImpl(comparison, hasConflict(
- ConflictKind.REAL, ConflictKind.PSEUDO), "Conflicts");
+ ConflictKind.REAL, ConflictKind.PSEUDO), "Conflicts", getCrossReferenceAdapter());
final IDifferenceGroup leftSide = new BasicDifferenceGroupImpl(comparison, Predicates.and(
fromSide(DifferenceSource.LEFT), Predicates.not(hasConflict(ConflictKind.REAL,
- ConflictKind.PSEUDO))), "Left side");
+ ConflictKind.PSEUDO))), "Left side", getCrossReferenceAdapter());
final IDifferenceGroup rightSide = new BasicDifferenceGroupImpl(comparison, Predicates.and(
fromSide(DifferenceSource.RIGHT), Predicates.not(hasConflict(ConflictKind.REAL,
- ConflictKind.PSEUDO))), "Right side");
+ ConflictKind.PSEUDO))), "Right side", getCrossReferenceAdapter());
differenceGroups = ImmutableList.of(conflicts, leftSide, rightSide);
}
@@ -166,8 +166,9 @@ public class ThreeWayComparisonGroupProvider extends AdapterImpl implements IDif
* @see org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.BasicDifferenceGroupImpl#BasicDifferenceGroupImpl(org.eclipse.emf.compare.Comparison,
* java.lang.Iterable, com.google.common.base.Predicate, java.lang.String)
*/
- public ConflictsGroupImpl(Comparison comparison, Predicate<? super Diff> filter, String name) {
- super(comparison, filter, name);
+ public ConflictsGroupImpl(Comparison comparison, Predicate<? super Diff> filter, String name,
+ ECrossReferenceAdapter crossReferenceAdapter) {
+ super(comparison, filter, name, crossReferenceAdapter);
}
/**

Back to the top