Author: linus
Date: 2010-04-14 13:53:39-0700
New Revision: 18262

Modified:
   branches/BRANCH_0_30_x/   (props changed)
   branches/BRANCH_0_30_x/src/argouml-app/   (props changed)
   branches/BRANCH_0_30_x/src/argouml-app/tests/org/argouml/profile/   (props 
changed)
   
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml
   
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
   
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
   
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
   
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java
   
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDoActivityListModel.java
   
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateExitListModel.java

Log:
Merging rev 18208 from trunk for Issue: 6041.

Modified: 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml
Url: 
http://argouml.tigris.org/source/browse/argouml/branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml?view=diff&pathrev=18262&r1=18261&r2=18262
==============================================================================
--- 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml
       (original)
+++ 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml
       2010-04-14 13:53:39-0700
@@ -2891,10 +2891,10 @@
   </panel>
   <panel name="CompositeState">
     <text name="name" type="Name" />
-       <singlerow name="container" type="CompositeState" />    
+       <singlerow name="container" type="CompositeState" />
     <singlerow name="entry" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 />
-    <list name="exit" type="Action" />
-    <list name="doActivity" type="Action" label="label.do-activity" />
+    <singlerow name="exit" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 />
+    <singlerow name="doActivity" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 label="label.do-activity" />
     <separator />
     <list name="outgoing" type="Transition" />
     <list name="incoming" type="Transition" />
@@ -3033,8 +3033,8 @@
     <text name="name" type="Name" />
     <singlerow name="container" type="CompositeState" />
     <singlerow name="entry" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 />
-    <list name="exit" type="Action" />
-    <list name="doActivity" type="Action" label="label.do-activity" />
+    <singlerow name="exit" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 />
+    <singlerow name="doActivity" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 label="label.do-activity" />
     <list name="deferrableEvent" 
type="org.omg.uml.behavioralelements.statemachines.CallEvent,org.omg.uml.behavioralelements.statemachines.ChangeEvent,org.omg.uml.behavioralelements.statemachines.SignalEvent,org.omg.uml.behavioralelements.statemachines.TimeEvent"
 label="label.deferrable" />
     <list name="outgoing" type="Transition" />
     <list name="incoming" type="Transition" />    
@@ -3072,8 +3072,8 @@
     <singlerow name="container" type="CompositeState" />
     <combo name="submachine" type="StateMachine" />
     <singlerow name="entry" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 />
-    <list name="exit" type="Action" />
-    <list name="doActivity" type="Action" label="label.do-activity" />
+    <singlerow name="exit" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 />
+    <singlerow name="doActivity" 
type="org.omg.uml.behavioralelements.commonbehavior.CallAction,org.omg.uml.behavioralelements.commonbehavior.CreateAction,org.omg.uml.behavioralelements.commonbehavior.DestroyAction,org.omg.uml.behavioralelements.commonbehavior.ReturnAction,org.omg.uml.behavioralelements.commonbehavior.SendAction,org.omg.uml.behavioralelements.commonbehavior.TerminateAction,org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction,org.omg.uml.behavioralelements.commonbehavior.ActionSequence"
 label="label.do-activity" />
     <separator />
     <list name="outgoing" type="Transition" />
     <list name="incoming" type="Transition" />

Modified: 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java?view=diff&pathrev=18262&r1=18261&r2=18262
==============================================================================
--- 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
   (original)
+++ 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
   2010-04-14 13:53:39-0700
@@ -97,14 +97,6 @@
             model = new UMLStereotypeTagDefinitionListModel(modelElement);
         } else if ("deployedComponent".equals(propName)) {
             model = new UMLNodeDeployedComponentListModel(modelElement);
-        } else if ("doActivity".equals(propName)) {
-            model = new UMLStateDoActivityListModel(modelElement);
-            JList l = new UMLStateDoActivityList((UMLModelElementListModel) 
model);
-            list = new OldScrollList(l);
-        } else if ("exit".equals(propName)) {
-            model = new UMLStateExitListModel(modelElement);
-            JList l = new UMLStateExitList((UMLModelElementListModel) model);
-            list = new OldScrollList(l);
         } else if ("extend".equals(propName)) {
             model = new UMLUseCaseExtendListModel(modelElement);
         } else if ("extended_elements".equals(propName)) {

Modified: 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
Url: 
http://argouml.tigris.org/source/browse/argouml/branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java?view=diff&pathrev=18262&r1=18261&r2=18262
==============================================================================
--- 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
   (original)
+++ 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
   2010-04-14 13:53:39-0700
@@ -251,13 +251,16 @@
         Object metaType = null;
         List metaTypes = null;
         final Action addAction;
-
+        List<Action> newActions = null;
+        
         if (model instanceof UMLModelElementListModel) {
             // Temporary until SimpleListModel is used for all
             target = ((UMLModelElementListModel) model).getTarget();
             metaType = ((UMLModelElementListModel) model).getMetaType();
             scroll = new OldScrollList(model, 1);
             readonly = Model.getModelManagementHelper().isReadOnly(target);
+            metaTypes = null;
+            newActions = ((UMLModelElementListModel) model).getNewActions();
         } else if (model instanceof 
org.argouml.core.propertypanels.ui.SimpleListModel) {
             target = ((org.argouml.core.propertypanels.ui.SimpleListModel) 
model).getUmlElement();
             metaType = ((org.argouml.core.propertypanels.ui.SimpleListModel) 
model).getMetaType();
@@ -335,6 +338,11 @@
                         actions.add(createAction);
                     }
                 }
+                
+                if (newActions != null) {
+                    actions.addAll(newActions);
+                }
+                
                 if (!actions.isEmpty()) {
                     PopupToolBoxButton tb = new 
PopupToolBoxButton(actions.get(0), actions.size(), 1, true);
                     for (Action action : actions) {

Modified: 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java?view=diff&pathrev=18262&r1=18261&r2=18262
==============================================================================
--- 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
     (original)
+++ 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
     2010-04-14 13:53:39-0700
@@ -39,7 +39,6 @@
 
 import javax.swing.DefaultListModel;
 import javax.swing.JComponent;
-
 import org.argouml.core.propertypanels.model.GetterSetterManager;
 import org.argouml.model.Model;
 
@@ -114,6 +113,10 @@
             model = new UMLTemplateParameterTemplateListModel(modelElement, 
propName);
         } else if ("parameter".equals(propName)) {
             model = new UMLTemplateParameterParameterListModel(modelElement, 
propName);
+        } else if ("exit".equals(propName)) {
+            model = new UMLStateExitListModel(modelElement);
+        } else if ("doActivity".equals(propName)) {
+            model = new UMLStateDoActivityListModel(modelElement);
         }
         
         if (model == null) {

Modified: 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java?view=diff&pathrev=18262&r1=18261&r2=18262
==============================================================================
--- 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java
      (original)
+++ 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java
      2010-04-14 13:53:39-0700
@@ -42,6 +42,7 @@
 import java.beans.PropertyChangeListener;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -741,4 +742,8 @@
     public AbstractActionRemoveElement getRemoveAction() {
         return removeAction;
     }
+    
+    public List<Action> getNewActions() {
+       return Collections.emptyList();
+    }
 }

Modified: 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDoActivityListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDoActivityListModel.java?view=diff&pathrev=18262&r1=18261&r2=18262
==============================================================================
--- 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDoActivityListModel.java
   (original)
+++ 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDoActivityListModel.java
   2010-04-14 13:53:39-0700
@@ -38,7 +38,17 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.Action;
+
+import org.apache.log4j.Logger;
+import 
org.argouml.core.propertypanels.ui.UMLStateExitListModel.ActionCreateContainedExitAction;
 import org.argouml.model.Model;
+import org.argouml.ui.targetmanager.TargetManager;
+import org.argouml.uml.ui.AbstractActionNewModelElement;
 import org.argouml.uml.ui.UMLModelElementListModel2;
 
 /**
@@ -46,7 +56,21 @@
  * @author [email protected]
  */
 class UMLStateDoActivityListModel extends UMLModelElementListModel {
+       
+       private static final Logger LOG = 
Logger.getLogger(UMLStateExitListModel.class);
 
+    private final Object[] metaTypes = new Object[] {
+            Model.getMetaTypes().getCallAction(),
+            Model.getMetaTypes().getCreateAction(),
+            Model.getMetaTypes().getDestroyAction(),
+            Model.getMetaTypes().getReturnAction(),
+            Model.getMetaTypes().getSendAction(),
+            Model.getMetaTypes().getTerminateAction(),
+            Model.getMetaTypes().getUninterpretedAction(),
+            Model.getMetaTypes().getActionSequence()
+        };
+       
+       
     /**
      * Constructor for UMLStateDoActivityListModel.
      */
@@ -71,5 +95,89 @@
         return element == Model.getFacade().getDoActivity(getTarget());
     }
 
+    public List<Action> getNewActions() {
+       ArrayList<Action> newActions = new ArrayList<Action>();
+       for (Object meta : metaTypes) {
+            final String label =
+                "button.new-" + 
Model.getMetaTypes().getName(meta).toLowerCase();
+            final Action createAction = new ActionCreateContainedExitAction(
+                    meta,
+                    getTarget(),
+                    label);
+            newActions.add(createAction);
+       }
+       return newActions;
+    }
+    
+    
+    /**
+     * An action to create a model element to be contained by the 
+     * target model element.
+     *
+     * @author Scott Roberts
+     */
+    public class ActionCreateContainedExitAction
+                extends AbstractActionNewModelElement {
+
+        private Object metaType; 
 
-}
+        /**
+         * Construct the action.
+         * 
+         * @param theMetaType the element to be created
+         * @param target the container that will own the new element
+         */
+        public ActionCreateContainedExitAction(
+                Object theMetaType, 
+                Object target) {
+            this(theMetaType, target,
+                    "button.new-"
+                    + Model.getMetaTypes().getName(theMetaType).toLowerCase());
+        }
+        
+        
+        /**
+         * Construct the action.
+         * 
+         * @param theMetaType the element to be created
+         * @param target the container that will own the new element
+         * @param menuDescr the description for the menu item label.
+         */
+        public ActionCreateContainedExitAction(
+                Object theMetaType, 
+                Object target,
+                String menuDescr) {
+            super(menuDescr);
+            
+            metaType = theMetaType;
+            
+            setTarget(target);
+        }
+
+        public void actionPerformed(ActionEvent e) {            
+            Object t = getTarget();
+            Object action = null;
+            if (Model.getMetaTypes().getCallAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createCallAction();
+            } else if (Model.getMetaTypes().getCreateAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createCreateAction();
+            } else if (Model.getMetaTypes().getReturnAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createReturnAction();
+            } else if (Model.getMetaTypes().getDestroyAction() == metaType) {
+                action = 
Model.getCommonBehaviorFactory().createDestroyAction();
+            } else if (Model.getMetaTypes().getSendAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createSendAction();
+            } else if (Model.getMetaTypes().getTerminateAction() == metaType) {
+                action = 
Model.getCommonBehaviorFactory().createTerminateAction();
+            } else if (Model.getMetaTypes().getUninterpretedAction() == 
metaType) {
+                action = 
Model.getCommonBehaviorFactory().createUninterpretedAction();
+            } else if (Model.getMetaTypes().getActionSequence() == metaType) {
+                action = 
Model.getCommonBehaviorFactory().createActionSequence();
+            } else {
+               throw new IllegalStateException(metaType + " not recognised as 
an Action");
+            }
+            Model.getStateMachinesHelper().setDoActivity(t, action);
+            TargetManager.getInstance().setTarget(action);
+        }
+    }
+}
\ No newline at end of file

Modified: 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateExitListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateExitListModel.java?view=diff&pathrev=18262&r1=18261&r2=18262
==============================================================================
--- 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateExitListModel.java
 (original)
+++ 
branches/BRANCH_0_30_x/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateExitListModel.java
 2010-04-14 13:53:39-0700
@@ -38,15 +38,37 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.Action;
+
+import org.apache.log4j.Logger;
 import org.argouml.model.Model;
-import org.argouml.uml.ui.UMLModelElementListModel2;
+import org.argouml.ui.targetmanager.TargetManager;
+import org.argouml.uml.ui.AbstractActionNewModelElement;
 
 /**
  * @since Dec 14, 2002
  * @author [email protected]
  */
 class UMLStateExitListModel extends UMLModelElementListModel {
+       
+       private static final Logger LOG = 
Logger.getLogger(UMLStateExitListModel.class);
 
+    private final Object[] metaTypes = new Object[] {
+        Model.getMetaTypes().getCallAction(),
+        Model.getMetaTypes().getCreateAction(),
+        Model.getMetaTypes().getDestroyAction(),
+        Model.getMetaTypes().getReturnAction(),
+        Model.getMetaTypes().getSendAction(),
+        Model.getMetaTypes().getTerminateAction(),
+        Model.getMetaTypes().getUninterpretedAction(),
+        Model.getMetaTypes().getActionSequence()
+    };
+       
+       
     /**
      * Constructor for UMLStateExitListModel.
      */
@@ -58,7 +80,7 @@
     /*
      * @see org.argouml.uml.ui.UMLModelElementListModel2#buildModelList()
      */
-    protected void buildModelList() {
+    public void buildModelList() {
         removeAllElements();
         addElement(Model.getFacade().getExit(getTarget()));
     }
@@ -66,8 +88,97 @@
     /*
      * @see org.argouml.uml.ui.UMLModelElementListModel2#isValidElement(Object)
      */
-    protected boolean isValidElement(Object element) {
+    public boolean isValidElement(Object element) {
         return element == Model.getFacade().getExit(getTarget());
     }
+    
+    public List<Object> getMetaTypes() {
+       return null;
+    }
 
+    public List<Action> getNewActions() {
+       ArrayList<Action> newActions = new ArrayList<Action>();
+       for (Object meta : metaTypes) {
+            final String label =
+                "button.new-" + 
Model.getMetaTypes().getName(meta).toLowerCase();
+            final Action createAction = new ActionCreateContainedExitAction(
+                    meta,
+                    getTarget(),
+                    label);
+            newActions.add(createAction);
+       }
+       return newActions;
+    }
+    
+    
+    /**
+     * An action to create a model element to be contained by the 
+     * target model element.
+     *
+     * @author Scott Roberts
+     */
+    public class ActionCreateContainedExitAction
+                extends AbstractActionNewModelElement {
+
+        private Object metaType; 
+
+        /**
+         * Construct the action.
+         * 
+         * @param theMetaType the element to be created
+         * @param target the container that will own the new element
+         */
+        public ActionCreateContainedExitAction(
+                Object theMetaType, 
+                Object target) {
+            this(theMetaType, target,
+                    "button.new-"
+                    + Model.getMetaTypes().getName(theMetaType).toLowerCase());
+        }
+        
+        
+        /**
+         * Construct the action.
+         * 
+         * @param theMetaType the element to be created
+         * @param target the container that will own the new element
+         * @param menuDescr the description for the menu item label.
+         */
+        public ActionCreateContainedExitAction(
+                Object theMetaType, 
+                Object target,
+                String menuDescr) {
+            super(menuDescr);
+            
+            metaType = theMetaType;
+            
+            setTarget(target);
+        }
+
+        public void actionPerformed(ActionEvent e) {            
+            Object t = getTarget();
+            Object action = null;
+            if (Model.getMetaTypes().getCallAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createCallAction();
+            } else if (Model.getMetaTypes().getCreateAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createCreateAction();
+            } else if (Model.getMetaTypes().getReturnAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createReturnAction();
+            } else if (Model.getMetaTypes().getDestroyAction() == metaType) {
+                action = 
Model.getCommonBehaviorFactory().createDestroyAction();
+            } else if (Model.getMetaTypes().getSendAction() == metaType) {
+                action = Model.getCommonBehaviorFactory().createSendAction();
+            } else if (Model.getMetaTypes().getTerminateAction() == metaType) {
+                action = 
Model.getCommonBehaviorFactory().createTerminateAction();
+            } else if (Model.getMetaTypes().getUninterpretedAction() == 
metaType) {
+                action = 
Model.getCommonBehaviorFactory().createUninterpretedAction();
+            } else if (Model.getMetaTypes().getActionSequence() == metaType) {
+                action = 
Model.getCommonBehaviorFactory().createActionSequence();
+            } else {
+               throw new IllegalStateException(metaType + " not recognised as 
an Action");
+            }
+            Model.getStateMachinesHelper().setExit(t, action);
+            TargetManager.getInstance().setTarget(action);
+        }
+    }
 }

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

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

Reply via email to