Author: bobtarling
Date: 2011-03-26 07:28:27-0700
New Revision: 19142

Modified:
   
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigActivation.java
   
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigClassifierRole.java
   
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigLifeLine.java
   
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
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
   trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
   trunk/src/argouml-core-model/src/org/argouml/model/Facade.java

Log:
Different message types are now allowed in UML2

Modified: 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigActivation.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigActivation.java?view=diff&pathrev=19142&r1=19141&r2=19142
==============================================================================
--- 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigActivation.java
      (original)
+++ 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigActivation.java
      2011-03-26 07:28:27-0700
@@ -159,7 +159,7 @@
             throw new IllegalArgumentException(
                     "An instance of FigMessage is required");
         }
-        if (!messageFig.isReturnAction()) {
+        if (!messageFig.isReplyMessage()) {
             return false;
         }
         if (activatingMessage == null) {

Modified: 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigClassifierRole.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigClassifierRole.java?view=diff&pathrev=19142&r1=19141&r2=19142
==============================================================================
--- 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigClassifierRole.java
  (original)
+++ 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigClassifierRole.java
  2011-03-26 07:28:27-0700
@@ -221,7 +221,7 @@
         FigMessage createMessage = null;
         for (FigMessage message : messages) {
             if (message.getDestFigNode().equals(this)
-                    && message.isCreateAction()) {
+                    && message.isCreateMessage()) {
                 
                 createMessage = message;
                 break;
@@ -338,7 +338,7 @@
     void positionHead(final FigMessage message) {
         // if the added edge is a Create Message it will affect the position
         // of the ClassifierRole so it should be repositioned
-        if (message.isCreateAction()
+        if (message.isCreateMessage()
                 && equals(message.getDestFigNode())
                 && !equals(message.getSourceFigNode())) {
             updateHeadOffset();

Modified: 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigLifeLine.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigLifeLine.java?view=diff&pathrev=19142&r1=19141&r2=19142
==============================================================================
--- 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigLifeLine.java
        (original)
+++ 
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/FigLifeLine.java
        2011-03-26 07:28:27-0700
@@ -150,7 +150,7 @@
             if (!figMessage.isSelfMessage()) {
                 if (isIncoming(figMessage)) {
                     if (currentActivation == null) {
-                        if (figMessage.isCallAction()) {
+                        if (figMessage.isSynchCallMessage()) {
                             // if we are the dest and is a call action, create 
the 
                             // activation, but don't add it until the height 
is set.
                             ySender = figMessage.getFinalY();
@@ -163,7 +163,7 @@
                                     getSettings(),
                                     figMessage);
                             activationsCount++;
-                        } else if (figMessage.isCreateAction()) {
+                        } else if (figMessage.isCreateMessage()) {
                             // if we are the destination of a create action,
                             // create the entire activation
                             currentActivation = createActivationFig(
@@ -177,12 +177,12 @@
                             activationsCount++;
                         }
                     } else {
-                        if (figMessage.isCallAction()
+                        if (figMessage.isSynchCallMessage()
                                 && isSameClassifierRoles(
                                         
currentActivation.getActivatingMessage(),
                                         figMessage)) {
                             activationsCount++;
-                        } else if (figMessage.isDestroyAction()) {
+                        } else if (figMessage.isDeleteMessage()) {
                             // if we are the target of a destroy action
                             // the figlifeline ends here and we add the 
activation
                             ySender = figMessage.getFinalY();
@@ -277,14 +277,14 @@
             // if we are the dest and is a call action, create the 
             // activation, but don't add it until the height is set.
             if (figMessage.isSelfMessage()) {
-                if (figMessage.isCallAction()) {
+                if (figMessage.isSynchCallMessage()) {
                     ySender = figMessage.getFinalY();
                     currentAct = new FigActivation(figMessage.getOwner(),
                             new Rectangle(lineFig.getX()
                                     + FigActivation.DEFAULT_WIDTH / 2, ySender,
                                     0, 0), getSettings(), figMessage, false);
                 } else if (currentAct != null
-                        && figMessage.isReturnAction()) {
+                        && figMessage.isReplyMessage()) {
                     ySender = figMessage.getStartY();
                     currentAct.setHeight(ySender - currentAct.getY());
                     newActivations.add(currentAct);
@@ -306,7 +306,7 @@
         FigMessage figMessage = figMessages.get(0);
         if (cr.equals(figMessage.getDestFigNode())
                 && !cr.equals(figMessage.getSourceFigNode())
-                && figMessage.isCallAction()) {
+                && figMessage.isSynchCallMessage()) {
             return true;
         }
         return false;
@@ -329,7 +329,11 @@
     }
     
     @Override
-    protected void setBoundsImpl(int x, int y, int w, int h) {
+    // TODO: synchronized is required here as there can be some 
+    // concurrent modification problems when drawing a call message and
+    // having that automatically draw the reply. Maybe fixing the TODO
+    // below will resolve this and the synch can go.
+    protected synchronized void setBoundsImpl(int x, int y, int w, int h) {
         final Rectangle oldBounds = getBounds();
         
         rectFig.setBounds(x, y, w, h);

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=19142&r1=19141&r2=19142
==============================================================================
--- 
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
 2011-03-26 07:28:27-0700
@@ -149,24 +149,28 @@
         return notationSettings;
     }
     
-    boolean isCallAction() {
-       return Model.getFacade().isACallAction(getAction());
+    boolean isSynchCallMessage() {
+       return Model.getFacade().isASynchCallMessage(getOwner());
     }
 
-    boolean isCreateAction() {
-       return Model.getFacade().isACreateAction(getAction());
+    boolean isASynchCallMessage() {
+        return Model.getFacade().isAASynchCallMessage(getOwner());
     }
 
-    boolean isDestroyAction() {
-       return Model.getFacade().isADestroyAction(getAction());
+    boolean isCreateMessage() {
+       return Model.getFacade().isACreateMessage(getOwner());
     }
 
-    boolean isReturnAction() {
-       return Model.getFacade().isAReturnAction(getAction());
+    boolean isDeleteMessage() {
+       return Model.getFacade().isADeleteMessage(getOwner());
     }
 
-    boolean isSendAction() {
-        return Model.getFacade().isASendAction(getAction());
+    boolean isReplyMessage() {
+       return Model.getFacade().isAReplyMessage(getOwner());
+    }
+
+    boolean isASynchSignalMessage() {
+        return Model.getFacade().isAASynchSignalMessage(getOwner());
     }
     
     /**
@@ -174,7 +178,10 @@
      * to the action type..
      */
     private void updateArrow() {
-        getFig().setDashed(isReturnAction());
+        if (getOwner() == null) {
+            return;
+        }
+        getFig().setDashed(isReplyMessage());
         Object act = getAction();
         if (act != null && Model.getFacade().isAsynchronous(getAction())) {
             setDestArrowHead(new ArrowHeadGreater());
@@ -297,7 +304,7 @@
     public void convertToArc() {
         if (getPoints().length > 0) {
             FigMessageSpline spline = new FigMessageSpline(getPoint(0));
-            spline.setDashed(isReturnAction());
+            spline.setDashed(isReplyMessage());
             super.setFig(spline);
             computeRoute();
         }        
@@ -329,7 +336,7 @@
             final Point startPoint = new Point(x, getYs()[0]);
             final FigMessageSpline spline = new FigMessageSpline(startPoint);
             spline.setComplete(true);
-            spline.setDashed(isReturnAction());
+            spline.setDashed(isReplyMessage());
             super.setFig(spline);
         }
         super.calcBounds();
@@ -456,14 +463,14 @@
         Object activator = null;
         while (it.hasNext()) {
             FigMessage messageFig = it.next();
-            if ((messageFig.isCreateAction() || messageFig.isCallAction())
+            if ((messageFig.isCreateMessage() || 
messageFig.isSynchCallMessage())
                     && messageFig.getDestFigNode() == fcr) {
                 activator = messageFig.getOwner();
             } else if (messageFig == this) {
                 Model.getCollaborationsHelper().setActivator(
                         getOwner(), activator);
                 return activator;
-            } else if (messageFig.isReturnAction()) {
+            } else if (messageFig.isReplyMessage()) {
                 activator = null;
             }
         }

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=19142&r1=19141&r2=19142
==============================================================================
--- 
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
  2011-03-26 07:28:27-0700
@@ -103,7 +103,7 @@
         
         ensureSpace(figMessage);
         
-        if (figMessage.isCallAction()) {
+        if (figMessage.isSynchCallMessage()) {
             // Auto-create a return message for a call message
             
             // TODO: Maybe a return message already exists. Check first and
@@ -122,7 +122,7 @@
             final Object returnMessage = gm.connectMessage(
                     returnMessageSource,
                     returnMessageDest, 
-                    Model.getMetaTypes().getReturnAction());
+                    Model.getMessageSort().getReply());
             
             // Correct the activator value
             Model.getCollaborationsHelper().setActivator(
@@ -166,7 +166,7 @@
             // contained poly
             FigPoly poly = (FigPoly) returnEdge.getFig();
             poly.setComplete(true);
-        } else if (figMessage.isReturnAction()) {
+        } else if (figMessage.isReplyMessage()) {
             figMessage.determineActivator();
         }
         FigPoly poly = (FigPoly) fe.getFig();
@@ -210,7 +210,7 @@
                 true);
         
         final int heightPlusGap;
-        if (figMessage.isCallAction()) {
+        if (figMessage.isSynchCallMessage()) {
             heightPlusGap = 
                 DEFAULT_ACTIVATION_HEIGHT + DEFAULT_MESSAGE_GAP;
         } else {
@@ -229,7 +229,7 @@
             
             for (FigMessage fig : getMessagesBelow(figMessage)) {
                 fig.translateEdge(0, dy);
-                if (fig.isCreateAction()) {
+                if (fig.isCreateMessage()) {
                     FigClassifierRole fcr =
                         (FigClassifierRole) fig.getDestFigNode();
                     fcr.positionHead(fig);

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java?view=diff&pathrev=19142&r1=19141&r2=19142
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
    (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
    2011-03-26 07:28:27-0700
@@ -1,6 +1,6 @@
 // $Id$
 
/*******************************************************************************
- * Copyright (c) 2007,2010 Tom Morris and other contributors
+ * Copyright (c) 2007,2011 Tom Morris and other contributors
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -2537,4 +2537,34 @@
     public boolean isADirectedRelationship(Object handle) {
         return handle instanceof DirectedRelationship;
     }
+
+    public boolean isAASynchCallMessage(Object handle) {
+        Message m = (Message) handle;
+        return m.getMessageSort() == MessageSort.ASYNCH_CALL_LITERAL;
+    }
+
+    public boolean isAASynchSignalMessage(Object handle) {
+        Message m = (Message) handle;
+        return m.getMessageSort() == MessageSort.ASYNCH_SIGNAL_LITERAL;
+    }
+
+    public boolean isACreateMessage(Object handle) {
+        Message m = (Message) handle;
+        return m.getMessageSort() == MessageSort.CREATE_MESSAGE_LITERAL;
+    }
+
+    public boolean isADeleteMessage(Object handle) {
+        Message m = (Message) handle;
+        return m.getMessageSort() == MessageSort.DELETE_MESSAGE_LITERAL;
+    }
+
+    public boolean isAReplyMessage(Object handle) {
+        Message m = (Message) handle;
+        return m.getMessageSort() == MessageSort.REPLY_LITERAL;
+    }
+
+    public boolean isASynchCallMessage(Object handle) {
+        Message m = (Message) handle;
+        return m.getMessageSort() == MessageSort.SYNCH_CALL_LITERAL;
+    }
 }

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java?view=diff&pathrev=19142&r1=19141&r2=19142
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java   
    (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java   
    2011-03-26 07:28:27-0700
@@ -4645,4 +4645,46 @@
     public boolean isADirectedRelationship(Object handle) {
         return false;
     }
+
+    public boolean isAASynchCallMessage(Object handle) {
+        Message message = (Message) handle;
+        if (message.getAction() instanceof CallAction) {
+            CallAction ca = (CallAction) message.getAction();
+            return ca.isAsynchronous();
+        }
+        return false;
+    }
+
+    public boolean isAASynchSignalMessage(Object handle) {
+        Message message = (Message) handle;
+        if (message.getAction() instanceof SendAction) {
+            SendAction sa = (SendAction) message.getAction();
+            return sa.isAsynchronous();
+        }
+        return false;
+    }
+
+    public boolean isACreateMessage(Object handle) {
+        Message message = (Message) handle;
+        return (message.getAction() instanceof CreateAction);
+    }
+
+    public boolean isADeleteMessage(Object handle) {
+        Message message = (Message) handle;
+        return (message.getAction() instanceof DestroyAction);
+    }
+
+    public boolean isAReplyMessage(Object handle) {
+        Message message = (Message) handle;
+        return (message.getAction() instanceof ReturnAction);
+    }
+
+    public boolean isASynchCallMessage(Object handle) {
+        Message message = (Message) handle;
+        if (message.getAction() instanceof CallAction) {
+            CallAction ca = (CallAction) message.getAction();
+            return !ca.isAsynchronous();
+        }
+        return false;
+    }
 }

Modified: trunk/src/argouml-core-model/src/org/argouml/model/Facade.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/Facade.java?view=diff&pathrev=19142&r1=19141&r2=19142
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/Facade.java      
(original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/Facade.java      
2011-03-26 07:28:27-0700
@@ -327,6 +327,55 @@
     boolean isACallAction(Object handle);
 
     /**
+     * Recognizer for Message or sort ASynchCall.
+     *
+     * @param handle candidate
+     * @return true if handle is a CallAction
+     */
+    boolean isAASynchCallMessage(Object handle);
+    
+    /**
+     * Recognizer for Message or sort ASynchSignal.
+     *
+     * @param handle candidate
+     * @return true if handle is a CallAction
+     */
+    boolean isAASynchSignalMessage(Object handle);
+
+    /**
+     * Recognizer for Message or sort Delete.
+     *
+     * @param handle candidate
+     * @return true if handle is a CallAction
+     */
+    boolean isADeleteMessage(Object handle);
+
+    /**
+     * Recognizer for Message or sort Create
+     *
+     * @param handle candidate
+     * @return true if handle is a CallAction
+     */
+    boolean isACreateMessage(Object handle);
+
+    /**
+     * Recognizer for Message or sort SynchCall.
+     *
+     * @param handle candidate
+     * @return true if handle is a CallAction
+     */
+    boolean isASynchCallMessage(Object handle);
+    
+    /**
+     * Recognizer for Message or sort Reply.
+     *
+     * @param handle candidate
+     * @return true if handle is a CallAction
+     */
+    boolean isAReplyMessage(Object handle);
+    
+    
+    /**
      * Recognizer for CallEvent.
      *
      * @param handle candidate

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2714357

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to