Author: bobtarling
Date: 2010-03-14 09:27:20-0800
New Revision: 18095

Modified:
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java

Log:
Make the parameters list use SimpleListModel so that the ScrollList toolbar 
generates a new element toolbar action. Factories in model/MDR adapted to 
create parameter for Operation, Event and ObjectFlowState

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java?view=diff&pathrev=18095&r1=18094&r2=18095
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
  (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java
  2010-03-14 09:27:20-0800
@@ -50,6 +50,7 @@
 import org.argouml.model.CoreFactory;
 import org.argouml.model.ModelCommand;
 import org.argouml.model.ModelManagementHelper;
+import org.omg.uml.behavioralelements.activitygraphs.ObjectFlowState;
 import org.omg.uml.behavioralelements.commonbehavior.Reception;
 import org.omg.uml.behavioralelements.commonbehavior.Signal;
 import org.omg.uml.behavioralelements.statemachines.Event;
@@ -1100,10 +1101,19 @@
             Parameter res = buildParameter((Classifier) type, event);
             res.setKind(ParameterDirectionKindEnum.PDK_IN);
             event.getParameter().add(res);
+            res.setName("arg" + event.getParameter().size());
+            return res;
+        } else if (o instanceof ObjectFlowState) {
+            ObjectFlowState ofs = (ObjectFlowState) o;
+            Parameter res = buildParameter((Classifier) type, ofs);
+            res.setKind(ParameterDirectionKindEnum.PDK_IN);
+            ofs.getParameter().add(res);
+            res.setName("arg" + ofs.getParameter().size());
             return res;
         } else if (o instanceof BehavioralFeature) {
             BehavioralFeature oper = (BehavioralFeature) o;
             Parameter res = buildParameter((Classifier) type, oper);
+            res.setKind(ParameterDirectionKindEnum.PDK_IN);
             oper.getParameter().add(res);
             res.setName("arg" + oper.getParameter().size());
             return res;

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java?view=diff&pathrev=18095&r1=18094&r2=18095
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
   (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
   2010-03-14 09:27:20-0800
@@ -93,6 +93,7 @@
 import org.omg.uml.behavioralelements.commonbehavior.UmlException;
 import org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction;
 import org.omg.uml.behavioralelements.statemachines.CompositeState;
+import org.omg.uml.behavioralelements.statemachines.Event;
 import org.omg.uml.behavioralelements.statemachines.FinalState;
 import org.omg.uml.behavioralelements.statemachines.Guard;
 import org.omg.uml.behavioralelements.statemachines.Pseudostate;
@@ -152,6 +153,7 @@
 import org.omg.uml.foundation.core.UmlAssociation;
 import org.omg.uml.foundation.core.UmlClass;
 import org.omg.uml.foundation.core.Usage;
+import org.omg.uml.foundation.datatypes.ParameterDirectionKindEnum;
 import org.omg.uml.modelmanagement.ElementImport;
 import org.omg.uml.modelmanagement.Subsystem;
 import org.omg.uml.modelmanagement.UmlPackage;
@@ -415,11 +417,23 @@
                     Operation.class 
                 });
         
-        // specifies valid elements for a Attribute to contain
+        // specifies valid elements for a Operation to contain
         validContainmentMap.put(Operation.class, 
                 new Class<?>[] { 
                     Parameter.class
                 });
+        
+        // specifies valid elements for an Event to contain
+        validContainmentMap.put(Event.class, 
+                new Class<?>[] { 
+                    Parameter.class
+                });
+        
+        // specifies valid elements for an ObjectFlowState to contain
+        validContainmentMap.put(ObjectFlowState.class, 
+                new Class<?>[] { 
+                    Parameter.class
+                });
     }
         
     public Object buildConnection(Object elementType, Object fromElement,
@@ -588,7 +602,10 @@
         Object element = null;
         
         // if this is a feature get the owner of that feature
-        if (this.modelImpl.getFacade().isAFeature(container)) {
+        // TODO: Does anything actually make use of this? It can
+        // cause unexpected behaviour.
+        if (this.modelImpl.getFacade().isAFeature(container)
+                && elementType != metaTypes.getParameter()) {
             container = this.modelImpl.getFacade().getOwner(container);
         }
         
@@ -618,7 +635,9 @@
             param.setName("T"); // default parameter name
             element = 
                 modelImpl.getCoreFactory().buildTemplateParameter(container, 
-                        param, null);            
+                        param, null);
+        } else if (elementType == metaTypes.getParameter()) {
+            element = getCore().buildParameter(container, null);
         } else {
             // build all other elements using existing buildNode
             element = buildNode(elementType);

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

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to