Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/TextFallbackCompareViewerCreator.java')
-rw-r--r--plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/TextFallbackCompareViewerCreator.java537
1 files changed, 9 insertions, 528 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/TextFallbackCompareViewerCreator.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/TextFallbackCompareViewerCreator.java
index cdf14a20f..92586e9b6 100644
--- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/TextFallbackCompareViewerCreator.java
+++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/TextFallbackCompareViewerCreator.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2014, 2017 Obeo.
+ * Copyright (c) 2014, 2017 Obeo and others.
* 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
@@ -7,32 +7,17 @@
*
* Contributors:
* Obeo - initial API and implementation
- * Martin Fleck - bug 514079
+ * Philip Langer - bug 508526
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.IViewerCreator;
-import org.eclipse.compare.contentmergeviewer.TextMergeViewer;
-import org.eclipse.compare.internal.MergeViewerContentProvider;
-import org.eclipse.compare.structuremergeviewer.ICompareInput;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.compare.Comparison;
-import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIMessages;
-import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin;
import org.eclipse.emf.compare.ide.ui.internal.configuration.EMFCompareConfiguration;
-import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.CompareInputAdapter;
-import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.ForwardingCompareInput;
-import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.TreeNodeCompareInput;
-import org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider.TreeNodeCompareInputLabelProvider;
-import org.eclipse.emf.compare.internal.utils.ComparisonUtil;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.emf.edit.tree.TreeNode;
+import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.fallback.TextFallbackCompareInput;
+import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.fallback.TextFallbackCompareInputLabelProvider;
+import org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.fallback.TextFallbackMergeViewer;
import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
/**
@@ -40,8 +25,6 @@ import org.eclipse.swt.widgets.Composite;
*/
public class TextFallbackCompareViewerCreator implements IViewerCreator {
- private static TextFallbackMergeViewerContentProvider fContentProvider;
-
/**
* {@inheritDoc}
*
@@ -50,512 +33,10 @@ public class TextFallbackCompareViewerCreator implements IViewerCreator {
*/
public Viewer createViewer(Composite parent, CompareConfiguration config) {
final EMFCompareConfiguration emfConfig = new EMFCompareConfiguration(config);
- emfConfig.setLabelProvider(TreeNodeCompareInput.class, new TreeNodeCompareInputLabelProvider());
- return new TextFallbackMergeViewer(parent, emfConfig);
- }
-
- private static ICompareInput getAdaptedCompareInput(CompareInputAdapter input) {
- final ICompareInput adaptedCompareInput;
- Notifier target = input.getTarget();
- if (target instanceof TreeNode) {
- TreeNode treeNode = (TreeNode)target;
- EObject data = treeNode.getData();
- Comparison comparison = ComparisonUtil.getComparison(data);
- if (comparison != null) {
- ICompareInput compareInput = (ICompareInput)EcoreUtil.getAdapter(comparison.eAdapters(),
- ICompareInput.class);
- if (compareInput instanceof ForwardingCompareInput) {
- adaptedCompareInput = ((ForwardingCompareInput)compareInput).delegate();
- } else {
- adaptedCompareInput = compareInput;
- }
- } else {
- adaptedCompareInput = null;
- EMFCompareIDEUIPlugin.getDefault().log(IStatus.ERROR,
- "Cannot find a comparison from input " + input); //$NON-NLS-1$
- }
- } else {
- adaptedCompareInput = null;
- }
- return adaptedCompareInput;
- }
-
- /**
- * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
- */
- private static final class TextFallbackMergeViewer extends TextMergeViewer {
- private Object originalInput;
-
- private Boolean fIsMirrored;
-
- /**
- * @param parent
- * @param configuration
- */
- private TextFallbackMergeViewer(Composite parent, CompareConfiguration configuration) {
- super(parent, configuration);
- fContentProvider = new TextFallbackMergeViewerContentProvider(configuration);
- setMirrored(MirrorUtil.isMirrored(getCompareConfiguration()));
- }
-
- @Override
- public void setInput(Object input) {
- originalInput = input;
- if (input instanceof CompareInputAdapter) {
- super.setInput(getAdaptedCompareInput((CompareInputAdapter)input));
- } else if (input instanceof ForwardingCompareInput) {
- super.setInput(((ForwardingCompareInput)input).delegate());
- } else {
- super.setInput(input);
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.jface.viewers.ContentViewer#getInput()
- */
- @Override
- public Object getInput() {
- return originalInput;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.contentmergeviewer.TextMergeViewer#handleDispose(org.eclipse.swt.events.DisposeEvent)
- */
- @Override
- protected void handleDispose(DisposeEvent event) {
- super.handleDispose(event);
- originalInput = null;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.contentmergeviewer.ContentMergeViewer#getTitle()
- */
- @Override
- public String getTitle() {
- return EMFCompareIDEUIMessages.getString("TextFallbackCompareViewer.title"); //$NON-NLS-1$
- }
-
- /**
- * Sets the viewers {@link #isMirrored() mirrored} state and triggers an
- * {@link #updateMirrored(boolean) update}, if necessary.
- */
- protected void setMirrored(boolean isMirrored) {
- if (fIsMirrored == null || fIsMirrored.booleanValue() != isMirrored) {
- fIsMirrored = Boolean.valueOf(isMirrored);
- updateMirrored(isMirrored);
- }
- }
-
- /**
- * Updates the viewer based on its {@link #isMirrored() mirrored} state.
- */
- protected void updateMirrored(boolean isMirrored) {
- if (isMirrored) {
- setContentProvider(new MirroredTextFallbackMergeViewerContentProvider(
- getCompareConfiguration(), fContentProvider));
- } else {
- setContentProvider(fContentProvider);
- }
- }
- }
-
- /**
- * @author <a href="mailto:mikael.barbero@obeo.fr">Mikael Barbero</a>
- */
- private static final class TextFallbackMergeViewerContentProvider extends MergeViewerContentProvider {
- /**
- * @param cc
- */
- private TextFallbackMergeViewerContentProvider(CompareConfiguration cc) {
- super(cc);
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#isLeftEditable(java.lang.Object)
- */
- @Override
- public boolean isLeftEditable(Object element) {
- final boolean leftEditable;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- leftEditable = super.isLeftEditable(adaptedCompareInput);
- } else {
- leftEditable = super.isLeftEditable(element);
- }
- } else {
- leftEditable = super.isLeftEditable(element);
- }
- return leftEditable;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#isRightEditable(java.lang.Object)
- */
- @Override
- public boolean isRightEditable(Object element) {
- final boolean rightEditable;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- rightEditable = super.isRightEditable(adaptedCompareInput);
- } else {
- rightEditable = super.isRightEditable(element);
- }
- } else {
- rightEditable = super.isRightEditable(element);
- }
- return rightEditable;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#saveLeftContent(java.lang.Object,
- * byte[])
- */
- @Override
- public void saveLeftContent(Object element, byte[] bytes) {
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- super.saveLeftContent(adaptedCompareInput, bytes);
- } else {
- super.saveLeftContent(element, bytes);
- }
- } else {
- super.saveLeftContent(element, bytes);
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#saveRightContent(java.lang.Object,
- * byte[])
- */
- @Override
- public void saveRightContent(Object element, byte[] bytes) {
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- super.saveRightContent(adaptedCompareInput, bytes);
- } else {
- super.saveRightContent(element, bytes);
- }
- } else {
- super.saveRightContent(element, bytes);
- }
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getAncestorLabel(java.lang.Object)
- */
- @Override
- public String getAncestorLabel(Object element) {
- final String ancestorLabel;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- ancestorLabel = super.getAncestorLabel(adaptedCompareInput);
- } else {
- ancestorLabel = super.getAncestorLabel(element);
- }
- } else {
- ancestorLabel = super.getAncestorLabel(element);
- }
- return ancestorLabel;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getAncestorImage(java.lang.Object)
- */
- @Override
- public Image getAncestorImage(Object element) {
- final Image ancestorImage;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- ancestorImage = super.getAncestorImage(adaptedCompareInput);
- } else {
- ancestorImage = super.getAncestorImage(element);
- }
- } else {
- ancestorImage = super.getAncestorImage(element);
- }
- return ancestorImage;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getAncestorContent(java.lang.Object)
- */
- @Override
- public Object getAncestorContent(Object element) {
- final Object ancestorContent;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- ancestorContent = super.getAncestorContent(adaptedCompareInput);
- } else {
- ancestorContent = super.getAncestorContent(element);
- }
- } else {
- ancestorContent = super.getAncestorContent(element);
- }
- return ancestorContent;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getLeftLabel(java.lang.Object)
- */
- @Override
- public String getLeftLabel(Object element) {
- final String leftLabel;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- leftLabel = super.getLeftLabel(adaptedCompareInput);
- } else {
- leftLabel = super.getLeftLabel(element);
- }
- } else {
- leftLabel = super.getLeftLabel(element);
- }
- return leftLabel;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getLeftImage(java.lang.Object)
- */
- @Override
- public Image getLeftImage(Object element) {
- final Image leftImage;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- leftImage = super.getLeftImage(adaptedCompareInput);
- } else {
- leftImage = super.getLeftImage(element);
- }
- } else {
- leftImage = super.getLeftImage(element);
- }
- return leftImage;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getLeftContent(java.lang.Object)
- */
- @Override
- public Object getLeftContent(Object element) {
- final Object leftContent;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- leftContent = super.getLeftContent(adaptedCompareInput);
- } else {
- leftContent = super.getLeftContent(element);
- }
- } else {
- leftContent = super.getLeftContent(element);
- }
- return leftContent;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getRightLabel(java.lang.Object)
- */
- @Override
- public String getRightLabel(Object element) {
- final String rightLabel;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- rightLabel = super.getRightLabel(adaptedCompareInput);
- } else {
- rightLabel = super.getRightLabel(element);
- }
- } else {
- rightLabel = super.getRightLabel(element);
- }
- return rightLabel;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getRightImage(java.lang.Object)
- */
- @Override
- public Image getRightImage(Object element) {
- final Image rightImage;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- rightImage = super.getRightImage(adaptedCompareInput);
- } else {
- rightImage = super.getRightImage(element);
- }
- } else {
- rightImage = super.getRightImage(element);
- }
- return rightImage;
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.compare.internal.MergeViewerContentProvider#getRightContent(java.lang.Object)
- */
- @Override
- public Object getRightContent(Object element) {
- final Object rightContent;
- if (element instanceof CompareInputAdapter) {
- ICompareInput adaptedCompareInput = getAdaptedCompareInput((CompareInputAdapter)element);
- if (adaptedCompareInput != null) {
- rightContent = super.getRightContent(adaptedCompareInput);
- } else {
- rightContent = super.getRightContent(element);
- }
- } else {
- rightContent = super.getRightContent(element);
- }
- return rightContent;
- }
- }
-
- /**
- * Merge viewer content provider implementation that mirrors the left and right side. Swapping sides is
- * introduced in Eclipse Compare version 3.7, but due to backwards compatibility we cannot use their
- * implementation.
- *
- * @author Martin Fleck <mfleck@eclipsesource.com>
- */
- private static final class MirroredTextFallbackMergeViewerContentProvider extends MergeViewerContentProvider {
-
- private TextFallbackMergeViewerContentProvider delegate;
-
- public MirroredTextFallbackMergeViewerContentProvider(CompareConfiguration cc,
- TextFallbackMergeViewerContentProvider delegate) {
- super(cc);
- this.delegate = delegate;
- }
-
- @Override
- public void setLeftError(String errorMessage) {
- delegate.setRightError(errorMessage);
- }
-
- @Override
- public String getLeftLabel(Object element) {
- return delegate.getRightLabel(element);
- }
-
- @Override
- public Image getLeftImage(Object element) {
- return delegate.getRightImage(element);
- }
-
- @Override
- public Object getLeftContent(Object element) {
- return delegate.getRightContent(element);
- }
-
- @Override
- public boolean isLeftEditable(Object element) {
- return delegate.isRightEditable(element);
- }
-
- @Override
- public void saveLeftContent(Object element, byte[] bytes) {
- // The EMFCompareStructurededMergeViewer already "unswaps" the sides before saving-> keep sides
- delegate.saveLeftContent(element, bytes);
- }
-
- @Override
- public void setRightError(String errorMessage) {
- delegate.setLeftError(errorMessage);
- }
-
- @Override
- public String getRightLabel(Object element) {
- return delegate.getLeftLabel(element);
- }
-
- @Override
- public Image getRightImage(Object element) {
- return delegate.getLeftImage(element);
- }
-
- @Override
- public Object getRightContent(Object element) {
- return delegate.getLeftContent(element);
- }
-
- @Override
- public boolean isRightEditable(Object element) {
- return delegate.isLeftEditable(element);
- }
-
- @Override
- public void saveRightContent(Object element, byte[] bytes) {
- // The EMFCompareStructurededMergeViewer already "unswaps" the sides before saving-> keep sides
- delegate.saveRightContent(element, bytes);
- }
-
- @Override
- public void inputChanged(Viewer v, Object o1, Object o2) {
- delegate.inputChanged(v, o1, o2);
- }
-
- @Override
- public void setAncestorError(String errorMessage) {
- delegate.setAncestorError(errorMessage);
- }
-
- @Override
- public String getAncestorLabel(Object element) {
- return delegate.getAncestorLabel(element);
- }
-
- @Override
- public Image getAncestorImage(Object element) {
- return delegate.getAncestorImage(element);
- }
-
- @Override
- public Object getAncestorContent(Object element) {
- return delegate.getAncestorContent(element);
- }
-
- @Override
- public boolean showAncestor(Object element) {
- return delegate.showAncestor(element);
- }
+ TextFallbackMergeViewer textFallbackMergeViewer = new TextFallbackMergeViewer(parent, emfConfig);
+ emfConfig.setLabelProvider(TextFallbackCompareInput.class,
+ new TextFallbackCompareInputLabelProvider(textFallbackMergeViewer, emfConfig));
+ return textFallbackMergeViewer;
}
}

Back to the top