View | Details | Raw Unified | Return to bug 158023 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/gmf/tests/lite/gef/DiagramElementTest.java (+55 lines)
Lines 17-22 Link Here
17
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.IFigure;
18
import org.eclipse.draw2d.PositionConstants;
18
import org.eclipse.draw2d.PositionConstants;
19
import org.eclipse.draw2d.geometry.Rectangle;
19
import org.eclipse.draw2d.geometry.Rectangle;
20
import org.eclipse.emf.transaction.TransactionalEditingDomain;
21
import org.eclipse.emf.transaction.util.TransactionUtil;
20
import org.eclipse.gef.EditPart;
22
import org.eclipse.gef.EditPart;
21
import org.eclipse.gef.GraphicalEditPart;
23
import org.eclipse.gef.GraphicalEditPart;
22
import org.eclipse.gef.RequestConstants;
24
import org.eclipse.gef.RequestConstants;
Lines 24-29 Link Here
24
import org.eclipse.gef.commands.CommandStack;
26
import org.eclipse.gef.commands.CommandStack;
25
import org.eclipse.gef.requests.ChangeBoundsRequest;
27
import org.eclipse.gef.requests.ChangeBoundsRequest;
26
import org.eclipse.gef.ui.actions.AlignmentAction;
28
import org.eclipse.gef.ui.actions.AlignmentAction;
29
import org.eclipse.gmf.runtime.lite.commands.WrappingCommand;
30
import org.eclipse.gmf.runtime.lite.services.DefaultDiagramLayouter;
31
import org.eclipse.gmf.runtime.lite.services.IDiagramLayouter;
27
import org.eclipse.gmf.runtime.notation.Bounds;
32
import org.eclipse.gmf.runtime.notation.Bounds;
28
import org.eclipse.gmf.runtime.notation.Node;
33
import org.eclipse.gmf.runtime.notation.Node;
29
import org.eclipse.gmf.tests.rt.GeneratedCanvasTest;
34
import org.eclipse.gmf.tests.rt.GeneratedCanvasTest;
Lines 138-141 Link Here
138
		assertEquals(nodeBounds.getWidth(), bounds.width);
143
		assertEquals(nodeBounds.getWidth(), bounds.width);
139
		assertEquals(nodeBounds.getHeight(), bounds.height);
144
		assertEquals(nodeBounds.getHeight(), bounds.height);
140
	}
145
	}
146
147
	public void testLayouter() throws Exception {
148
		Node createdNode1 = createNode(getSetup().getGenModel().getNodeA(), getCanvasInstance().getCanvas());
149
		assertNotNull("Node not created", createdNode1);
150
		moveNode(createdNode1, NODE_1_BOUNDS);
151
		GraphicalEditPart ep1 = (GraphicalEditPart) findEditPart(createdNode1);
152
		Node createdNode2 = createNode(getSetup().getGenModel().getNodeA(), getCanvasInstance().getCanvas());
153
		assertNotNull("Node not created", createdNode2);
154
		moveNode(createdNode2, NODE_1_BOUNDS);
155
		GraphicalEditPart ep2 = (GraphicalEditPart) findEditPart(createdNode2);
156
		Node createdNode3 = createNode(getSetup().getGenModel().getNodeA(), getCanvasInstance().getCanvas());
157
		assertNotNull("Node not created", createdNode3);
158
		moveNode(createdNode3, NODE_1_BOUNDS);
159
		GraphicalEditPart ep3 = (GraphicalEditPart) findEditPart(createdNode3);
160
		GraphicalEditPart diagramEP = (GraphicalEditPart) getDiagramEditPart();
161
		assertTrue(checkModelIntersection(createdNode1, createdNode2));
162
		assertTrue(checkModelIntersection(createdNode1, createdNode3));
163
		assertTrue(checkModelIntersection(createdNode2, createdNode3));
164
		layout(diagramEP.getFigure());
165
		assertTrue(checkVisualIntersection(ep1, ep2));
166
		assertTrue(checkVisualIntersection(ep1, ep3));
167
		assertTrue(checkVisualIntersection(ep2, ep3));
168
		IDiagramLayouter layouter = new DefaultDiagramLayouter();
169
		org.eclipse.emf.common.command.Command command = layouter.layout(diagramEP);
170
		TransactionalEditingDomain editingDomain = TransactionUtil.getEditingDomain(getDiagram().getElement());
171
		getCommandStack().execute(new WrappingCommand(editingDomain, command));
172
		assertFalse(checkModelIntersection(createdNode1, createdNode2));
173
		assertFalse(checkModelIntersection(createdNode1, createdNode3));
174
		assertFalse(checkModelIntersection(createdNode2, createdNode3));
175
		layout(diagramEP.getFigure());
176
		assertFalse(checkVisualIntersection(ep1, ep2));
177
		assertFalse(checkVisualIntersection(ep1, ep3));
178
		assertFalse(checkVisualIntersection(ep2, ep3));
179
	}
180
181
	private boolean checkVisualIntersection(GraphicalEditPart ep1, GraphicalEditPart ep2) {
182
		return ep1.getFigure().getBounds().intersects(ep2.getFigure().getBounds());
183
	}
184
185
	private boolean checkModelIntersection(Node node1, Node node2) {
186
		Rectangle rect1 = getNodePosition(node1);
187
		Rectangle rect2 = getNodePosition(node2);
188
		return rect1.intersects(rect2);
189
	}
190
191
	private Rectangle getNodePosition(Node node) {
192
		assertTrue("Unexpected layout constraint", node.getLayoutConstraint() instanceof Bounds);
193
		Bounds nodeBounds = (Bounds) node.getLayoutConstraint();
194
		return new Rectangle(nodeBounds.getX(), nodeBounds.getY(), nodeBounds.getWidth(), nodeBounds.getHeight());
195
	}
141
}
196
}

Return to bug 158023