Author: bszanto
Date: 2008-11-26 04:55:53-0800
New Revision: 16178
Modified:
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java
Log:
Fix for Issue 5122.
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java?view=diff&rev=16178&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java&r1=16177&r2=16178
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java 2008-11-26 04:55:53-0800
@@ -59,4 +59,27 @@
super.addPoint(end);
}
+ /**
+ * This method is overridden in order to ignore change of the y coordinate
+ * during draging. Use translateFig(int dx, int dy) to force change of the
+ * y coordinate.
+ * @param dx the x offset
+ * @param dy the y offset - IGNORED
+ * @see org.tigris.gef.presentation.Fig#translate(int, int)
+ */
+ public void translate(int dx, int dy) {
+ super.translate(dx, 0);
+ }
+
+ /**
+ * Used in order to force translation of both X and Y coordiante.
+ *
+ * @param dx the x offset
+ * @param dy the y offset
+ * @see org.tigris.gef.presentation.Fig#translate(int, int)
+ */
+ public void translateFig(int dx, int dy) {
+ super.translate(dx, dy);
+ }
+
}
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java?view=diff&rev=16178&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java&r1=16177&r2=16178
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java 2008-11-26 04:55:53-0800
@@ -30,6 +30,7 @@
import javax.swing.Icon;
+import org.argouml.model.Model;
import org.argouml.uml.diagram.ui.SelectionNodeClarifiers2;
import org.tigris.gef.presentation.Fig;
import org.tigris.gef.presentation.Handle;
@@ -106,7 +107,8 @@
// 1. Remember current message paths
for (Fig workOnFig : figs) {
- if (workOnFig instanceof FigMessage) {
+ if (workOnFig instanceof FigMessage &&
+ !((FigMessage) workOnFig).isSelfMessage()) {
polygonsByFig.put(
workOnFig,
((FigMessage) workOnFig).getPolygon());
@@ -124,9 +126,14 @@
// 3. Now reposition messages based on their original position
for (Fig workOnFig : figs) {
if (workOnFig instanceof FigMessage) {
- polygonsByFig.get(workOnFig).translate(0, deltaY);
- ((FigMessage) workOnFig).setPolygon(
- polygonsByFig.get(workOnFig));
+ if (((FigMessage) workOnFig).isSelfMessage()) {
+ ((FigMessageSpline) ((FigMessage) workOnFig).getFig())
+ .translateFig(0, deltaY);
+ } else {
+ polygonsByFig.get(workOnFig).translate(0, deltaY);
+ ((FigMessage) workOnFig).setPolygon(
+ polygonsByFig.get(workOnFig));
+ }
}
}
break;
@@ -146,6 +153,15 @@
}
final Fig workOnFig = getContent();
+
+ int oldCenterX = 0;
+ int newCenterX = 0;
+ // Compute the initial center position of the CR
+ if (workOnFig instanceof FigClassifierRole) {
+ FigClassifierRole f = (FigClassifierRole) workOnFig;
+ oldCenterX = f.getWidth() / 2 + f.getX();
+ }
+
// horizontal resizing
switch (hand.index) {
case Handle.NORTHWEST:
@@ -159,6 +175,24 @@
break;
default:
}
+
+ // Compute the final center position of the CR
+ if (workOnFig instanceof FigClassifierRole) {
+ FigClassifierRole f = (FigClassifierRole) workOnFig;
+ newCenterX = f.getWidth() / 2 + f.getX();
+ }
+
+ // Self messages act differently so it is needed to move them separetly.
+ // Only self messages of selected CR should be horizontally translated.
+ for (Fig fig : figs) {
+ if (fig instanceof FigMessage && ((FigMessage) fig).isSelfMessage()
+ && Model.getCoreHelper().getDestination(fig.getOwner()).
+ equals(workOnFig.getOwner())) {
+ ((FigMessageSpline) ((FigMessage) fig).getFig())
+ .translateFig(newCenterX - oldCenterX, 0);
+ }
+ }
+
}
@Override
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.