Enable users to merge all conflicts at once through right-click action
Change-Id: I77b5f6715aa87d2dae9d1adf73a20e502b90e1a8
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 ac6653a..79adb63 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
@@ -132,6 +132,7 @@
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.CascadingDifferencesFilter;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.StructureMergeViewerGrouper;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.GroupItemProviderAdapter;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.match.MatchOfContainmentReferenceChangeProcessor;
import org.eclipse.emf.compare.rcp.ui.internal.util.SWTUtil;
@@ -580,7 +581,7 @@
IMerger.Registry mergerRegistry = EMFCompareRCPPlugin.getDefault().getMergerRegistry();
if (singleDiffSelected) {
addSingleDiffMergeActions(manager, modes, mergerRegistry);
- } else if (isOneMatchOrResourceMatchSelected()) {
+ } else if (isOneMatchOrResourceMatchSelected() || isOneGroupSelected()) {
addMergeNonConflictingActions(manager, modes, mergerRegistry);
manager.add(new Separator());
addMergeConflictingActions(manager, modes, mergerRegistry);
@@ -710,7 +711,7 @@
* @return true if the item selected is mergeable, false otherwise.
*/
private boolean isOneMergeableItemSelected() {
- return isOneDiffSelected() || isOneMatchOrResourceMatchSelected();
+ return isOneDiffSelected() || isOneMatchOrResourceMatchSelected() || isOneGroupSelected();
}
/**
@@ -760,6 +761,20 @@
}
/**
+ * Checks if there is currently a single selected item in the viewer, and that item is a group.
+ *
+ * @return <code>true</code> if the single selected item in this viewer is a group.
+ */
+ private boolean isOneGroupSelected() {
+ ISelection selection = getSelection();
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
+ Object element = ((IStructuredSelection)selection).getFirstElement();
+ return element instanceof GroupItemProviderAdapter;
+ }
+ return false;
+ }
+
+ /**
* {@inheritDoc}
*
* @see org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.AbstractViewerWrapper#preHookCreateControlAndViewer()