blob: 919d82951ca2eccc797513f74833471e4d0ef5c8 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2013, 2013 SAP AG.
* 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:
* mwenz - Bug 421754 - Absolute position of active Shape nested in inactive ContainerShape is calculated incorrectly
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.graphiti.tests.tb;
import static org.junit.Assert.assertEquals;
import org.eclipse.graphiti.datatypes.ILocation;
import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
import org.eclipse.graphiti.mm.algorithms.Rectangle;
import org.eclipse.graphiti.mm.pictograms.ContainerShape;
import org.eclipse.graphiti.mm.pictograms.Diagram;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.services.Graphiti;
import org.eclipse.graphiti.services.ICreateService;
import org.eclipse.graphiti.services.IGaService;
import org.eclipse.graphiti.tb.DefaultToolBehaviorProvider;
import org.junit.Test;
public class DefaultToolBehaviorProviderTest {
private ICreateService createService = Graphiti.getCreateService();
private IGaService gaService = Graphiti.getGaService();
@Test
public void getAbsoluteLocation_singleGa() throws Exception {
Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
ContainerShape containerShape = createService.createContainerShape(diagram, true);
Rectangle rectangle = createService.createRectangle(containerShape);
gaService.setLocationAndSize(rectangle, 10, 20, 100, 100);
TestToolBehaviorProvider behaviorProvider = new TestToolBehaviorProvider();
ILocation location = behaviorProvider.getAbsoluteLocation(containerShape);
assertEquals(10, location.getX());
assertEquals(20, location.getY());
}
@Test
public void getAbsoluteLocation_twoGas() throws Exception {
Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
ContainerShape containerShape = createService.createContainerShape(diagram, true);
Rectangle rectangle = createService.createRectangle(containerShape);
gaService.setLocationAndSize(rectangle, 10, 20, 100, 100);
ContainerShape containerShape2 = createService.createContainerShape(containerShape, true);
Rectangle rectangle2 = createService.createRectangle(containerShape2);
gaService.setLocationAndSize(rectangle2, 5, 15, 50, 50);
TestToolBehaviorProvider behaviorProvider = new TestToolBehaviorProvider();
ILocation location = behaviorProvider.getAbsoluteLocation(containerShape2);
assertEquals(15, location.getX());
assertEquals(35, location.getY());
}
@Test
public void getAbsoluteLocation_twoGasWithInactive() throws Exception {
Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
ContainerShape containerShape = createService.createContainerShape(diagram, false);
Rectangle rectangle = createService.createRectangle(containerShape);
gaService.setLocationAndSize(rectangle, 10, 20, 100, 100);
ContainerShape containerShape2 = createService.createContainerShape(containerShape, true);
Rectangle rectangle2 = createService.createRectangle(containerShape2);
gaService.setLocationAndSize(rectangle2, 5, 15, 50, 50);
TestToolBehaviorProvider behaviorProvider = new TestToolBehaviorProvider();
ILocation location = behaviorProvider.getAbsoluteLocation(containerShape2);
assertEquals(5, location.getX());
assertEquals(15, location.getY());
}
@Test
public void getAbsoluteLocation_twoGasWithoutPe() throws Exception {
Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
ContainerShape containerShape = createService.createContainerShape(diagram, true);
Rectangle rectangle = createService.createRectangle(containerShape);
gaService.setLocationAndSize(rectangle, 10, 20, 100, 100);
Rectangle rectangle2 = createService.createRectangle(rectangle);
gaService.setLocationAndSize(rectangle2, 5, 15, 50, 50);
TestToolBehaviorProvider behaviorProvider = new TestToolBehaviorProvider();
ILocation location = behaviorProvider.getAbsoluteLocation(rectangle2);
assertEquals(15, location.getX());
assertEquals(35, location.getY());
}
@Test
public void getAbsoluteLocation_twoGasWithoutPeWithInactive() throws Exception {
Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
ContainerShape containerShape = createService.createContainerShape(diagram, false);
Rectangle rectangle = createService.createRectangle(containerShape);
gaService.setLocationAndSize(rectangle, 10, 20, 100, 100);
Rectangle rectangle2 = createService.createRectangle(rectangle);
gaService.setLocationAndSize(rectangle2, 5, 15, 50, 50);
TestToolBehaviorProvider behaviorProvider = new TestToolBehaviorProvider();
ILocation location = behaviorProvider.getAbsoluteLocation(rectangle2);
assertEquals(5, location.getX());
assertEquals(15, location.getY());
}
@Test
public void getAbsoluteLocation_inactiveGaAtRoot() throws Exception {
Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
ContainerShape containerShape = createService.createContainerShape(diagram, false);
Rectangle rectangle = createService.createRectangle(containerShape);
gaService.setLocationAndSize(rectangle, 50, 50, 100, 100);
TestToolBehaviorProvider behaviorProvider = new TestToolBehaviorProvider();
ILocation location = behaviorProvider.getAbsoluteLocation(rectangle);
assertEquals(50, location.getX());
assertEquals(50, location.getY());
}
private class TestToolBehaviorProvider extends DefaultToolBehaviorProvider {
public TestToolBehaviorProvider() {
super(null);
}
@Override
protected ILocation getAbsoluteLocation(GraphicsAlgorithm ga) {
return super.getAbsoluteLocation(ga);
}
@Override
protected ILocation getAbsoluteLocation(PictogramElement pe) {
return super.getAbsoluteLocation(pe);
}
}
}