diff options
-rw-r--r-- | plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java | 19 |
1 files changed, 17 insertions, 2 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 ac6653aff..79adb63f6 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.mergeviewer.IColorChangeEvent; 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 @@ public class EMFCompareStructureMergeViewer extends AbstractStructuredViewerWrap 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 @@ public class EMFCompareStructureMergeViewer extends AbstractStructuredViewerWrap * @return true if the item selected is mergeable, false otherwise. */ private boolean isOneMergeableItemSelected() { - return isOneDiffSelected() || isOneMatchOrResourceMatchSelected(); + return isOneDiffSelected() || isOneMatchOrResourceMatchSelected() || isOneGroupSelected(); } /** @@ -760,6 +761,20 @@ public class EMFCompareStructureMergeViewer extends AbstractStructuredViewerWrap } /** + * 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() |