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