Bug 541129 - Connection Midpoint calculation fails for big diagrams

* Use long instead of int for calculation

Change-Id: I28f5b946d226972241ae366a7315932751da7583
diff --git a/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java b/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java
index f3e4afe..b957d42 100644
--- a/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java
+++ b/plugins/org.eclipse.graphiti/src/org/eclipse/graphiti/internal/services/impl/PeServiceImpl.java
@@ -732,8 +732,8 @@
 	}
 
 	private static double getDistance(java.awt.Point start, java.awt.Point end) {
-		int xDist = end.x - start.x;
-		int yDist = end.y - start.y;
+		long xDist = end.x - start.x;
+		long yDist = end.y - start.y;
 		double ret = Math.sqrt((xDist * xDist) + (yDist * yDist));
 		return ret;
 	}
diff --git a/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java b/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java
index 4e2c41b..ed0a690 100644
--- a/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java
+++ b/tests/org.eclipse.graphiti.tests/src/org/eclipse/graphiti/tests/internal/services/impl/PeServiceImplTest.java
@@ -319,4 +319,28 @@
 		assertEquals(183, midpoint.getX());
 		assertEquals(145, midpoint.getY());
 	}
+
+	@Test
+	public void getDistance_bug541129() {
+		Diagram diagram = createService.createDiagram("dummyType", "diagramName", true);
+
+		ContainerShape containerShape1 = createService.createContainerShape(diagram, true);
+		Rectangle rectangle1 = createService.createRectangle(containerShape1);
+		gaService.setLocationAndSize(rectangle1, 10, 10, 100, 100);
+		ChopboxAnchor anchor1 = createService.createChopboxAnchor(containerShape1);
+
+		ContainerShape containerShape2 = createService.createContainerShape(diagram, true);
+		Rectangle rectangle2 = createService.createRectangle(containerShape2);
+		gaService.setLocationAndSize(rectangle2, 200000, 200000, 100, 100);
+		ChopboxAnchor anchor2 = createService.createChopboxAnchor(containerShape2);
+
+		FreeFormConnection connection = createService.createFreeFormConnection(diagram);
+		connection.setStart(anchor1);
+		connection.setEnd(anchor2);
+
+		ILocation midpoint = peService.getConnectionMidpoint(connection, 0.5d);
+
+		assertEquals(100055, midpoint.getX());
+		assertEquals(100055, midpoint.getY());
+	}
 }