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()