svn commit: r18529 - trunk/src: argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram argouml-core-model-euml/src/org/argouml/model/euml

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2010-07-18 06:50:09-0700
New Revision: 18529

Added:
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigActivityEdge.java
Modified:
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ActivityDiagramRenderer.java
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java
   trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
   trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlHelperEUMLImpl.java

Log:
Allow ControlFlow to be added to activity diagram

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ActivityDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ActivityDiagramRenderer.java?view=diff&pathrev=18529&r1=18528&r2=18529
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ActivityDiagramRenderer.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ActivityDiagramRenderer.java	2010-07-18 06:50:09-0700
@@ -1,6 +1,6 @@
-/* $Id: ActivityDiagramRenderer.java bobtarling $
+/* $Id: $
  *****************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2010 Contributors - see below
  * 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
@@ -16,6 +16,7 @@
 import java.util.Map;
 
 import org.apache.log4j.Logger;
+import org.argouml.model.Model;
 import org.argouml.uml.CommentEdge;
 import org.argouml.uml.diagram.ArgoDiagram;
 import org.argouml.uml.diagram.DiagramSettings;
@@ -54,20 +55,20 @@
     }
 
     public FigEdge getFigEdgeFor(GraphModel gm, Layer lay, Object edge,
-                                 Map styleAttributes) {
-        FigEdge figEdge = null;
-        
+            Map styleAttributes) {
+        assert edge != null;
         assert lay instanceof LayerPerspective;
+
         ArgoDiagram diag = (ArgoDiagram) ((LayerPerspective) lay).getDiagram();
         DiagramSettings settings = diag.getDiagramSettings();
-        
-        if (edge instanceof CommentEdge) {
-            figEdge = new FigEdgeNote(edge, settings);
-        } else {
-            figEdge = getFigEdgeFor(edge, styleAttributes);
-        }       
-        addEdge(lay, figEdge, edge);
-        return figEdge;
-    }
+        FigEdge newEdge = null;
 
+        if (Model.getFacade().isAActivityEdge(edge)) {
+            newEdge = new FigActivityEdge(edge, settings);
+        } else if (edge instanceof CommentEdge) {
+            newEdge = new FigEdgeNote(edge, settings);
+        } 
+        addEdge(lay, newEdge, edge);
+        return newEdge;
+    }
 }

Added: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigActivityEdge.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigActivityEdge.java?view=markup&pathrev=18529
==============================================================================
--- (empty file)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigActivityEdge.java	2010-07-18 06:50:09-0700
@@ -0,0 +1,33 @@
+/* $Id: $
+ *****************************************************************************
+ * Copyright (c) 2009 Contributors - see below
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Bob Tarling
+ *****************************************************************************
+ */
+
+package org.argouml.activity2.diagram;
+
+import org.argouml.uml.diagram.DiagramSettings;
+import org.argouml.uml.diagram.ui.FigEdgeModelElement;
+import org.argouml.uml.diagram.ui.PathItemPlacement;
+import org.tigris.gef.presentation.ArrowHeadGreater;
+
+public class FigActivityEdge extends FigEdgeModelElement {
+
+    private ArrowHeadGreater endArrow = new ArrowHeadGreater();
+
+    public FigActivityEdge(Object owner, DiagramSettings settings) {
+        super(owner, settings);
+        
+        addPathItem(getNameFig(),
+                new PathItemPlacement(this, getNameFig(), 50, 10));
+        getFig().setLineColor(LINE_COLOR);
+        setDestArrowHead(endArrow);
+    }
+}

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java?view=diff&pathrev=18529&r1=18528&r2=18529
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java	2010-07-18 06:50:09-0700
@@ -1,4 +1,4 @@
-/* $Id: UMLActivityDiagram.java  bobtarling $
+/* $Id: $
  *****************************************************************************
  * Copyright (c) 2010 Contributors - see below
  * All rights reserved. This program and the accompanying materials
@@ -28,11 +28,13 @@
 import org.argouml.uml.diagram.DiagramElement;
 import org.argouml.uml.diagram.DiagramSettings;
 import org.argouml.uml.diagram.static_structure.ui.FigComment;
+import org.argouml.uml.diagram.ui.ActionSetMode;
 import org.argouml.uml.diagram.ui.FigNodeModelElement;
 import org.argouml.uml.diagram.ui.RadioAction;
 import org.argouml.uml.diagram.ui.UMLDiagram;
 import org.tigris.gef.base.LayerPerspective;
 import org.tigris.gef.base.LayerPerspectiveMutable;
+import org.tigris.gef.base.ModeCreatePolyEdge;
 import org.tigris.gef.graph.MutableGraphModel;
 import org.tigris.gef.presentation.FigNode;
 
@@ -79,11 +81,12 @@
 
     @Override
     protected Object[] getUmlActions() {
-        Object[] actions =
-        {
-            createAction(Model.getMetaTypes().getCallBehaviorAction(), "button.new-callbehavioraction"),
-            createAction(Model.getMetaTypes().getCreateObjectAction(), "button.new-createobjectaction"),
-            createAction(Model.getMetaTypes().getDestroyObjectAction(), "button.new-destroyobjectaction"),
+        Object[] actions = {
+            getCreateEdgeAction(Model.getMetaTypes().getControlFlow(), "button.new-controlflow"),
+            getCreateEdgeAction(Model.getMetaTypes().getObjectFlow(), "button.new-objectflow"),
+            getCreateNodeAction(Model.getMetaTypes().getCallBehaviorAction(), "button.new-callbehavioraction"),
+            getCreateNodeAction(Model.getMetaTypes().getCreateObjectAction(), "button.new-createobjectaction"),
+            getCreateNodeAction(Model.getMetaTypes().getDestroyObjectAction(), "button.new-destroyobjectaction"),
         };
         return actions;
     }
@@ -91,11 +94,20 @@
     /**
      * @return Returns a diagram tool creation action.
      */
-    private Action createAction(Object metaType, String label) {
+    private Action getCreateNodeAction(Object metaType, String label) {
         return new RadioAction(
                 new CmdCreateNode(metaType, label));
     }
     
+    protected Action getCreateEdgeAction(Object metaType, String label) {
+        return new RadioAction(
+                new ActionSetMode(
+                        ModeCreatePolyEdge.class,
+                        "edgeClass",
+                        metaType,
+                        label));
+    }    
+    
     @Override
     public String getLabelName() {
         return Translator.localize("label.activity-diagram");
@@ -109,7 +121,9 @@
     
     @Override
     public boolean doesAccept(Object objectToAccept) {
-        if (Model.getFacade().isAComment(objectToAccept) || Model.getFacade().isAAction(objectToAccept)) {
+        if (Model.getFacade().isAComment(objectToAccept)
+                || Model.getFacade().isAActivityEdge(objectToAccept) 
+                || Model.getFacade().isAAction(objectToAccept) ) {
             return true;
         }
         return false;

Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java?view=diff&pathrev=18529&r1=18528&r2=18529
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java	(original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java	2010-07-18 06:50:09-0700
@@ -1,5 +1,5 @@
-// $Id$
-/*******************************************************************************
+/* $Id$
+ *******************************************************************************
  * Copyright (c) 2007,2010 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
@@ -9,7 +9,7 @@
  * Contributors:
  *    Tom Morris - initial framework
  *    Bogdan Pistol - initial implementation
- *    thn
+ *    Thomas Neustupny
  *    Bob Tarling
  *****************************************************************************/
 
@@ -32,18 +32,23 @@
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.ActivityNode;
 import org.eclipse.uml2.uml.Actor;
 import org.eclipse.uml2.uml.AggregationKind;
 import org.eclipse.uml2.uml.Association;
 import org.eclipse.uml2.uml.AssociationClass;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.ControlFlow;
+import org.eclipse.uml2.uml.ControlNode;
 import org.eclipse.uml2.uml.DataType;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Enumeration;
 import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.ExecutableNode;
 import org.eclipse.uml2.uml.Extend;
 import org.eclipse.uml2.uml.ExtensionPoint;
 import org.eclipse.uml2.uml.Generalization;
@@ -51,6 +56,8 @@
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Node;
+import org.eclipse.uml2.uml.ObjectFlow;
+import org.eclipse.uml2.uml.ObjectNode;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.Package;
 import org.eclipse.uml2.uml.PackageImport;
@@ -151,6 +158,10 @@
         {Transition.class,       State.class, },
         {AssociationClass.class, Type.class, }, 
         {Property.class, Classifier.class, Association.class, },
+        {ControlFlow.class, ControlNode.class, },
+        {ControlFlow.class, ExecutableNode.class, },
+        {ControlFlow.class, ControlNode.class, ExecutableNode.class, },
+        {ObjectFlow.class, ObjectNode.class, },
 //        {Message.class, ClassifierRole.class },
     };
 
@@ -230,6 +241,22 @@
         } else if (elementType == metaTypes.getInclude()) {
             connection = modelImpl.getUseCasesFactory().buildInclude(
                     fromElement, toElement);
+        } else if (elementType == metaTypes.getControlFlow()) {
+            ActivityNode fromActivity = (ActivityNode) fromElement;
+            ActivityNode toActivity = (ActivityNode) fromElement;
+            ControlFlow cf = UMLFactory.eINSTANCE.createControlFlow();
+            cf.setActivity(fromActivity.getActivity());
+            cf.setSource(fromActivity);
+            cf.setTarget(toActivity);
+            connection = cf;
+        } else if (elementType == metaTypes.getObjectFlow()) {
+            ObjectNode fromObject = (ObjectNode) fromElement;
+            ObjectNode toObject = (ObjectNode) fromElement;
+            ControlFlow of = UMLFactory.eINSTANCE.createControlFlow();
+            of.setActivity(fromObject.getActivity());
+            of.setSource(fromObject);
+            of.setTarget(toObject);
+            connection = of;
         } else if (elementType == metaTypes.getTransition()) {
             connection = modelImpl.getStateMachinesFactory().buildTransition(
                     fromElement, toElement);

Modified: trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlHelperEUMLImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlHelperEUMLImpl.java?view=diff&pathrev=18529&r1=18528&r2=18529
==============================================================================
--- trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlHelperEUMLImpl.java	(original)
+++ trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlHelperEUMLImpl.java	2010-07-18 06:50:09-0700
@@ -20,6 +20,7 @@
 import org.argouml.model.Model;
 import org.argouml.model.UmlHelper;
 import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.ActivityEdge;
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Enumeration;
@@ -78,6 +79,8 @@
             return modelImpl.getCoreHelper().getSource(relationship);
         } else if (relationship instanceof Transition) {
             return modelImpl.getStateMachinesHelper().getSource(relationship);
+        } else if (relationship instanceof ActivityEdge) {
+            return ((ActivityEdge) relationship).getSource();
         } else if (relationship instanceof Property) {
             // TODO: We expect an association end here - check more carefully? - tfm
             return modelImpl.getCoreHelper().getSource(relationship);
@@ -88,17 +91,19 @@
     /*
      * @see org.argouml.model.UmlHelper#getDestination(java.lang.Object)
      */
-    public Object getDestination(Object relationShip) {
-        if (relationShip instanceof Relationship) {
+    public Object getDestination(Object relationship) {
+        if (relationship instanceof Relationship) {
             // handles all children of relationship including extend and
             // include which are not members of core
-            return modelImpl.getCoreHelper().getDestination(relationShip);
-        } else if (relationShip instanceof Transition) {
+            return modelImpl.getCoreHelper().getDestination(relationship);
+        } else if (relationship instanceof ActivityEdge) {
+            return ((ActivityEdge) relationship).getTarget();
+        } else if (relationship instanceof Transition) {
             return modelImpl.getStateMachinesHelper().
-                    getDestination(relationShip);
-        } else if (relationShip instanceof Property) {
+                    getDestination(relationship);
+        } else if (relationship instanceof Property) {
             // TODO: We expect an association end here - check more carefully? - tfm
-            return modelImpl.getCoreHelper().getDestination(relationShip);
+            return modelImpl.getCoreHelper().getDestination(relationship);
         }
         throw new IllegalArgumentException();
     }

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

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.