/*******************************************************************************
* Copyright (c) 2015 Obeo.
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.tests.structuremergeviewer.actions;
import static com.google.common.collect.Iterables.filter;
import static org.eclipse.emf.compare.internal.EMFCompareEditMessages.getString;
import static org.junit.Assert.assertEquals;
import com.google.common.collect.Lists;
import java.io.IOException;
import java.util.Collection;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.EMFCompare;
import org.eclipse.emf.compare.EMFCompare.Builder;
import org.eclipse.emf.compare.domain.impl.EMFCompareEditingDomain;
import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIMessages;
import org.eclipse.emf.compare.ide.ui.tests.structuremergeviewer.actions.data.tooltips.NodeTooltipsInputData;
import org.eclipse.emf.compare.internal.merge.MergeMode;
import org.eclipse.emf.compare.merge.IMerger;
import org.eclipse.emf.compare.provider.TooltipLabelAdapterFactory;
import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec;
import org.eclipse.emf.compare.rcp.EMFCompareRCPPlugin;
import org.eclipse.emf.compare.rcp.internal.extension.impl.EMFCompareBuilderConfigurator;
import org.eclipse.emf.compare.rcp.ui.internal.configuration.IEMFCompareConfiguration;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.DefaultGroupProvider;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeNodeItemProviderSpec;
import org.eclipse.emf.compare.scope.DefaultComparisonScope;
import org.eclipse.emf.compare.scope.IComparisonScope;
import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
import org.eclipse.emf.edit.tree.TreeFactory;
import org.eclipse.emf.edit.tree.TreeNode;
import org.eclipse.jface.viewers.StructuredSelection;
import org.junit.Before;
import org.junit.Test;
@SuppressWarnings({"nls", "restriction" })
public class TooltipProviderTest extends AbstractTestUITreeNodeItemProviderAdapter {
private static AdapterFactory composedAdapterFactory;
private static TreeNodeItemProviderSpec itemProvider;
private IMerger.Registry mergerRegistry;
private TreeNode leftAttributeAdd;
private TreeNode rightAttributeAdd;
private TreeNode leftContainmentAdd;
private TreeNode rightContainmentAdd;
private TreeNode leftNonContainmentAdd;
private TreeNode rightNonContainmentAdd;
private TreeNode leftContainmentDelete;
private TreeNode rightContainmentDelete;
private TreeNode leftNonContainmentDelete;
private TreeNode rightNonContainmentDelete;
private TreeNode leftPositionMove;
private TreeNode rightPositionMove;
private TreeNode leftContainerMove;
private TreeNode rightContainerMove;
private TreeNode leftStringSet;
private TreeNode rightStringSet;
private TreeNode leftEmptyStringSet;
private TreeNode rightEmptyStringSet;
private TreeNode leftReferenceSet;
private TreeNode rightReferenceSet;
private TreeNode leftEmptyReferenceSet;
private TreeNode rightEmptyReferenceSet;
private TreeNode leftStringUnset;
private TreeNode rightStringUnset;
private TreeNode leftReferenceUnset;
private TreeNode rightReferenceUnset;
@Override
@Before
public void before() throws IOException {
super.before();
final Collection<AdapterFactory> factories = Lists.newArrayList();
factories.add(new CompareItemProviderAdapterFactorySpec());
factories.add(new EcoreItemProviderAdapterFactory());
factories.add(new ReflectiveItemProviderAdapterFactory());
factories.add(treeItemProviderAdapterFactory);
factories.add(new TooltipLabelAdapterFactory());
composedAdapterFactory = new ComposedAdapterFactory(factories);
itemProvider = (TreeNodeItemProviderSpec)treeItemProviderAdapterFactory.createTreeNodeAdapter();
mergerRegistry = EMFCompareRCPPlugin.getDefault().getMergerRegistry();
NodeTooltipsInputData scopeProvider = new NodeTooltipsInputData();
final IComparisonScope scope = new DefaultComparisonScope(scopeProvider.getLeft(),
scopeProvider.getRight(), scopeProvider.getOrigin());
final Builder comparisonBuilder = EMFCompare.builder();
EMFCompareBuilderConfigurator.createDefault().configure(comparisonBuilder);
final Comparison comparison = comparisonBuilder.build().compare(scope);
editingDomain = EMFCompareEditingDomain.create(scopeProvider.getLeft(), scopeProvider.getRight(),
scopeProvider.getOrigin());
TreeNode root = getNodeRootMatch(comparison);
// Get the compare editor tree nodes linked with each diff
TreeNode nodeSetString = root.getChildren().get(0);
leftStringSet = nodeSetString.getChildren().get(0).getChildren().get(0);
rightStringSet = nodeSetString.getChildren().get(1).getChildren().get(0);
TreeNode nodeSetFromEmptyString = root.getChildren().get(1);
leftEmptyStringSet = nodeSetFromEmptyString.getChildren().get(0).getChildren().get(0);
rightEmptyStringSet = nodeSetFromEmptyString.getChildren().get(1).getChildren().get(0);
TreeNode nodeSetReference = root.getChildren().get(2);
leftReferenceSet = nodeSetReference.getChildren().get(0).getChildren().get(0);
rightReferenceSet = nodeSetReference.getChildren().get(1).getChildren().get(0);
TreeNode nodeSetFromEmptyReference = root.getChildren().get(3);
leftEmptyReferenceSet = nodeSetFromEmptyReference.getChildren().get(0).getChildren().get(0);
rightEmptyReferenceSet = nodeSetFromEmptyReference.getChildren().get(1).getChildren().get(0);
TreeNode nodeUnsetString = root.getChildren().get(4);
leftStringUnset = nodeUnsetString.getChildren().get(0).getChildren().get(0);
rightStringUnset = nodeUnsetString.getChildren().get(1).getChildren().get(0);
TreeNode nodeUnsetRef = root.getChildren().get(5);
leftReferenceUnset = nodeUnsetRef.getChildren().get(0).getChildren().get(0);
rightReferenceUnset = nodeUnsetRef.getChildren().get(1).getChildren().get(0);
TreeNode nodeAddAttribute = root.getChildren().get(6);
leftAttributeAdd = nodeAddAttribute.getChildren().get(0).getChildren().get(0);
rightAttributeAdd = nodeAddAttribute.getChildren().get(1).getChildren().get(0);
TreeNode nodeAddRef = root.getChildren().get(7);
leftContainmentAdd = nodeAddRef.getChildren().get(2).getChildren().get(0); // newNode1
rightContainmentAdd = nodeAddRef.getChildren().get(3).getChildren().get(0); // newNode2
TreeNode nodeAddRefNonCont1 = root.getChildren().get(8);
leftNonContainmentAdd = nodeAddRefNonCont1.getChildren().get(0).getChildren().get(0);
rightNonContainmentAdd = nodeAddRefNonCont1.getChildren().get(1).getChildren().get(0);
TreeNode nodeDel = root.getChildren().get(9);
leftContainmentDelete = nodeDel.getChildren().get(1).getChildren().get(0);
rightContainmentDelete = nodeDel.getChildren().get(0).getChildren().get(0);
TreeNode nodeDelNonCont = root.getChildren().get(10);
leftNonContainmentDelete = nodeDelNonCont.getChildren().get(0).getChildren().get(0);
rightNonContainmentDelete = nodeDelNonCont.getChildren().get(1).getChildren().get(0);
TreeNode nodeMoveCont = root.getChildren().get(11);
leftContainerMove = nodeMoveCont.getChildren().get(1).getChildren().get(0);
rightContainerMove = nodeMoveCont.getChildren().get(0).getChildren().get(0);
TreeNode nodeMovePos = root.getChildren().get(12);
leftPositionMove = nodeMovePos.getChildren().get(0).getChildren().get(0);
rightPositionMove = nodeMovePos.getChildren().get(1).getChildren().get(0);
}
@Test
public void testReject() {
final String rejectChange = getString("ContextualTooltip.rejectChange");
final String leftUnchanged = getString("ContextualTooltip.readonly.leftUnchanged");
final String leftChanged = getString("ContextualTooltip.readonly.leftChanged");
final MergeMode accept = MergeMode.REJECT;
final boolean leftEditable = true;
final boolean rightEditable = false;
IEMFCompareConfiguration emfCC = createConfiguration(leftEditable, rightEditable);
emfCC.setAdapterFactory(composedAdapterFactory);
MockMergeAction action = new MockMergeAction(emfCC, mergerRegistry, accept, null);
// Get tooltip for the REJECT of a String Set on the Left side
action.updateSelection(new StructuredSelection(leftStringSet));
String toolTipText = action.getToolTipText();
String tooltipBody = getString("ContextualTooltip.set.left.reject", "singleValuedAttribute",
"NodeSingleValueAttribute", "value1", "value1bis");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a String Set on the Right side
action.updateSelection(new StructuredSelection(rightStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.reject", "value2", "singleValuedAttribute",
"NodeSingleValueAttribute");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of an empty String Set on the Left side
action.updateSelection(new StructuredSelection(leftEmptyStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.reject.empty", "singleValuedAttribute",
"NodeSingleValueAttribute", "newValue1");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of an empty String Set on the Right side
action.updateSelection(new StructuredSelection(rightEmptyStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.reject.empty", "singleValuedAttribute",
"NodeSingleValueAttribute");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.reject", "singleValuedReference",
"NodeSingleValueReference", "Node temp1", "Node temp5");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.reject", "Node temp2", "singleValuedReference",
"NodeSingleValueReference");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of an empty Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.reject.empty", "singleValuedReference",
"NodeSingleValueReference", "Node temp5");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of an empty Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.reject.empty", "singleValuedReference",
"NodeSingleValueReference");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a String Unset on the Left side
action.updateSelection(new StructuredSelection(leftStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.reject", "singleValuedAttribute",
"NodeSingleValueAttribute", "value3");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a String Unset on the Right side
action.updateSelection(new StructuredSelection(rightStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.reject", "singleValuedAttribute",
"NodeSingleValueAttribute", "value4");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Reference Unset on the Left side
action.updateSelection(new StructuredSelection(leftReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.reject", "singleValuedReference",
"NodeSingleValueReference", "Node temp3");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a reference Unset on the Right side
action.updateSelection(new StructuredSelection(rightReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.reject", "singleValuedReference",
"NodeSingleValueReference", "Node temp4");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of an Attribute Addition on the Left side
action.updateSelection(new StructuredSelection(leftAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.left.reject", "value 1",
"Node Multi Valued Attribute attribute1");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of an Attribute Addition on the Right side
action.updateSelection(new StructuredSelection(rightAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.right.reject", "value 2",
"Node Multi Valued Attribute attribute2");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.left.reject", "Node newNode1",
"Node AddReference");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.right.reject", "Node newNode2",
"Node AddReference");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Non Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.left.reject", "Node temp1");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Non Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.right.reject", "Node temp2");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Containment reference Deletion on the Left side
action.updateSelection(new StructuredSelection(leftContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.left.reject",
"Node Single Value Attribute M", "Node DelContainment");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Containment reference Deletion on the Right side
action.updateSelection(new StructuredSelection(rightContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.right.reject",
"Node Single Value Attribute N", "Node DelContainment");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Non Containment Deletion on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.left.reject", "Node temp7");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of a Non Containment Deletion on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.right.reject", "Node temp8");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of the move of an element to another Container on the Left side
action.updateSelection(new StructuredSelection(leftContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.left.reject",
"Node Single Value Attribute O", "Node MoveContainerOrigin", "Node MoveContainerDestination");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of the move of an element to another Container on the Right side
action.updateSelection(new StructuredSelection(rightContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.right.reject",
"Node Single Value Attribute P", "Node MoveContainerOrigin");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of the move of an element's position on the Left side
action.updateSelection(new StructuredSelection(leftPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.left.reject", "Node Q");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the REJECT of the move of an element's position on the Right side
action.updateSelection(new StructuredSelection(rightPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.right.container.reject", "Node S",
"Node MovePosition");
assertEquals(computeTooltip(rejectChange, tooltipBody, leftUnchanged), toolTipText);
// Get tooltip for the REJECT of multiple changes
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = EMFCompareIDEUIMessages.getString("reject.multiple.changes.tooltip");
assertEquals(tooltipBody, toolTipText);
action.clearCache();
}
@Test
public void testAccept() {
final String acceptChange = getString("ContextualTooltip.acceptChange");
final String leftUnchanged = getString("ContextualTooltip.readonly.leftUnchanged");
final String leftChanged = getString("ContextualTooltip.readonly.leftChanged");
final MergeMode accept = MergeMode.ACCEPT;
final boolean leftEditable = true;
final boolean rightEditable = false;
IEMFCompareConfiguration emfCC = createConfiguration(leftEditable, rightEditable);
emfCC.setAdapterFactory(composedAdapterFactory);
MockMergeAction action = new MockMergeAction(emfCC, mergerRegistry, accept, null);
// Get tooltip for the ACCEPT of a String Set on the Left side
action.updateSelection(new StructuredSelection(leftStringSet));
String toolTipText = action.getToolTipText();
String tooltipBody = getString("ContextualTooltip.set.left.accept", "value1bis",
"singleValuedAttribute", "NodeSingleValueAttribute");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a String Set on the Right side
action.updateSelection(new StructuredSelection(rightStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.accept", "singleValuedAttribute",
"NodeSingleValueAttribute", "value2bis", "value2");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.accept", "Node temp5", "singleValuedReference",
"NodeSingleValueReference");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.accept", "singleValuedReference",
"NodeSingleValueReference", "Node temp6", "Node temp2");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of an empty Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.accept", "Node temp5", "singleValuedReference",
"NodeSingleValueReference");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of an empty Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.accept.empty", "singleValuedReference",
"NodeSingleValueReference", "Node temp6");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a String Unset on the Left side
action.updateSelection(new StructuredSelection(leftStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.accept", "singleValuedAttribute",
"NodeSingleValueAttribute");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a String Unset on the Right side
action.updateSelection(new StructuredSelection(rightStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.accept", "singleValuedAttribute",
"NodeSingleValueAttribute", "value4");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Reference Unset on the Left side
action.updateSelection(new StructuredSelection(leftReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.accept", "singleValuedReference",
"NodeSingleValueReference");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a reference Unset on the Right side
action.updateSelection(new StructuredSelection(rightReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.accept", "singleValuedReference",
"NodeSingleValueReference", "Node temp4");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of an Attribute Addition on the Left side
action.updateSelection(new StructuredSelection(leftAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.left.accept", "value 1",
"Node Multi Valued Attribute attribute1");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of an Attribute Addition on the Right side
action.updateSelection(new StructuredSelection(rightAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.right.accept", "value 2",
"Node Multi Valued Attribute attribute2");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.left.accept", "Node newNode1",
"Node AddReference");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.right.accept", "Node newNode2",
"Node AddReference");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Non Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.left.accept", "Node temp1");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Non Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.right.accept", "Node temp2");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Containment reference Deletion on the Left side
action.updateSelection(new StructuredSelection(leftContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.left.accept",
"Node Single Value Attribute M", "Node DelContainment");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Containment reference Deletion on the Right side
action.updateSelection(new StructuredSelection(rightContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.right.accept",
"Node Single Value Attribute N", "Node DelContainment");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Non Containment Deletion on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.left.accept", "Node temp7");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of a Non Containment Deletion on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.right.accept", "Node temp8");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of the move of an element to another Container on the Left side
action.updateSelection(new StructuredSelection(leftContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.left.accept",
"Node Single Value Attribute O", "Node MoveContainerDestination");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of the move of an element to another Container on the Right side
action.updateSelection(new StructuredSelection(rightContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.right.accept",
"Node Single Value Attribute P", "Node MoveContainerDestination", "Node MoveContainerOrigin");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of the move of an element's position on the Left side
action.updateSelection(new StructuredSelection(leftPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.left.container.accept", "Node Q",
"Node MovePosition");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the ACCEPT of the move of an element's position on the Right side
action.updateSelection(new StructuredSelection(rightPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.right.container.accept", "Node S",
"Node MovePosition");
assertEquals(computeTooltip(acceptChange, tooltipBody, leftChanged), toolTipText);
// Get tooltip for the ACCEPT of multiple changes
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = EMFCompareIDEUIMessages.getString("accept.multiple.changes.tooltip");
assertEquals(tooltipBody, toolTipText);
action.clearCache();
}
@Test
public void testLeftToRight() {
final String rightChanged = getString("ContextualTooltip.editable.rightChanged");
final MergeMode accept = MergeMode.LEFT_TO_RIGHT;
final boolean leftEditable = true;
final boolean rightEditable = true;
IEMFCompareConfiguration emfCC = createConfiguration(leftEditable, rightEditable);
emfCC.setAdapterFactory(composedAdapterFactory);
MockMergeAction action = new MockMergeAction(emfCC, mergerRegistry, accept, null);
// Get tooltip for the LEFT_TO_RIGHT copy of a String Set on the Left side
action.updateSelection(new StructuredSelection(leftStringSet));
String toolTipText = action.getToolTipText();
String tooltipBody = getString("ContextualTooltip.set.left.leftToRight", "singleValuedAttribute",
"NodeSingleValueAttribute", "value1bis", "value1");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a String Set on the Right side
action.updateSelection(new StructuredSelection(rightStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.leftToRight", "singleValuedAttribute",
"NodeSingleValueAttribute", "value2", "value2bis");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of an empty String Set on the Right side
action.updateSelection(new StructuredSelection(rightEmptyStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.leftToRight.empty", "singleValuedAttribute",
"NodeSingleValueAttribute", "newValue2");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.leftToRight", "singleValuedReference",
"NodeSingleValueReference", "Node temp5", "Node temp1");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.leftToRight", "singleValuedReference",
"NodeSingleValueReference", "Node temp2", "Node temp6");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of an empty Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.leftToRight.empty", "singleValuedReference",
"NodeSingleValueReference", "Node temp5");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of an empty Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.leftToRight.empty", "singleValuedReference",
"NodeSingleValueReference", "Node temp6");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a String Unset on the Left side
action.updateSelection(new StructuredSelection(leftStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.leftToRight", "singleValuedAttribute",
"NodeSingleValueAttribute", "value3");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a String Unset on the Right side
action.updateSelection(new StructuredSelection(rightStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.leftToRight", "singleValuedAttribute",
"NodeSingleValueAttribute", "value4");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Reference Unset on the Left side
action.updateSelection(new StructuredSelection(leftReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.leftToRight", "singleValuedReference",
"NodeSingleValueReference", "Node temp3");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a reference Unset on the Right side
action.updateSelection(new StructuredSelection(rightReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.leftToRight", "singleValuedReference",
"NodeSingleValueReference", "Node temp4");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of an Attribute Addition on the Left side
action.updateSelection(new StructuredSelection(leftAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.left.leftToRight", "value 1",
"Node Multi Valued Attribute attribute1");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of an Attribute Addition on the Right side
action.updateSelection(new StructuredSelection(rightAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.right.leftToRight", "value 2",
"Node Multi Valued Attribute attribute2");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.left.leftToRight", "Node newNode1",
"Node AddReference");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.right.leftToRight", "Node newNode2",
"Node AddReference");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Non Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.left.leftToRight", "Node temp1");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Non Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.right.leftToRight", "Node temp2");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Containment reference Deletion on the Left side
action.updateSelection(new StructuredSelection(leftContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.left.leftToRight",
"Node Single Value Attribute M", "Node DelContainment");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Containment reference Deletion on the Right side
action.updateSelection(new StructuredSelection(rightContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.right.leftToRight",
"Node Single Value Attribute N", "Node DelContainment");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Non Containment Deletion on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.left.leftToRight", "Node temp7");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of a Non Containment Deletion on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.right.leftToRight", "Node temp8");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of the move of an element to another Container on the Left
// side
action.updateSelection(new StructuredSelection(leftContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.left.leftToRight",
"Node Single Value Attribute O", "Node MoveContainerDestination", "Node MoveContainerOrigin");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of the move of an element to another Container on the Right
// side
action.updateSelection(new StructuredSelection(rightContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.right.leftToRight",
"Node Single Value Attribute P", "Node MoveContainerOrigin", "Node MoveContainerDestination");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of the move of an element's position on the Left side
action.updateSelection(new StructuredSelection(leftPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.left.leftToRight", "Node Q");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
action.clearCache();
// Get tooltip for the LEFT_TO_RIGHT copy of the move of an element's position on the Right side
action.updateSelection(new StructuredSelection(rightPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.right.leftToRight", "Node S");
assertEquals(computeTooltip("", tooltipBody, rightChanged), toolTipText);
// Get tooltip for the LEFT_TO_RIGHT copy of multiple changes
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = EMFCompareIDEUIMessages.getString("merged.multiple.to.right.tooltip");
assertEquals(tooltipBody, toolTipText);
action.clearCache();
}
@Test
public void testRightToLeft() {
final String rightUnchanged = getString("ContextualTooltip.editable.rightUnchanged");
final MergeMode accept = MergeMode.RIGHT_TO_LEFT;
final boolean leftEditable = true;
final boolean rightEditable = true;
IEMFCompareConfiguration emfCC = createConfiguration(leftEditable, rightEditable);
emfCC.setAdapterFactory(composedAdapterFactory);
MockMergeAction action = new MockMergeAction(emfCC, mergerRegistry, accept, null);
// Get tooltip for the RIGHT_TO_LEFT copy of a String Set on the Left side
action.updateSelection(new StructuredSelection(leftStringSet));
String toolTipText = action.getToolTipText();
String tooltipBody = getString("ContextualTooltip.set.left.rightToLeft", "singleValuedAttribute",
"NodeSingleValueAttribute", "value1", "value1bis");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a String Set on the Right side
action.updateSelection(new StructuredSelection(rightStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.rightToLeft", "singleValuedAttribute",
"NodeSingleValueAttribute", "value2bis", "value2");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of an empty String Set on the Left side
action.updateSelection(new StructuredSelection(leftEmptyStringSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.rightToLeft.empty", "singleValuedAttribute",
"NodeSingleValueAttribute", "newValue1");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.rightToLeft", "singleValuedReference",
"NodeSingleValueReference", "Node temp1", "Node temp5");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.rightToLeft", "singleValuedReference",
"NodeSingleValueReference", "Node temp6", "Node temp2");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Reference Set on the Left side
action.updateSelection(new StructuredSelection(leftEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.left.rightToLeft.empty", "singleValuedReference",
"NodeSingleValueReference", "Node temp5");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Reference Set on the Right side
action.updateSelection(new StructuredSelection(rightEmptyReferenceSet));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.set.right.rightToLeft.empty", "singleValuedReference",
"NodeSingleValueReference", "Node temp6");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a String Unset on the Left side
action.updateSelection(new StructuredSelection(leftStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.rightToLeft", "singleValuedAttribute",
"NodeSingleValueAttribute", "value3");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a String Unset on the Right side
action.updateSelection(new StructuredSelection(rightStringUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.rightToLeft", "singleValuedAttribute",
"NodeSingleValueAttribute", "value4");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Reference Unset on the Left side
action.updateSelection(new StructuredSelection(leftReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.left.rightToLeft", "singleValuedReference",
"NodeSingleValueReference", "Node temp3");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a reference Unset on the Right side
action.updateSelection(new StructuredSelection(rightReferenceUnset));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.unset.right.rightToLeft", "singleValuedReference",
"NodeSingleValueReference", "Node temp4");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of an Attribute Addition on the Left side
action.updateSelection(new StructuredSelection(leftAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.left.rightToLeft", "value 1",
"Node Multi Valued Attribute attribute1");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of an Attribute Addition on the Right side
action.updateSelection(new StructuredSelection(rightAttributeAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.attribute.right.rightToLeft", "value 2",
"Node Multi Valued Attribute attribute2");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.left.rightToLeft", "Node newNode1",
"Node AddReference");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.containment.right.rightToLeft", "Node newNode2",
"Node AddReference");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Non Containment reference Addition on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.left.rightToLeft", "Node temp1");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Non Containment reference Addition on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.add.nonContainment.right.rightToLeft", "Node temp2");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Containment reference Deletion on the Left side
action.updateSelection(new StructuredSelection(leftContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.left.rightToLeft",
"Node Single Value Attribute M", "Node DelContainment");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Containment reference Deletion on the Right side
action.updateSelection(new StructuredSelection(rightContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.containment.right.rightToLeft",
"Node Single Value Attribute N", "Node DelContainment");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Non Containment Deletion on the Left side
action.updateSelection(new StructuredSelection(leftNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.left.rightToLeft", "Node temp7");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of a Non Containment Deletion on the Right side
action.updateSelection(new StructuredSelection(rightNonContainmentDelete));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.delete.nonContainment.right.rightToLeft", "Node temp8");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of the move of an element to another Container on the Left
// side
action.updateSelection(new StructuredSelection(leftContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.left.rightToLeft",
"Node Single Value Attribute O", "Node MoveContainerOrigin", "Node MoveContainerDestination");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of the move of an element to another Container on the Right
// side
action.updateSelection(new StructuredSelection(rightContainerMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.container.right.rightToLeft",
"Node Single Value Attribute P", "Node MoveContainerDestination", "Node MoveContainerOrigin");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of the move of an element's position on the Left side
action.updateSelection(new StructuredSelection(leftPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.left.rightToLeft", "Node Q");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
action.clearCache();
// Get tooltip for the RIGHT_TO_LEFT copy of the move of an element's position on the Right side
action.updateSelection(new StructuredSelection(rightPositionMove));
toolTipText = action.getToolTipText();
tooltipBody = getString("ContextualTooltip.move.position.right.rightToLeft", "Node S");
assertEquals(computeTooltip("", tooltipBody, rightUnchanged), toolTipText);
// Get tooltip for the RIGHT_TO_LEFT copy of multiple changes
action.updateSelection(new StructuredSelection(leftContainmentAdd));
toolTipText = action.getToolTipText();
tooltipBody = EMFCompareIDEUIMessages.getString("merged.multiple.to.left.tooltip");
assertEquals(tooltipBody, toolTipText);
action.clearCache();
}
private static TreeNode getNodeRootMatch(Comparison comparison) throws IOException {
TreeNode treeNode = TreeFactory.eINSTANCE.createTreeNode();
treeNode.setData(comparison);
treeNode.eAdapters().add(new DefaultGroupProvider());
Collection<?> children = itemProvider.getChildren(treeNode);
Iterable<?> matches = filter(children, matchTreeNode);
return (TreeNode)matches.iterator().next();
}
private String computeTooltip(String header, String body, String footer) {
String separator = "\n";
StringBuilder builder = new StringBuilder();
if (!"".equals(header)) {
builder.append(header);
builder.append(separator);
}
builder.append(body);
builder.append(separator);
builder.append(footer);
return builder.toString();
}
}