diff options
| author | Laurent Redor | 2016-12-05 13:27:53 +0000 |
|---|---|---|
| committer | Laurent Redor | 2016-12-05 14:33:30 +0000 |
| commit | c83208e2f891af8e203d587220a75bb04bea94d2 (patch) | |
| tree | 707c741b1513046908b7f0f1fcc9f79177c8b7e8 | |
| parent | cd9591620953b4d895d4633fec69ceda9e3aad41 (diff) | |
| download | org.eclipse.sirius-c83208e2f891af8e203d587220a75bb04bea94d2.tar.gz org.eclipse.sirius-c83208e2f891af8e203d587220a75bb04bea94d2.tar.xz org.eclipse.sirius-c83208e2f891af8e203d587220a75bb04bea94d2.zip | |
[508676] Fix inversion of straighten actions problem
Sometimes, the label does not correspond to what the action does (left
instead of right and conversely, top instead of bottom and conversely).
This commit also adds one test corresponding to this unhandled cases.
Bug: 508676
Change-Id: Iccbc71daa641a5174c07da2a5af9f454d81e4868
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
4 files changed, 84 insertions, 2 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/commands/StraightenToCommand.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/commands/StraightenToCommand.java index 6aef293119..4ecff4791a 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/commands/StraightenToCommand.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/edit/commands/StraightenToCommand.java @@ -366,7 +366,7 @@ public class StraightenToCommand extends AbstractTransactionalCommand { Point sourcePoint; Point targetPoint; if (isSourceABorderNode) { - sourcePoint = ((IBorderItemEditPart) edgeEditPart.getSource()).getFigure().getBounds().getCenter(); + sourcePoint = GraphicalHelper.getAbsoluteBoundsIn100Percent(sourceEditPart).getCenter(); } else if (edgeEditPart.getFigure() instanceof ViewEdgeFigure) { PointList pointList = ((ViewEdgeFigure) edgeEditPart.getFigure()).getPoints().getCopy(); sourcePoint = pointList.getFirstPoint(); @@ -374,7 +374,7 @@ public class StraightenToCommand extends AbstractTransactionalCommand { sourcePoint = new Point(); } if (isTargetABorderNode) { - targetPoint = ((IBorderItemEditPart) edgeEditPart.getTarget()).getFigure().getBounds().getCenter(); + targetPoint = GraphicalHelper.getAbsoluteBoundsIn100Percent(targetEditPart).getCenter(); } else if (edgeEditPart.getFigure() instanceof ViewEdgeFigure) { PointList pointList = ((ViewEdgeFigure) edgeEditPart.getFigure()).getPoints().getCopy(); targetPoint = pointList.getLastPoint(); diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.aird b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.aird index bef195b6ab..02ebb41b44 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.aird +++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.aird @@ -278,6 +278,17 @@ <styles xmi:type="notation:ShapeStyle" xmi:id="_jRWxEZdsEea4n-Vlp2x2tg" fontName="Segoe UI" fontHeight="8"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jRWxEpdsEea4n-Vlp2x2tg" x="113" y="50" width="10" height="10"/> </children> + <children xmi:type="notation:Node" xmi:id="_4N1TELrvEeaZF_rIOd1oKg" type="3012" element="_4NLy0LrvEeaZF_rIOd1oKg"> + <children xmi:type="notation:Node" xmi:id="_4N6LkLrvEeaZF_rIOd1oKg" type="5010"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_4N6LkbrvEeaZF_rIOd1oKg" x="-27" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_4N_EELrvEeaZF_rIOd1oKg" type="3003" element="_4NWK4LrvEeaZF_rIOd1oKg"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_4N_EEbrvEeaZF_rIOd1oKg" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4N_EErrvEeaZF_rIOd1oKg"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_4N1TEbrvEeaZF_rIOd1oKg" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4N1TErrvEeaZF_rIOd1oKg" x="113" y="20" width="10" height="10"/> + </children> <styles xmi:type="notation:ShapeStyle" xmi:id="__NsVkJdrEea4n-Vlp2x2tg" fontName="Segoe UI" fontHeight="8"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="__NsVkZdrEea4n-Vlp2x2tg" x="15" y="239" width="123" height="233"/> </children> @@ -335,6 +346,17 @@ <styles xmi:type="notation:ShapeStyle" xmi:id="_0I1lMZdkEeaGpozlB8know" fontName="Segoe UI" fontHeight="8"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0I1lMpdkEeaGpozlB8know" x="-2" y="35" width="10" height="10"/> </children> + <children xmi:type="notation:Node" xmi:id="_b2X40LrwEeaZF_rIOd1oKg" type="3012" element="_b2MSoLrwEeaZF_rIOd1oKg"> + <children xmi:type="notation:Node" xmi:id="_b2Yf4LrwEeaZF_rIOd1oKg" type="5010"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_b2Yf4brwEeaZF_rIOd1oKg" x="-21" y="-17"/> + </children> + <children xmi:type="notation:Node" xmi:id="_b2ZG8LrwEeaZF_rIOd1oKg" type="3003" element="_b2MSobrwEeaZF_rIOd1oKg"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_b2ZG8brwEeaZF_rIOd1oKg" fontName="Segoe UI"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2ZG8rrwEeaZF_rIOd1oKg"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_b2X40brwEeaZF_rIOd1oKg" fontName="Segoe UI" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2X40rrwEeaZF_rIOd1oKg" x="-2" y="225" width="10" height="10"/> + </children> <styles xmi:type="notation:ShapeStyle" xmi:id="_6UjWAZdjEeaGpozlB8know" fontName="Segoe UI" fontHeight="8"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6UjWApdjEeaGpozlB8know" x="1130" y="85" width="213" height="498"/> </children> @@ -700,6 +722,22 @@ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T38sNpnfEea7-_ACbuDyjA" id="(1.0,0.6)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T38sN5nfEea7-_ACbuDyjA" id="(0.9405405405405406,0.0)"/> </edges> + <edges xmi:type="notation:Edge" xmi:id="_b2ZuALrwEeaZF_rIOd1oKg" type="4001" element="_b2TAULrwEeaZF_rIOd1oKg" source="_4N1TELrvEeaZF_rIOd1oKg" target="_b2X40LrwEeaZF_rIOd1oKg"> + <children xmi:type="notation:Node" xmi:id="_b2ZuBLrwEeaZF_rIOd1oKg" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2ZuBbrwEeaZF_rIOd1oKg" x="8" y="-25"/> + </children> + <children xmi:type="notation:Node" xmi:id="_b2ZuBrrwEeaZF_rIOd1oKg" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2ZuB7rwEeaZF_rIOd1oKg" x="12" y="-3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_b2ZuCLrwEeaZF_rIOd1oKg" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2ZuCbrwEeaZF_rIOd1oKg" x="12" y="-1"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_b2ZuAbrwEeaZF_rIOd1oKg"/> + <styles xmi:type="notation:FontStyle" xmi:id="_b2ZuArrwEeaZF_rIOd1oKg" fontName="Segoe UI" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_b2ZuA7rwEeaZF_rIOd1oKg" points="[5, -3, -80, 37]$[80, -38, -5, 2]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b2aVELrwEeaZF_rIOd1oKg" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b2aVEbrwEeaZF_rIOd1oKg" id="(0.5,0.5)"/> + </edges> </data> </ownedAnnotationEntries> <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_Y4c3tG9YEeaEf_hH_tlPzw" name="node1" incomingEdges="_Y4c33W9YEeaEf_hH_tlPzw" width="3" height="3" resizeKind="NSEW"> @@ -1090,6 +1128,14 @@ </ownedStyle> <actualMapping xmi:type="description_1:NodeMapping" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@containerMappings[name='container']/@borderedNodeMappings[name='bordered']"/> </ownedBorderedNodes> + <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_4NLy0LrvEeaZF_rIOd1oKg" name="b_c8_1_2" outgoingEdges="_b2TAULrwEeaZF_rIOd1oKg" width="1" height="1" resizeKind="NSEW"> + <target xmi:type="migrationmodeler:Bordered" href="straightenTo.migrationmodeler#//@representations.0/@containers.7/@elements.1/@elements.1"/> + <semanticElements xmi:type="migrationmodeler:Bordered" href="straightenTo.migrationmodeler#//@representations.0/@containers.7/@elements.1/@elements.1"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_4NWK4LrvEeaZF_rIOd1oKg" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@containerMappings[name='container']/@borderedNodeMappings[name='bordered']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@containerMappings[name='container']/@borderedNodeMappings[name='bordered']"/> + </ownedBorderedNodes> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> @@ -1113,6 +1159,17 @@ </ownedStyle> <actualMapping xmi:type="description_1:NodeMapping" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@containerMappings[name='container']/@borderedNodeMappings[name='bordered']"/> </ownedBorderedNodes> + <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_b2MSoLrwEeaZF_rIOd1oKg" name="b_c9_2" incomingEdges="_b2TAULrwEeaZF_rIOd1oKg" width="1" height="1" resizeKind="NSEW"> + <target xmi:type="migrationmodeler:Bordered" href="straightenTo.migrationmodeler#//@representations.0/@containers.8/@elements.3"/> + <semanticElements xmi:type="migrationmodeler:Bordered" href="straightenTo.migrationmodeler#//@representations.0/@containers.8/@elements.3"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:Square" xmi:id="_b2MSobrwEeaZF_rIOd1oKg" color="253,206,137"> + <description xmi:type="style:SquareDescription" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@containerMappings[name='container']/@borderedNodeMappings[name='bordered']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@containerMappings[name='container']/@borderedNodeMappings[name='bordered']"/> + </ownedBorderedNodes> <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_6UY98ZdjEeaGpozlB8know" borderSize="1" borderSizeComputationExpression="1" foregroundColor="204,242,166"> <description xmi:type="style:FlatContainerStyleDescription" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@containerMappings[name='container']/@style"/> </ownedStyle> @@ -1251,6 +1308,16 @@ </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@edgeMappings[name='edge']"/> </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_b2TAULrwEeaZF_rIOd1oKg" name="edge21" sourceNode="_4NLy0LrvEeaZF_rIOd1oKg" targetNode="_b2MSoLrwEeaZF_rIOd1oKg"> + <target xmi:type="migrationmodeler:Edge" href="straightenTo.migrationmodeler#//@representations.0/@edges.20"/> + <semanticElements xmi:type="migrationmodeler:Edge" href="straightenTo.migrationmodeler#//@representations.0/@edges.20"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_b2TAUbrwEeaZF_rIOd1oKg" centered="Both" strokeColor="39,76,114"> + <customFeatures>centered</customFeatures> + <description xmi:type="style:EdgeStyleDescription" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@edgeMappings[name='edge']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_b2TAUrrwEeaZF_rIOd1oKg"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']/@defaultLayer/@edgeMappings[name='edge']"/> + </ownedDiagramElements> <description xmi:type="description_1:DiagramDescription" href="useCase.odesign#//@ownedViewpoints[name='resizing']/@ownedRepresentations[name='useCase']"/> <activatedFilters xmi:type="filter:CompositeFilterDescription" href="platform:/plugin/org.polarsys.kitalpha.ad.integration.sirius/description/ad.odesign#//@ownedViewpoints[name='ad']/@ownedRepresentations[name='AD%20diagram']/@filters[name='ModelExtensionFilter']"/> <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_Y4c39W9YEeaEf_hH_tlPzw"/> diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.migrationmodeler b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.migrationmodeler index 72547acddf..7d8deb3e22 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.migrationmodeler +++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/straightenTo/straightenTo.migrationmodeler @@ -27,6 +27,7 @@ <elements xsi:type="migrationmodeler:Node" id="node_c8_1"/> <elements xsi:type="migrationmodeler:Container" id="container_c8_1"> <elements xsi:type="migrationmodeler:Bordered" id="b_c8_1_1"/> + <elements xsi:type="migrationmodeler:Bordered" id="b_c8_1_2"/> </elements> </containers> <containers id="container9"> @@ -35,6 +36,7 @@ <elements xsi:type="migrationmodeler:Container" id="container_c9_1"> <elements xsi:type="migrationmodeler:Bordered" id="b_c9_1_1"/> </elements> + <elements xsi:type="migrationmodeler:Bordered" id="b_c9_2"/> </containers> <containers id="container10"> <elements xsi:type="migrationmodeler:Node" id="node_c10_1"/> @@ -66,5 +68,6 @@ <edges id="edge18" source="//@representations.0/@containers.9/@elements.1" target="//@representations.0/@nodes.5"/> <edges id="edge19" source="//@representations.0/@containers.9/@elements.1" target="//@representations.0/@containers.9/@elements.0"/> <edges id="edge20" source="//@representations.0/@containers.9/@elements.1" target="//@representations.0/@containers.9/@elements.0"/> + <edges id="edge21" source="//@representations.0/@containers.7/@elements.1/@elements.1" target="//@representations.0/@containers.8/@elements.3"/> </representations> </migrationmodeler:TestCase> diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/layout/StraightenToTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/layout/StraightenToTest.java index 092b56b961..1467e09f41 100644 --- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/layout/StraightenToTest.java +++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/layout/StraightenToTest.java @@ -152,6 +152,18 @@ public class StraightenToTest extends AbstractSiriusSwtBotGefTestCase { /** * <UL> + * <LI>Straighten oblique edge21 to Top: Expected KO</LI> + * <LI>Straighten oblique edge21 to Bottom: Expected OK</LI> + * </UL> + */ + public void testObliqueEdgeTopAndBottomBetweenBorderNodeNotAsSameLevel() { + // {top,bottom,left,right} + boolean[] availableDirections = { false, true, false, false }; + checkEdgeActions(availableDirections, "edge21"); + } + + /** + * <UL> * <LI>Straighten rectilinear edge14 to Top: Expected OK</LI> * <LI>Straighten rectilinear edge14 to Bottom: Expected: menu disabled (out * of bounds)</LI> |
