blob: 536e6bf35b68767d14070f4c2960ad5021220714 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2005, 2019 SAP SE and others
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* SAP SE - initial API, implementation and documentation
* mwenz - Bug 363539 - Enabled feature delegation via IDiagramEditor.execute method
* mgorning - Bug 371671 - addGraphicalRepresentation returns null in dark mode
* mwenz - Felix Velasco - Bug 374918 - Let default paste use LocalSelectionTransfer
* fvelasco - Bug 396247 - ImageDescriptor changes
* pjpaulin - Bug 352120 - Now uses IDiagramContainerUI interface
* mwenz - Bug 370888 - API Access to export and print
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.graphiti.bot.tests;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable.syncExec;
import java.util.Collection;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.graphiti.bot.tests.features.DefaultCopyFeature;
import org.eclipse.graphiti.bot.tests.util.ITestConstants;
import org.eclipse.graphiti.dt.IDiagramTypeProvider;
import org.eclipse.graphiti.features.ConfigurableFeatureProviderWrapper;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.IMappingProvider;
import org.eclipse.graphiti.features.IUpdateFeature;
import org.eclipse.graphiti.features.context.IAddContext;
import org.eclipse.graphiti.features.context.IContext;
import org.eclipse.graphiti.features.context.ICopyContext;
import org.eclipse.graphiti.features.context.IPasteContext;
import org.eclipse.graphiti.features.context.IReconnectionContext;
import org.eclipse.graphiti.features.context.IUpdateContext;
import org.eclipse.graphiti.features.context.impl.AddContext;
import org.eclipse.graphiti.features.context.impl.AreaAnchorContext;
import org.eclipse.graphiti.features.context.impl.AreaContext;
import org.eclipse.graphiti.features.context.impl.CopyContext;
import org.eclipse.graphiti.features.context.impl.LayoutContext;
import org.eclipse.graphiti.features.context.impl.PasteContext;
import org.eclipse.graphiti.features.context.impl.ReconnectionContext;
import org.eclipse.graphiti.features.context.impl.UpdateContext;
import org.eclipse.graphiti.features.impl.AbstractAddFeature;
import org.eclipse.graphiti.features.impl.AbstractFeature;
import org.eclipse.graphiti.features.impl.DefaultMoveAnchorFeature;
import org.eclipse.graphiti.features.impl.DefaultReconnectionFeature;
import org.eclipse.graphiti.internal.features.context.impl.base.DefaultContext;
import org.eclipse.graphiti.mm.Property;
import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
import org.eclipse.graphiti.mm.pictograms.Anchor;
import org.eclipse.graphiti.mm.pictograms.AnchorContainer;
import org.eclipse.graphiti.mm.pictograms.BoxRelativeAnchor;
import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator;
import org.eclipse.graphiti.mm.pictograms.ContainerShape;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.FixPointAnchor;
import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.mm.pictograms.PictogramLink;
import org.eclipse.graphiti.mm.pictograms.Shape;
import org.eclipse.graphiti.pattern.mapping.data.ImageDataMapping;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.testtool.ecore.TestDiagramTypeProvider;
import org.eclipse.graphiti.testtool.sketch.SketchDiagramTypeProvider;
import org.eclipse.graphiti.ui.editor.DiagramEditor;
import org.eclipse.graphiti.ui.editor.IDiagramContainerUI;
import org.eclipse.graphiti.ui.features.AbstractPasteFeature;
import org.eclipse.graphiti.ui.features.DefaultFeatureProvider;
import org.eclipse.graphiti.ui.internal.GraphitiUIPlugin;
import org.eclipse.graphiti.ui.internal.editor.GFMarqueeSelectionTool;
import org.eclipse.graphiti.ui.internal.util.clipboard.ModelClipboard;
import org.eclipse.graphiti.ui.services.GraphitiUi;
import org.eclipse.graphiti.util.LocationInfo;
import org.eclipse.swtbot.swt.finder.results.VoidResult;
import org.junit.Test;
// Check whether this test makes sense at all...
@SuppressWarnings("restriction")
public class GFPackageTests extends AbstractGFTests {
public GFPackageTests() {
super();
}
@Test
public void testDarkFeatureProcessing() throws Exception {
String[] providerIds = GraphitiUi.getExtensionManager().getDiagramTypeProviderIds(
ITestConstants.DIAGRAM_TYPE_ID_SKETCH);
assertTrue("no dtp for sketch diagram type available", providerIds.length > 0);
if (providerIds.length > 0) {
final Diagram d = createDiagram(ITestConstants.DIAGRAM_TYPE_ID_SKETCH, "diagram");
IDiagramTypeProvider dtp = GraphitiUi.getExtensionManager().createDiagramTypeProvider(d, providerIds[0]);
assertNotNull("dtp couldn't be instantiated", dtp);
// Bug 363539: assure that feature execution in dummy editor works
final boolean[] canExecuteCalled = { false };
final boolean[] executeCalled = { false };
dtp.getDiagramBehavior().executeFeature(new AbstractFeature(dtp.getFeatureProvider()) {
public boolean canExecute(IContext context) {
canExecuteCalled[0] = true;
return true;
}
public void execute(IContext context) {
executeCalled[0] = true;
}
}, new DefaultContext());
assertTrue(canExecuteCalled[0]);
assertTrue(executeCalled[0]);
// Bug 371671 - addGraphicalRepresentation returns null in dark mode
AbstractAddFeature addFeature = new AbstractAddFeature(dtp.getFeatureProvider()) {
public boolean canAdd(IAddContext context) {
return true;
}
public PictogramElement add(IAddContext context) {
Shape shape = Graphiti.getPeCreateService().createShape(d, true);
return shape;
}
};
Object result = dtp.getDiagramBehavior().executeFeature(addFeature, new AddContext());
assertTrue(result instanceof Shape);
}
}
@Test
public void testGraphitiUi() throws Exception {
String id = DiagramEditor.DIAGRAM_EDITOR_ID;
assertNotNull(id);
assertTrue(!("".equals(id)));
assertNotNull(GraphitiUIPlugin.getDefault());
}
@Test
public void testGraphitiUiInternalEditor() throws Exception {
new GFMarqueeSelectionTool();
}
@Test
public void testGraphitiFeatures() throws Exception {
SketchDiagramTypeProvider mySketchDiagramTypeProvider = new SketchDiagramTypeProvider();
IFeatureProvider provider = mySketchDiagramTypeProvider.getFeatureProvider();
assertTrue(provider instanceof ConfigurableFeatureProviderWrapper);
ConfigurableFeatureProviderWrapper myConfigurableFeatureProviderWrapper = (ConfigurableFeatureProviderWrapper) provider;
// test canAdd
AreaContext areaContext = new AreaContext();
areaContext.setLocation(10, 20);
final Diagram diagram = createDiagram("testPackageOrgEclipseGraphitiFeatures");
Object value = new Object();
AddContext addContext = new AddContext(areaContext, value);
addContext.setTargetContainer(diagram);
assertTrue(myConfigurableFeatureProviderWrapper.canAdd(addContext).toBoolean());
addContext.setTargetContainer(null);
assertFalse(myConfigurableFeatureProviderWrapper.canAdd(addContext).toBoolean());
// test getAddFeature
addContext.setTargetContainer(diagram);
assertNotNull(myConfigurableFeatureProviderWrapper.getAddFeature(addContext));
// test canLayout
IDiagramContainerUI diagramEditor = openDiagramEditor(ITestConstants.DIAGRAM_TYPE_ID_ECORE);
PictogramElement pe = getPictogramElement(diagramEditor);
LayoutContext layoutContext = new LayoutContext(pe);
assertFalse(myConfigurableFeatureProviderWrapper.canLayout(layoutContext).toBoolean());
page.closeActiveEditor();
}
@Test
public void testGraphitiFeaturesContext() throws Exception {
String s = null;
TestDiagramTypeProvider myDiagramTypeProvider = new TestDiagramTypeProvider();
final IDiagramContainerUI diagramEditor = openDiagramEditor(ITestConstants.DIAGRAM_TYPE_ID_ECORE);
final Diagram diagram = diagramEditor.getDiagramTypeProvider().getDiagram();
myDiagramTypeProvider.init(diagram, diagramEditor.getDiagramBehavior());
PictogramElement pe = getPictogramElement(diagramEditor);
EList<Shape> shapes = diagram.getChildren();
assertNotNull(pe);
PictogramElement[] pes = new PictogramElement[] { pe };
final DefaultCopyFeature myDefaultCopyFeature = new DefaultCopyFeature(
myDiagramTypeProvider.getFeatureProvider());
final ICopyContext copyContext = new CopyContext(pes);
assertEquals(true, myDefaultCopyFeature.canExecute(copyContext));
syncExec(new VoidResult() {
public void run() {
myDefaultCopyFeature.execute(copyContext);
}
});
s = null;
s = myDefaultCopyFeature.getName();
assertNotNull(s);
assertFalse("".equals(s));
final MyPasteFeature myPasteFeature = new MyPasteFeature(myDiagramTypeProvider.getFeatureProvider(), diagram);
final PasteContext pasteContext = new PasteContext(pes);
pasteContext.setLocation(100, 200);
syncExec(new VoidResult() {
public void run() {
assertEquals(true, myPasteFeature.canExecute(pasteContext));
myPasteFeature.execute(pasteContext);
diagramEditor.doSave(null);
// duplicated and pasted objects are not equal with original
// objects
assertFalse(myPasteFeature.isEqual());
}
});
s = null;
s = myPasteFeature.getName();
assertNotNull(s);
assertFalse("".equals(s));
// test ModelClipboard to paste a root element (parent = null)
final Diagram dia = myDiagramTypeProvider.getDiagram();
final EObject[] objs = new EObject[] { dia };
syncExec(new VoidResult() {
public void run() {
ModelClipboard.getDefault().setContent(objs);
Collection<EObject> copy = ModelClipboard.getDefault().duplicateAndPaste(null,
ed.getTransactionalEditingDomain());
diagramEditor.doSave(null);
assertTrue(!copy.isEmpty() && !copy.contains(dia));
}
});
DefaultMoveAnchorFeature myDefaultMoveAnchorFeature = new DefaultMoveAnchorFeature(
myDiagramTypeProvider.getFeatureProvider());
GraphicsAlgorithm graphicsAlgorithmMock = createNiceMock(GraphicsAlgorithm.class);
replay(graphicsAlgorithmMock);
FixPointAnchor fixPointAnchorMock = createNiceMock(FixPointAnchor.class);
expect(fixPointAnchorMock.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(fixPointAnchorMock);
AreaAnchorContext myAreaAnchorContext = new AreaAnchorContext(fixPointAnchorMock);
assertEquals(true, myDefaultMoveAnchorFeature.canMoveAnchor(myAreaAnchorContext));
myAreaAnchorContext.setLocation(10, 20);
myDefaultMoveAnchorFeature.canExecute(myAreaAnchorContext);
myDefaultMoveAnchorFeature.execute(myAreaAnchorContext);
AnchorContainer myAnchorContainer = createNiceMock(AnchorContainer.class);
expect(myAnchorContainer.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock);
replay(myAnchorContainer);
BoxRelativeAnchor boxRelativeAnchor = createNiceMock(BoxRelativeAnchor.class);
expect(boxRelativeAnchor.getParent()).andReturn(myAnchorContainer);
expect(boxRelativeAnchor.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(boxRelativeAnchor);
myAreaAnchorContext = new AreaAnchorContext(boxRelativeAnchor);
myAreaAnchorContext.setLocation(10, 20);
myDefaultMoveAnchorFeature.moveAnchor(myAreaAnchorContext);
s = null;
s = myDefaultMoveAnchorFeature.getName();
assertNotNull(s);
assertFalse("".equals(s));
DefaultReconnectionFeature myDefaultReconnectionFeature = new DefaultReconnectionFeature(
myDiagramTypeProvider.getFeatureProvider());
Anchor anchorMock = createNiceMock(Anchor.class);
expect(anchorMock.getParent()).andReturn(shapes.get(0));
replay(anchorMock);
org.eclipse.graphiti.mm.pictograms.Connection connectionMock = createNiceMock(org.eclipse.graphiti.mm.pictograms.Connection.class);
expect(connectionMock.getEnd()).andReturn(boxRelativeAnchor).anyTimes();
expect(connectionMock.getStart()).andReturn(anchorMock).anyTimes();
replay(connectionMock);
IReconnectionContext myReconnectionContext = new ReconnectionContext(connectionMock, anchorMock, anchorMock,
null);
myReconnectionContext.setTargetPictogramElement(pe);
assertTrue(myDefaultReconnectionFeature.canExecute(myReconnectionContext));
myDefaultReconnectionFeature.reconnect(myReconnectionContext);
s = null;
s = myDefaultReconnectionFeature.getName();
assertNotNull(s);
assertFalse("".equals(s));
DefaultFeatureProvider myDefaultFeatureProvider = new DefaultFeatureProvider(myDiagramTypeProvider);
IUpdateContext context = new UpdateContext(null);
IUpdateFeature updateFeature = myDefaultFeatureProvider.getUpdateFeature(context);
final PictogramLink linkForPictogramElement = Graphiti.getLinkService().getLinkForPictogramElement(pe);
if (linkForPictogramElement != null) {
final EList<EObject> businessObject = linkForPictogramElement.getBusinessObjects();
if (businessObject != null && !businessObject.isEmpty()) {
executeInRecordingCommandInUIThread(diagramEditor.getDiagramBehavior(), new Runnable() {
public void run() {
businessObject.removeAll(businessObject);
}
});
}
}
context = new UpdateContext(pe);
try {
updateFeature.update(context);
} catch (Exception e) {
// ignore
}
page.closeActiveEditor();
}
@Test
public void testGraphitiPasteTwoDiagrams() throws Exception {
TestDiagramTypeProvider myDiagramTypeProvider = new TestDiagramTypeProvider();
final IDiagramContainerUI diagramEditor = openDiagramEditor(ITestConstants.DIAGRAM_TYPE_ID_ECORE);
final Diagram diagram = diagramEditor.getDiagramTypeProvider().getDiagram();
myDiagramTypeProvider.init(diagram, diagramEditor.getDiagramBehavior());
PictogramElement pe = getPictogramElement(diagramEditor);
assertNotNull(pe);
PictogramElement[] pes = new PictogramElement[] { pe };
syncExec(new VoidResult() {
public void run() {
diagramEditor.doSave(null);
}
});
final DefaultCopyFeature myDefaultCopyFeature = new DefaultCopyFeature(
myDiagramTypeProvider.getFeatureProvider());
final ICopyContext copyContext = new CopyContext(pes);
assertEquals(true, myDefaultCopyFeature.canExecute(copyContext));
syncExec(new VoidResult() {
public void run() {
myDefaultCopyFeature.execute(copyContext);
}
});
// Test paste in a second diagram
TestDiagramTypeProvider myDiagramTypeProvider2 = new TestDiagramTypeProvider();
final IDiagramContainerUI diagramEditor2 = openDiagramEditor(ITestConstants.DIAGRAM_TYPE_ID_ECORE, "xmi", "diagram2");
final Diagram diagram2 = diagramEditor2.getDiagramTypeProvider().getDiagram();
myDiagramTypeProvider2.init(diagram2, diagramEditor2.getDiagramBehavior());
final MyPasteFeature myPasteFeature = new MyPasteFeature(myDiagramTypeProvider2.getFeatureProvider(), diagram2);
final PasteContext pasteContext = new PasteContext(pes);
pasteContext.setLocation(100, 200);
syncExec(new VoidResult() {
public void run() {
assertEquals(true, myPasteFeature.canExecute(pasteContext));
myPasteFeature.execute(pasteContext);
// duplicated and pasted objects are not equal with original
// objects
assertFalse(myPasteFeature.isEqual());
}
});
syncExec(new VoidResult() {
public void run() {
diagramEditor2.doSave(null);
}
});
page.closeAllEditors();
}
private PictogramElement getPictogramElement(IDiagramContainerUI diagramEditor) {
Diagram diagram = diagramEditor.getDiagramTypeProvider().getDiagram();
addClassesAndReferencesToDiagram(diagramEditor);
EList<Shape> shapes = diagram.getChildren();
PictogramLink link;
link = shapes.get(0).getLink();
PictogramElement pe;
pe = link.getPictogramElement();
return pe;
}
private void addClassesAndReferencesToDiagram(final IDiagramContainerUI diagramEditor) {
syncExec(new VoidResult() {
public void run() {
IDiagramTypeProvider diagramTypeProvider = diagramEditor.getDiagramTypeProvider();
final IFeatureProvider fp = diagramTypeProvider.getFeatureProvider();
final Diagram currentDiagram = diagramTypeProvider.getDiagram();
executeInRecordingCommand(diagramEditor.getDiagramBehavior(), new Runnable() {
public void run() {
addClassesAndReferenceToDiagram(fp, currentDiagram, -100, -100, "Connection", -700, -200,
"ConnectionDecorator");
}
});
}
});
}
// Should be moved to a unit test plugin for the graphiti pattern plugin
@Test
public void testMappingData() throws Exception {
class MyImageDataMapping extends ImageDataMapping {
public MyImageDataMapping(IMappingProvider mappingProvider) {
super(mappingProvider);
}
}
IMappingProvider mappingProviderMock = createNiceMock(IMappingProvider.class);
replay(mappingProviderMock);
MyImageDataMapping myImageDataMapping = new MyImageDataMapping(mappingProviderMock);
PictogramLink pictogramLinkMock = createNiceMock(PictogramLink.class);
replay(pictogramLinkMock);
myImageDataMapping.getImageId(pictogramLinkMock);
myImageDataMapping.getUpdateWarning(pictogramLinkMock);
}
@Test
public void testGraphitiUtil() throws Exception {
Shape shapeMock = createNiceMock(Shape.class);
replay(shapeMock);
GraphicsAlgorithm graphicsAlgorithmMock = createNiceMock(GraphicsAlgorithm.class);
replay(graphicsAlgorithmMock);
LocationInfo myLocationInfo = new LocationInfo(shapeMock, graphicsAlgorithmMock);
assertTrue(shapeMock.equals(myLocationInfo.getShape()));
assertTrue(graphicsAlgorithmMock.equals(myLocationInfo.getGraphicsAlgorithm()));
graphicsAlgorithmMock = createNiceMock(GraphicsAlgorithm.class);
expect(graphicsAlgorithmMock.getX()).andReturn(10).anyTimes();
expect(graphicsAlgorithmMock.getY()).andReturn(10).anyTimes();
replay(graphicsAlgorithmMock);
PictogramElement pictogramElementMock = createNiceMock(PictogramElement.class);
expect(pictogramElementMock.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(pictogramElementMock);
shapeMock = createNiceMock(Shape.class);
expect(shapeMock.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(shapeMock);
EList<Shape> shapeList = new BasicEList<Shape>();
shapeList.add(shapeMock);
EList<org.eclipse.graphiti.mm.algorithms.styles.Point> points = new BasicEList<org.eclipse.graphiti.mm.algorithms.styles.Point>();
ConnectionDecorator connectionDecoratorMock1 = createNiceMock(ConnectionDecorator.class);
expect(connectionDecoratorMock1.isLocationRelative()).andReturn(new Boolean(true)).anyTimes();
expect(connectionDecoratorMock1.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(connectionDecoratorMock1);
ConnectionDecorator connectionDecoratorMock2 = createNiceMock(ConnectionDecorator.class);
expect(connectionDecoratorMock2.isLocationRelative()).andReturn(new Boolean(false)).anyTimes();
expect(connectionDecoratorMock2.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(connectionDecoratorMock2);
EList<ConnectionDecorator> decorators = new BasicEList<ConnectionDecorator>();
decorators.add(connectionDecoratorMock1);
decorators.add(connectionDecoratorMock2);
FreeFormConnection connectionMock = createNiceMock(FreeFormConnection.class);
expect(connectionMock.getBendpoints()).andReturn(points).anyTimes();
expect(connectionMock.getConnectionDecorators()).andReturn(decorators).anyTimes();
expect(connectionMock.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(connectionMock);
EList<org.eclipse.graphiti.mm.pictograms.Connection> connections = new BasicEList<org.eclipse.graphiti.mm.pictograms.Connection>();
connections.add(connectionMock);
Diagram diagramMock = createNiceMock(Diagram.class);
expect(diagramMock.getChildren()).andReturn(shapeList).anyTimes();
expect(diagramMock.getConnections()).andReturn(connections).anyTimes();
replay(diagramMock);
decorators = new BasicEList<ConnectionDecorator>();
decorators.add(connectionDecoratorMock2);
connectionMock = createNiceMock(FreeFormConnection.class);
expect(connectionMock.getBendpoints()).andReturn(points).anyTimes();
expect(connectionMock.getConnectionDecorators()).andReturn(decorators).anyTimes();
expect(connectionMock.getGraphicsAlgorithm()).andReturn(graphicsAlgorithmMock).anyTimes();
replay(connectionMock);
connections = new BasicEList<org.eclipse.graphiti.mm.pictograms.Connection>();
connections.add(connectionMock);
diagramMock = createNiceMock(Diagram.class);
expect(diagramMock.getChildren()).andReturn(shapeList).anyTimes();
expect(diagramMock.getConnections()).andReturn(connections).anyTimes();
replay(diagramMock);
final IDiagramContainerUI diagramEditor = openDiagramEditor(ITestConstants.DIAGRAM_TYPE_ID_ECORE);
final Diagram diagram = diagramEditor.getDiagramTypeProvider().getDiagram();
IDiagramTypeProvider diagramTypeProvider = diagramEditor.getDiagramTypeProvider();
final IFeatureProvider fp = diagramTypeProvider.getFeatureProvider();
final Diagram currentDiagram = diagramTypeProvider.getDiagram();
executeInRecordingCommandInUIThread(diagramEditor.getDiagramBehavior(), new Runnable() {
public void run() {
addClassesAndReferenceToDiagram(fp, currentDiagram, -100, -100, "Connection", -700, -200,
"ConnectionDecorator");
moveClassShape(fp, currentDiagram, 300, 300, "Connection");
getPeService().setPropertyValue(diagram, "Test", "test");
}
});
Property property = getPeService().getProperty(diagram, "Test");
assertTrue("test".equals(property.getValue()));
pictogramElementMock = createNiceMock(PictogramElement.class);
replay(pictogramElementMock);
page.closeActiveEditor();
}
final class MyPasteFeature extends AbstractPasteFeature {
private PictogramElement[] copy;
private PictogramElement[] fromClipboard = new PictogramElement[1];
private Diagram diagram;
public MyPasteFeature(IFeatureProvider fp, Diagram diagram) {
super(fp);
this.diagram = diagram;
}
public boolean canPaste(IPasteContext context) {
this.copy = context.getPictogramElements();
if (this.copy.length == 1) {
if (this.copy[0] instanceof ContainerShape) {
return getFromClipboard().length > 0;
}
}
return false;
}
public void paste(IPasteContext context) {
Object[] obs = getCopiesFromClipBoard(this.diagram);
assertTrue((obs != null && obs.length > 0 && obs[0] instanceof PictogramElement));
assertEquals(100, context.getX());
assertEquals(200, context.getY());
for (int i = 0; i < obs.length; i++) {
if (obs[i] instanceof PictogramElement) {
this.fromClipboard[i] = (PictogramElement) obs[i];
}
}
}
public boolean isEqual() {
boolean res = false;
if (this.copy != null && this.fromClipboard != null) {
res = getFeatureProvider().getDiagramTypeProvider().getCurrentToolBehaviorProvider()
.equalsBusinessObjects(this.copy[0], this.fromClipboard[0]);
}
return res;
}
}
}