diff options
author | Axel Richard | 2013-07-25 08:37:47 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2013-07-26 08:23:52 +0000 |
commit | 7870aeb68103ee678b86f735ef3c269da28e2ec9 (patch) | |
tree | 8b6095408d749b13b36b532ec21523f38453444c /plugins/org.eclipse.emf.compare.ide.ui/src | |
parent | a44f3196ab06a4f52f8eed312aebd94bb4ac9dc9 (diff) | |
download | org.eclipse.emf.compare-7870aeb68103ee678b86f735ef3c269da28e2ec9.tar.gz org.eclipse.emf.compare-7870aeb68103ee678b86f735ef3c269da28e2ec9.tar.xz org.eclipse.emf.compare-7870aeb68103ee678b86f735ef3c269da28e2ec9.zip |
[413707] Remove merge buttons in content merge viewer
Bug: 413707
Change-Id: Ic00cc0268947f9c19adfabd5838b35d0acf22bdc
Diffstat (limited to 'plugins/org.eclipse.emf.compare.ide.ui/src')
3 files changed, 75 insertions, 166 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/table/TableContentMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/table/TableContentMergeViewer.java index 45ef92e57..a64f41592 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/table/TableContentMergeViewer.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/table/TableContentMergeViewer.java @@ -15,8 +15,6 @@ import java.util.ResourceBundle; import org.eclipse.compare.CompareConfiguration; import org.eclipse.emf.compare.Diff; import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.EMFCompareContentMergeViewer; -import org.eclipse.emf.compare.internal.utils.ComparisonUtil; -import org.eclipse.emf.compare.rcp.EMFCompareRCPPlugin; import org.eclipse.emf.compare.rcp.ui.internal.contentmergeviewer.accessor.ICompareAccessor; import org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.IMergeViewer.MergeViewerSide; import org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.impl.AbstractMergeViewer; @@ -29,6 +27,10 @@ import org.eclipse.emf.edit.provider.IItemFontProvider; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; @@ -287,6 +289,28 @@ public class TableContentMergeViewer extends EMFCompareContentMergeViewer { } } + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.EMFCompareContentMergeViewer#createToolItems(org.eclipse.jface.action.ToolBarManager) + */ + @Override + protected void createToolItems(ToolBarManager toolBarManager) { + super.createToolItems(toolBarManager); + IContributionItem[] items = toolBarManager.getItems(); + for (IContributionItem iContributionItem : items) { + if (iContributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)iContributionItem).getAction(); + String id = action.getActionDefinitionId(); + if ("org.eclipse.compare.copyAllLeftToRight".equals(id)) { + toolBarManager.remove(iContributionItem); + } else if ("org.eclipse.compare.copyAllRightToLeft".equals(id)) { + toolBarManager.remove(iContributionItem); + } + } + } + } + private void drawCenterLine(GC g, Rectangle leftClientArea, Rectangle rightClientArea, TableItem leftItem, TableItem rightItem) { Control control = getCenterControl(); diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewer.java index 890b8acc5..80544258d 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewer.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/text/EMFCompareTextMergeViewer.java @@ -10,11 +10,7 @@ *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.text; -import static com.google.common.collect.Iterables.filter; - import com.google.common.base.Charsets; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.io.ByteStreams; import com.google.common.io.Closeables; @@ -22,9 +18,7 @@ import com.google.common.io.Closeables; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import java.util.Collections; import java.util.EventObject; -import java.util.List; import java.util.ResourceBundle; import java.util.Set; import java.util.concurrent.Executors; @@ -39,10 +33,8 @@ import org.eclipse.compare.contentmergeviewer.IMergeViewerContentProvider; import org.eclipse.compare.contentmergeviewer.TextMergeViewer; import org.eclipse.compare.internal.CompareHandlerService; import org.eclipse.compare.internal.MergeSourceViewer; -import org.eclipse.compare.internal.Utilities; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.emf.common.command.Command; import org.eclipse.emf.common.command.CommandStackListener; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.common.util.EList; @@ -50,7 +42,6 @@ import org.eclipse.emf.compare.AttributeChange; import org.eclipse.emf.compare.Comparison; import org.eclipse.emf.compare.Conflict; import org.eclipse.emf.compare.Diff; -import org.eclipse.emf.compare.DifferenceSource; import org.eclipse.emf.compare.DifferenceState; import org.eclipse.emf.compare.Match; import org.eclipse.emf.compare.command.ICompareCommandStack; @@ -62,9 +53,7 @@ import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.util.RedoActio import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.util.UndoAction; import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.CompareInputAdapter; import org.eclipse.emf.compare.ide.ui.internal.util.SWTUtil; -import org.eclipse.emf.compare.rcp.EMFCompareRCPPlugin; import org.eclipse.emf.compare.rcp.ui.internal.EMFCompareConstants; -import org.eclipse.emf.compare.utils.EMFComparePredicates; import org.eclipse.emf.compare.utils.IEqualityHelper; import org.eclipse.emf.compare.utils.ReferenceUtil; import org.eclipse.emf.ecore.EAttribute; @@ -74,17 +63,14 @@ import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.change.util.ChangeRecorder; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.edit.command.ChangeCommand; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.ToolBarManager; +import org.eclipse.jface.text.ITextListener; +import org.eclipse.jface.text.TextEvent; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; -import org.eclipse.swt.events.VerifyEvent; -import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; @@ -99,10 +85,6 @@ public class EMFCompareTextMergeViewer extends TextMergeViewer implements IPrope private DynamicObject fDynamicObject; - private ActionContributionItem fCopyDiffLeftToRightItem; - - private ActionContributionItem fCopyDiffRightToLeftItem; - private UndoAction fUndoAction; private RedoAction fRedoAction; @@ -241,58 +223,6 @@ public class EMFCompareTextMergeViewer extends TextMergeViewer implements IPrope } /** - * {@inheritDoc} - * - * @see org.eclipse.compare.contentmergeviewer.TextMergeViewer#copy(boolean) - */ - @Override - protected void copy(final boolean leftToRight) { - final List<Diff> differences; - - if (getComparison().isThreeWay()) { - differences = ImmutableList.copyOf(filter(getComparison().getDifferences(), - new Predicate<Diff>() { - public boolean apply(Diff diff) { - final boolean unresolved = diff.getState() == DifferenceState.UNRESOLVED; - final boolean nonConflictual = diff.getConflict() == null; - final boolean fromLeftToRight = leftToRight - && diff.getSource() == DifferenceSource.LEFT; - final boolean fromRightToLeft = !leftToRight - && diff.getSource() == DifferenceSource.RIGHT; - return unresolved && nonConflictual && (fromLeftToRight || fromRightToLeft); - } - })); - } else { - differences = ImmutableList.copyOf(filter(getComparison().getDifferences(), EMFComparePredicates - .hasState(DifferenceState.UNRESOLVED))); - } - - if (differences.size() > 0) { - final Command copyCommand = getEditingDomain().createCopyCommand(differences, leftToRight, - EMFCompareRCPPlugin.getDefault().getMergerRegistry()); - - getEditingDomain().getCommandStack().execute(copyCommand); - refresh(); - } - } - - protected void copyDiff(boolean leftToRight) { - Object input = getInput(); - if (input instanceof CompareInputAdapter - && ((CompareInputAdapter)input).getComparisonObject() instanceof AttributeChange) { - final AttributeChange attributeChange = (AttributeChange)((CompareInputAdapter)input) - .getComparisonObject(); - - final Command copyCommand = getEditingDomain().createCopyCommand( - Collections.singletonList(attributeChange), leftToRight, - EMFCompareRCPPlugin.getDefault().getMergerRegistry()); - getEditingDomain().getCommandStack().execute(copyCommand); - - refresh(); - } - } - - /** * Inhibits this method to avoid asking to save on each input change!! * * @see org.eclipse.compare.contentmergeviewer.ContentMergeViewer#doSave(java.lang.Object, @@ -400,26 +330,30 @@ public class EMFCompareTextMergeViewer extends TextMergeViewer implements IPrope } }); - textWidget.addVerifyListener(new VerifyListener() { - public void verifyText(VerifyEvent e) { - fDelayedExecutor.schedule(new Runnable() { - public void run() { - // When we leave the current input - Object oldInput = getInput(); - if (oldInput instanceof CompareInputAdapter) { - final AttributeChange diff = (AttributeChange)((CompareInputAdapter)oldInput) - .getComparisonObject(); - final EAttribute eAttribute = diff.getAttribute(); - final Match match = diff.getMatch(); - final IEqualityHelper equalityHelper = match.getComparison().getEqualityHelper(); - - updateModel(diff, eAttribute, equalityHelper, match.getLeft(), true); - updateModel(diff, eAttribute, equalityHelper, match.getRight(), false); + viewer.getSourceViewer().addTextListener(new ITextListener() { + public void textChanged(TextEvent event) { + final Object oldInput = getInput(); + if (event.getDocumentEvent() != null && oldInput instanceof CompareInputAdapter) { + fDelayedExecutor.schedule(new Runnable() { + public void run() { + // When we leave the current input + if (oldInput instanceof CompareInputAdapter) { + final AttributeChange diff = (AttributeChange)((CompareInputAdapter)oldInput) + .getComparisonObject(); + final EAttribute eAttribute = diff.getAttribute(); + final Match match = diff.getMatch(); + final IEqualityHelper equalityHelper = match.getComparison() + .getEqualityHelper(); + + updateModel(diff, eAttribute, equalityHelper, match.getLeft(), true); + updateModel(diff, eAttribute, equalityHelper, match.getRight(), false); + } } - } - }); + }); + } } }); + } private void setActiveViewer(MergeSourceViewer viewer, boolean activate) { @@ -452,81 +386,6 @@ public class EMFCompareTextMergeViewer extends TextMergeViewer implements IPrope } /** - * {@inheritDoc} - * - * @see org.eclipse.compare.contentmergeviewer.TextMergeViewer#createToolItems(org.eclipse.jface.action.ToolBarManager) - */ - @SuppressWarnings("restriction") - @Override - protected void createToolItems(ToolBarManager toolBarManager) { - // avoid super to avoid NPE in org.eclipse.compare.internal.ViewerDescriptor.createViewer - CompareHandlerService handlerService = CompareHandlerService.createFor(getCompareConfiguration() - .getContainer(), getLeftSourceViewer().getSourceViewer().getControl().getShell()); - setHandlerService(handlerService); - - // Copy actions - CompareConfiguration cc = getCompareConfiguration(); - if (cc.isRightEditable()) { - Action copyLeftToRight = new Action() { - @Override - public void run() { - copyDiff(true); - navigate(true); - } - }; - Utilities.initAction(copyLeftToRight, getResourceBundle(), "action.CopyDiffLeftToRight."); //$NON-NLS-1$ - fCopyDiffLeftToRightItem = new ActionContributionItem(copyLeftToRight); - fCopyDiffLeftToRightItem.setVisible(true); - toolBarManager.appendToGroup("merge", fCopyDiffLeftToRightItem); //$NON-NLS-1$ - handlerService.registerAction(copyLeftToRight, "org.eclipse.compare.copyLeftToRight"); //$NON-NLS-1$ - } - - if (cc.isLeftEditable()) { - Action copyRightToLeft = new Action() { - @Override - public void run() { - copyDiff(false); - navigate(true); - } - }; - Utilities.initAction(copyRightToLeft, getResourceBundle(), "action.CopyDiffRightToLeft."); //$NON-NLS-1$ - fCopyDiffRightToLeftItem = new ActionContributionItem(copyRightToLeft); - fCopyDiffRightToLeftItem.setVisible(true); - toolBarManager.appendToGroup("merge", fCopyDiffRightToLeftItem); //$NON-NLS-1$ - handlerService.registerAction(copyRightToLeft, "org.eclipse.compare.copyRightToLeft"); //$NON-NLS-1$ - } - - // Navigation - final Action nextDiff = new Action() { - @Override - public void run() { - endOfContentReached(true); - } - }; - Utilities.initAction(nextDiff, getResourceBundle(), "action.NextDiff."); - ActionContributionItem contributionNextDiff = new ActionContributionItem(nextDiff); - contributionNextDiff.setVisible(true); - toolBarManager.appendToGroup("navigation", contributionNextDiff); - - final Action previousDiff = new Action() { - @Override - public void run() { - endOfContentReached(false); - } - }; - Utilities.initAction(previousDiff, getResourceBundle(), "action.PrevDiff."); - ActionContributionItem contributionPreviousDiff = new ActionContributionItem(previousDiff); - contributionPreviousDiff.setVisible(true); - toolBarManager.appendToGroup("navigation", contributionPreviousDiff); - - fRedoAction = new RedoAction(getEditingDomain()); - fUndoAction = new UndoAction(getEditingDomain()); - - getHandlerService().setGlobalActionHandler(ActionFactory.UNDO.getId(), fUndoAction); - getHandlerService().setGlobalActionHandler(ActionFactory.REDO.getId(), fRedoAction); - } - - /** * Called by the framework when the last (or first) diff of the current content viewer has been reached. * This will open the content viewer for the next (or previous) diff displayed in the structure viewer. * diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewer.java index 4a50e8f85..74bf283d2 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewer.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/tree/TreeContentMergeViewer.java @@ -45,6 +45,10 @@ import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory import org.eclipse.emf.edit.tree.TreeNode; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; @@ -373,6 +377,28 @@ public class TreeContentMergeViewer extends EMFCompareContentMergeViewer { } } + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.EMFCompareContentMergeViewer#createToolItems(org.eclipse.jface.action.ToolBarManager) + */ + @Override + protected void createToolItems(ToolBarManager toolBarManager) { + super.createToolItems(toolBarManager); + IContributionItem[] items = toolBarManager.getItems(); + for (IContributionItem iContributionItem : items) { + if (iContributionItem instanceof ActionContributionItem) { + IAction action = ((ActionContributionItem)iContributionItem).getAction(); + String id = action.getActionDefinitionId(); + if ("org.eclipse.compare.copyAllLeftToRight".equals(id)) { + toolBarManager.remove(iContributionItem); + } else if ("org.eclipse.compare.copyAllRightToLeft".equals(id)) { + toolBarManager.remove(iContributionItem); + } + } + } + } + private List<TreeItem> getExpandedTreeItems(Tree tree) { return getExpandedTreeItems(tree.getItems()); } |