svn commit: r16851 - trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2009-03-03 01:03:26-0800
New Revision: 16851
Modified:
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigMessage.java
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java
Log:
Issue 5562: Keep self message connected to classifier role
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigMessage.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigMessage.java?view=diff&pathrev=16851&r1=16850&r2=16851
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigMessage.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigMessage.java 2009-03-03 01:03:26-0800
@@ -53,6 +53,8 @@
import org.tigris.gef.presentation.ArrowHeadGreater;
import org.tigris.gef.presentation.ArrowHeadTriangle;
import org.tigris.gef.presentation.Fig;
+import org.tigris.gef.presentation.FigNode;
+import org.tigris.gef.presentation.FigPoly;
import org.tigris.gef.presentation.FigText;
/**
@@ -325,6 +327,32 @@
super.computeRouteImpl();
updateActivations();
}
+
+ public void calcBounds() {
+ final FigPoly fp = (FigPoly) getFig();
+ if (isSelfMessage() && fp.isComplete()) {
+ // TODO: calcBounds is called by SelectionManager when the Fig is
+ // dragged. This code is needed to reposition any self message
+ // as they are become detached from their classifier role
+ // (see issue 5562). The cause of the detachment is not yet
+ // understood.
+ // Unfortunately calcBounds is called from several other places
+ // so the code here is not optimal but is the best workaround until
+ // ArgoUML can provide its own replacement SelectionManager for
+ // sequence diagram requirements
+ // See - http://gef.tigris.org/issues/show_bug.cgi?id=344
+ final FigNode node = getSourceFigNode();
+ final int x =
+ node.getX()
+ + (node.getWidth() + FigActivation.DEFAULT_WIDTH) / 2;
+ final Point startPoint = new Point(x, getYs()[0]);
+ final FigMessageSpline spline = new FigMessageSpline(startPoint);
+ spline.setComplete(true);
+ spline.setDashed(isReturnAction());
+ super.setFig(spline);
+ }
+ super.calcBounds();
+ }
private synchronized void updateActivations() {
// we update the activations...
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java?view=diff&pathrev=16851&r1=16850&r2=16851
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java 2009-03-03 01:03:26-0800
@@ -156,6 +156,8 @@
} else if (figMessage.isReturnAction()) {
figMessage.determineActivator();
}
+ FigPoly poly = (FigPoly) fe.getFig();
+ poly.setComplete(true);
dcr.createActivations();
dcr.renderingChanged();
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=1260579
To unsubscribe from this discussion, e-mail: [[email protected]].