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 |
} |