svn commit: r16707 - trunk/src: argouml-app/src/org/argouml/uml/diagram/ui argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram
Tom Morris <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: tfmorris
Date: 2009-01-26 08:17:06-0800
New Revision: 16707
Modified:
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.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/SequenceDiagramGraphModel.java
Log:
RESOLVED - issue 5147: A stick arrow head should be used whenever the attached action is asynchronous
http://argouml.tigris.org/issues/show_bug.cgi?id=5147
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java?view=diff&pathrev=16707&r1=16706&r2=16707
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java 2009-01-26 08:17:06-0800
@@ -598,7 +598,12 @@
endTrans();
}
- /*
+ /**
+ * This method gets called when a bound property gets changed. This may
+ * represent a UML element value from the Model subsystem, a GEF property,
+ * or something which ArgoUML itself implements.
+ *
+ * @param pve the event containing the property change information
* @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
@Override
@@ -611,7 +616,7 @@
try {
removeFromDiagram();
} catch (InvalidElementException e) {
- LOG.error("updateLayout method accessed "
+ LOG.error("updateLayout method accessed "
+ "deleted element", e);
}
}
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=16707&r1=16706&r2=16707
==============================================================================
--- 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-01-26 08:17:06-0800
@@ -26,6 +26,9 @@
import java.awt.Color;
import java.awt.Point;
+import java.beans.PropertyChangeEvent;
+import java.util.HashSet;
+import java.util.Set;
import org.argouml.model.Model;
import org.argouml.notation.NotationProviderFactory2;
@@ -82,6 +85,7 @@
initialize();
action = Model.getFacade().getAction(getOwner());
updateArrow();
+ addElementListener(action, "isAsynchronous");
}
private void initialize() {
@@ -163,20 +167,15 @@
*/
private void updateArrow() {
if (isReturnAction()) {
- setDestArrowHead(new ArrowHeadGreater());
getFig().setDashed(true);
- } else if (isDestroyAction()) {
- setDestArrowHead(new ArrowHeadGreater());
- getFig().setDashed(false);
- } else if (isCreateAction()) {
- setDestArrowHead(new ArrowHeadTriangle());
- getFig().setDashed(false);
- } else if (isCallAction()) {
- setDestArrowHead(new ArrowHeadTriangle());
+ } else {
getFig().setDashed(false);
- } else if (isSendAction()) {
+ }
+ Object act = getAction();
+ if (act != null && Model.getFacade().isAsynchronous(getAction())) {
setDestArrowHead(new ArrowHeadGreater());
- getFig().setDashed(false);
+ } else {
+ setDestArrowHead(new ArrowHeadTriangle());
}
getDestArrowHead().setLineColor(getLineColor());
getDestArrowHead().setFillColor(getLineColor());
@@ -317,4 +316,31 @@
}
super.translate(dx, dy);
}
+
+ /**
+ * {@inheritDoc}
+ * @see org.argouml.uml.diagram.ui.FigEdgeModelElement#propertyChange(java.beans.PropertyChangeEvent)
+ */
+ @Override
+ public void propertyChange(PropertyChangeEvent pve) {
+ if ("isAsynchronous".equals(pve.getPropertyName())) {
+ updateArrow();
+ }
+ super.propertyChange(pve);
+ }
+
+ /*
+ * Overridden purely to keep our superclass from removing the listener
+ * that we just added.
+ *
+ * @see org.argouml.uml.diagram.ui.FigEdgeModelElement#updateListeners(java.lang.Object, java.lang.Object)
+ */
+ @Override
+ protected void updateListeners(Object o1, Object o2 ) {
+ Set<Object[]> listeners = new HashSet<Object[]>();
+ listeners.add(new Object[] {getOwner(), "remove"});
+ listeners.add(new Object[] {getAction(), "isAsynchronous"});
+ updateElementListeners(listeners);
+ }
+
}
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/SequenceDiagramGraphModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/SequenceDiagramGraphModel.java?view=diff&pathrev=16707&r1=16706&r2=16707
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/SequenceDiagramGraphModel.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/SequenceDiagramGraphModel.java 2009-01-26 08:17:06-0800
@@ -316,18 +316,23 @@
Object action = null;
if (Model.getMetaTypes().getCallAction().equals(actionType)) {
action = Model.getCommonBehaviorFactory().createCallAction();
+ Model.getCommonBehaviorHelper().setAsynchronous(action, false);
} else if (Model.getMetaTypes().getCreateAction()
.equals(actionType)) {
action = Model.getCommonBehaviorFactory().createCreateAction();
+ Model.getCommonBehaviorHelper().setAsynchronous(action, false);
} else if (Model.getMetaTypes().getReturnAction()
.equals(actionType)) {
action = Model.getCommonBehaviorFactory().createReturnAction();
+ Model.getCommonBehaviorHelper().setAsynchronous(action, true);
} else if (Model.getMetaTypes().getDestroyAction()
.equals(actionType)) {
action = Model.getCommonBehaviorFactory().createDestroyAction();
+ Model.getCommonBehaviorHelper().setAsynchronous(action, false);
} else if (Model.getMetaTypes().getSendAction()
.equals(actionType)) {
action = Model.getCommonBehaviorFactory().createSendAction();
+ Model.getCommonBehaviorHelper().setAsynchronous(action, true);
} else if (Model.getMetaTypes().getTerminateAction()
.equals(actionType)) {
// not implemented yet
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=1055145
To unsubscribe from this discussion, e-mail: [[email protected]].