blob: 83cc9d563689ac44dc9f95be36200787cc5cce7d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2010 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.draw2d.test;
import org.eclipse.draw2d.ChopboxAnchor;
import org.eclipse.draw2d.ConnectionAnchor;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.PolylineConnection;
import org.eclipse.draw2d.XYAnchor;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
/**
* Tests the notification of anchors and connection figures.
*
* <pre>
* @Contents figure
* @LocalCoordinates
* @connection
* @endpoint1
* @LocalCoordinates
* @endpoint2
* </pre>
*
* Moving the outermost localcoordinate figure should not notify. Moving either
* endpoint should notify. Moving the innermost localcoordinates figure should
* notify.
*
* @since 3.1
*/
public class AnchorNotificationTest extends AbstractFixtureTestCase {
int count;
/**
* @since 3.1
*/
public class TestPolylineConnection extends PolylineConnection {
/**
* @see org.eclipse.draw2d.PolylineConnection#anchorMoved(org.eclipse.draw2d.ConnectionAnchor)
*/
public void anchorMoved(ConnectionAnchor anchor) {
super.anchorMoved(anchor);
count++;
}
}
private LocalCoordinates commonAncestor;
private PolylineConnection conn;
private Figure end;
private Figure start;
private LocalCoordinates nestedCoordinates;
public class LocalCoordinates extends Figure {
protected boolean useLocalCoordinates() {
return true;
}
}
void moveAll() {
commonAncestor.translate(1, 1);
nestedCoordinates.translate(1, 1);
end.translate(1, 1);
start.translate(1, 1);
}
/**
* @throws Exception
* @since 3.1
*/
protected void setUp() throws Exception {
super.setUp();
Figure contents = new Figure();
contents.addNotify();
contents.setBounds(new Rectangle(0, 0, 100, 100));
contents.add(commonAncestor = new LocalCoordinates());
commonAncestor.setBounds(new Rectangle(10, 10, 80, 80));
commonAncestor.add(start = new Figure());
start.setBounds(new Rectangle(0, 0, 10, 10));
commonAncestor.add(nestedCoordinates = new LocalCoordinates());
commonAncestor.add(conn = new TestPolylineConnection());
nestedCoordinates.add(end = new Figure());
end.setBounds(new Rectangle(60, 60, 10, 10));
conn.setSourceAnchor(new ChopboxAnchor(start));
conn.setTargetAnchor(new ChopboxAnchor(end));
}
public void testMoveSource() {
count = 0;
start.translate(10, 10);
assertTrue(count == 1);
}
public void testMoveTarget() {
count = 0;
end.translate(1, 1);
assertTrue(count == 1);
}
public void testMoveTargetParent() {
count = 0;
nestedCoordinates.translate(10, 10);
assertTrue("Count != 1 :" + count, count == 1);
}
public void testRetargetTargetAnchor() {
count = 0;
ConnectionAnchor old = conn.getTargetAnchor();
conn.setTargetAnchor(new XYAnchor(new Point(20, 30)));
end.translate(-5, -5);
nestedCoordinates.translate(-1, -1);
assertTrue(count == 0);
conn.setTargetAnchor(old);
}
public void testRemoveConnection() {
count = 0;
conn.getParent().remove(conn);
moveAll();
assertTrue(count == 0);
commonAncestor.add(conn);
start.translate(1, 0);
assertTrue(count == 1);
}
// public void testMoveEverything() {
// count = 0;
// commonAncestor.translate(5, 5);
// assertEquals(0, count);
// }
}