Author: bobtarling
Date: 2011-05-13 04:40:27-0700
New Revision: 19418
Modified:
trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/CollabDiagramGraphModel.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/ActionAddClassifierRole.java
Log:
Allow lifelines to appear in collaboration diagram
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/CollabDiagramGraphModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/CollabDiagramGraphModel.java?view=diff&pathrev=19418&r1=19417&r2=19418
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/CollabDiagramGraphModel.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/CollabDiagramGraphModel.java 2011-05-13 04:40:27-0700
@@ -39,6 +39,7 @@
package org.argouml.uml.diagram.collaboration;
import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.beans.VetoableChangeListener;
import java.util.ArrayList;
import java.util.Collection;
@@ -47,6 +48,7 @@
import java.util.List;
import org.apache.log4j.Logger;
+import org.argouml.model.DeleteInstanceEvent;
import org.argouml.model.Model;
import org.argouml.uml.CommentEdge;
import org.argouml.uml.diagram.UMLMutableGraphSupport;
@@ -57,7 +59,13 @@
* GEF. This class handles only UML Collaboration Diagrams.
*/
public class CollabDiagramGraphModel extends UMLMutableGraphSupport
- implements VetoableChangeListener {
+ implements PropertyChangeListener, VetoableChangeListener {
+
+ /**
+ * The interaction that is shown on the communication diagram.
+ */
+ private Object interaction;
+
/**
* Logger.
*/
@@ -84,7 +92,21 @@
}
setHomeModel(collaboration);
}
-
+
+ /**
+ * Gets the interaction that is shown on the sequence diagram.
+ * @return the interaction of the diagram.
+ */
+ private Object getInteraction() {
+ if (interaction == null) {
+ interaction =
+ Model.getCollaborationsFactory().buildInteraction(
+ getHomeModel());
+ LOG.debug("Interaction built.");
+ Model.getPump().addModelEventListener(this, interaction);
+ }
+ return interaction;
+ }
////////////////////////////////////////////////////////////////
// GraphModel implementation
@@ -373,6 +395,33 @@
}
}
}
+
+ /**
+ * In UML1.4 the sequence diagram is owned by a collaboration.
+ * In UML2 it is owned by an Interaction (which might itself be owned by a
+ * collaboration or some other namespace)
+ * @return the owner of the sequence diagram
+ */
+ public Object getOwner() {
+ if (Model.getFacade().getUmlVersion().charAt(0) == '1') {
+ return getHomeModel();
+ } else {
+ return getInteraction();
+ }
+ }
+
+ /**
+ * Look for delete events of the interaction that this diagram
+ * represents. Null our interaction reference if detected.
+ * @param evt the property change event
+ */
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (evt instanceof DeleteInstanceEvent
+ && evt.getSource() == interaction) {
+ Model.getPump().removeModelEventListener(this, interaction);
+ interaction = null;
+ }
+ }
/**
* The UID.
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/ActionAddClassifierRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/ActionAddClassifierRole.java?view=diff&pathrev=19418&r1=19417&r2=19418
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/ActionAddClassifierRole.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/ActionAddClassifierRole.java 2011-05-13 04:40:27-0700
@@ -70,10 +70,9 @@
GraphModel gm = ce.getGraphModel();
if (gm instanceof CollabDiagramGraphModel) {
Object collaboration =
- ((CollabDiagramGraphModel) gm).getHomeModel();
+ ((CollabDiagramGraphModel) gm).getOwner();
node =
- Model.getCollaborationsFactory().buildClassifierRole(
- collaboration);
+ Model.getCollaborationsFactory().buildLifeline(collaboration);
} else {
throw new IllegalStateException("Graphmodel is not a "
+ "collaboration diagram graph model");
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2735321
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.