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]].
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.