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.