| /****************************************************************************** |
| * Copyright (c) 2002, 2006 IBM Corporation 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 |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| ****************************************************************************/ |
| |
| package org.eclipse.gmf.tests.runtime.diagram.ui; |
| |
| import org.eclipse.draw2d.geometry.Point; |
| import org.eclipse.draw2d.geometry.PointList; |
| import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; |
| import org.eclipse.gmf.runtime.diagram.core.commands.SetPropertyCommand; |
| import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; |
| import org.eclipse.gmf.runtime.diagram.ui.internal.commands.SetConnectionBendpointsCommand; |
| import org.eclipse.gmf.runtime.diagram.ui.internal.properties.Properties; |
| import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; |
| import org.eclipse.gmf.runtime.notation.Diagram; |
| import org.eclipse.gmf.runtime.notation.Edge; |
| import org.eclipse.gmf.runtime.notation.JumpLinkStatus; |
| import org.eclipse.gmf.runtime.notation.JumpLinkType; |
| import org.eclipse.gmf.runtime.notation.NotationPackage; |
| import org.eclipse.gmf.runtime.notation.RelativeBendpoints; |
| import org.eclipse.gmf.runtime.notation.Routing; |
| import org.eclipse.gmf.runtime.notation.Smoothness; |
| import org.eclipse.gmf.tests.runtime.diagram.ui.util.ITestCommandCallback; |
| |
| /** |
| * @author choang |
| * |
| * AbstractConnectTests that contain the test logic that is common across diagram |
| * Should be extended by diagram specic test to test connections functionality. |
| */ |
| public abstract class AbstractConnectionTests extends AbstractTestBase { |
| |
| /** |
| * Constructor for AbstractConnectionTests. |
| * @param arg0 |
| */ |
| public AbstractConnectionTests(String arg0) { |
| super(arg0); |
| } |
| |
| static public final Point ptStart = new Point(100, 100); |
| static public final Point ptEnd = new Point(300, 300); |
| static public final Point ptMiddle = new Point(200, 200); |
| |
| public void testDeleteConnection() throws Exception { |
| |
| final Object[] diagramValues = new Object[2]; |
| getTestFixture().getEditingDomain().runExclusive( |
| new Runnable() { |
| public void run() { |
| |
| Diagram dgrm2 = |
| getTestFixture().getConnectorView().getDiagram(); |
| |
| diagramValues[0] = dgrm2; |
| diagramValues[1] = new Integer(dgrm2.getEdges().size()); |
| } |
| }); |
| |
| final Diagram dgrm = (Diagram) diagramValues[0]; |
| |
| final int dgrmSize = ((Integer) diagramValues[1]).intValue(); |
| |
| DeleteCommand delete = |
| new DeleteCommand(getTestFixture() |
| .getEditingDomain(), getTestFixture().getConnectorView()); |
| |
| testCommand(delete, new ITestCommandCallback() { |
| public void onCommandExecution() { |
| assertTrue(dgrm.getEdges().size() == (dgrmSize - 1)); |
| } |
| }); |
| |
| } |
| |
| public void testAddBendpoints() throws Exception { |
| |
| // moved to setup of super class |
| final Edge connectorView = |
| getTestFixture().getConnectorView(); |
| |
| RelativeBendpoints pbs = (RelativeBendpoints) connectorView.getBendpoints(); |
| assertTrue(pbs.getPoints().size() == 2); |
| |
| PointList newpts = new PointList(3); |
| newpts.addPoint(new Point(ptStart)); |
| newpts.addPoint(new Point(ptMiddle)); |
| newpts.addPoint(new Point(ptEnd)); |
| |
| Point r1 = new Point(ptStart); |
| Point r2 = new Point(ptEnd); |
| |
| SetConnectionBendpointsCommand bendpointsChanged = |
| new SetConnectionBendpointsCommand(getTestFixture().getEditingDomain()); |
| bendpointsChanged.setEdgeAdapter(new EObjectAdapter(connectorView)); |
| bendpointsChanged.setNewPointList(newpts, r1, r2); |
| testCommand(bendpointsChanged, new ITestCommandCallback() { |
| public void onCommandExecution() { |
| RelativeBendpoints bendpoints = (RelativeBendpoints) connectorView.getBendpoints(); |
| assertTrue(bendpoints.getPoints().size() == 3); |
| } |
| }); |
| flushEventQueue(); |
| |
| // now test smooth connector |
| final Smoothness s1 = Smoothness.NORMAL_LITERAL; |
| SetPropertyCommand c = |
| new SetPropertyCommand(getTestFixture().getEditingDomain(), new EObjectAdapter(connectorView), |
| Properties.ID_SMOOTHNESS, |
| "", //$NON-NLS-1$ |
| s1); |
| testCommand(c, new ITestCommandCallback() { |
| public void onCommandExecution() { |
| Object s2 = ViewUtil.getStructuralFeatureValue(connectorView, |
| NotationPackage.eINSTANCE.getRoutingStyle_Smoothness()); |
| assertTrue(s1.equals(s2)); |
| } |
| }); |
| |
| newpts.removeAllPoints(); |
| |
| newpts.addPoint(new Point(ptStart)); |
| newpts.addPoint(new Point(ptMiddle)); |
| newpts.addPoint( |
| new Point( |
| getDiagramEditPart() |
| .getFigure() |
| .getBounds() |
| .getBottomRight())); |
| newpts.addPoint(new Point(ptEnd)); |
| |
| bendpointsChanged = new SetConnectionBendpointsCommand(getTestFixture().getEditingDomain()); |
| bendpointsChanged.setEdgeAdapter(new EObjectAdapter(connectorView)); |
| bendpointsChanged.setNewPointList(newpts, r1, r2); |
| testCommand(bendpointsChanged, new ITestCommandCallback() { |
| public void onCommandExecution() { |
| RelativeBendpoints bendpoints = (RelativeBendpoints) connectorView.getBendpoints(); |
| assertTrue(bendpoints.getPoints().size() == 4); |
| } |
| }); |
| flushEventQueue(); |
| } |
| |
| /** |
| * Method testConnectionProperties. |
| * @throws Exception |
| */ |
| public void testConnectionProperties() throws Exception { |
| final Edge connectorView = |
| getTestFixture().getConnectorView(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_JUMPLINKS_STATUS, |
| JumpLinkStatus.ABOVE_LITERAL); |
| flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_JUMPLINKS_TYPE, |
| JumpLinkType.SEMICIRCLE_LITERAL); |
| flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_JUMPLINKS_REVERSE, |
| Boolean.TRUE); |
| flushEventQueue(); |
| |
| // testProperty( |
| // connectorView, |
| // Properties.ID_LINECOLOR, |
| // org.eclipse.draw2d.ColorConstants.red); |
| // flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_CLOSESTDISTANCE, |
| Boolean.TRUE); |
| flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_AVOIDOBSTRUCTIONS, |
| Boolean.TRUE); |
| flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_SMOOTHNESS, |
| Smoothness.NORMAL_LITERAL); |
| flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_ROUTING, |
| Routing.RECTILINEAR_LITERAL); |
| flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_ROUTING, |
| Routing.MANUAL_LITERAL); |
| flushEventQueue(); |
| |
| testProperty( |
| connectorView, |
| Properties.ID_ROUNDED_BENDPOINTS_RADIUS, |
| 10); |
| flushEventQueue(); |
| } |
| |
| } |