Author: bobtarling
Date: 2009-04-07 16:56:42-0700
New Revision: 17066

Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewAction.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewEvent.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDeferrableEventListModel.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTransitionTriggerListModel.java

Log:
Refactoring towards a common base class for PopupMenuNewAction and 
PopupMenuNewEvent.

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewAction.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewAction.java?view=diff&pathrev=17066&r1=17065&r2=17066
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewAction.java
     (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewAction.java
     2009-04-07 16:56:42-0700
@@ -48,6 +48,22 @@
 class PopupMenuNewAction extends JPopupMenu {
 
 
+    private static final Object[] actions = new Object[] {
+        "action.new",
+        new Object[] {
+            ActionNewCallAction.getInstance(),
+            ActionNewCreateAction.getInstance(),
+            ActionNewDestroyAction.getInstance(),
+            ActionNewReturnAction.getInstance(),
+            ActionNewSendAction.getInstance(),
+            ActionNewTerminateAction.getInstance(),
+            ActionNewUninterpretedAction.getInstance(),
+            ActionNewActionSequence.getInstance(),
+        },
+        null,
+        ActionRemoveModelElement.SINGLETON
+    };
+    
     /**
      * Constructs a new popupmenu. The given parameter role determines what
      * the purpose is of the actions that can be created via this popupmenu.
@@ -62,60 +78,75 @@
         buildMenu(this, role, list.getTarget());
     }
     
-    public static void buildMenu(JPopupMenu pmenu, 
+    public void buildMenu(JPopupMenu pmenu, 
             String role, Object target) {
       
+        init(role, target);
+        
         JMenu newMenu = new JMenu();
         newMenu.setText(Translator.localize("action.new"));
 
-        newMenu.add(ActionNewCallAction.getInstance());
+        String label = null;
+        for (Object action : actions) {
+            if (action == null) {
+                pmenu.addSeparator();
+            } else if (action instanceof String) {
+                label = (String) action;
+            } else if (action instanceof Action) {
+                pmenu.add((Action) action);
+            } else {
+                JMenu innerMenu = new JMenu(Translator.localize(label));
+                for (Object innerAction : (Object[]) action) {
+                    if (innerAction == null) {
+                        innerMenu.addSeparator();
+                    } else if (innerAction instanceof Action) {
+                        innerMenu.add((Action) innerAction);
+                    }
+                }
+                pmenu.add(innerMenu);
+            }
+        }
+    }
+    
+    private void init(
+            final String role,
+            final Object target) {
         ActionNewCallAction.getInstance().setTarget(target);
         ActionNewCallAction.getInstance().putValue(ActionNewAction.ROLE, role);
 
-        newMenu.add(ActionNewCreateAction.getInstance());
         ActionNewCreateAction.getInstance().setTarget(target);
         ActionNewCreateAction.getInstance()
             .putValue(ActionNewAction.ROLE, role);
 
-        newMenu.add(ActionNewDestroyAction.getInstance());
         ActionNewDestroyAction.getInstance().setTarget(target);
         ActionNewDestroyAction.getInstance()
             .putValue(ActionNewAction.ROLE, role);
 
-        newMenu.add(ActionNewReturnAction.getInstance());
         ActionNewReturnAction.getInstance().setTarget(target);
         ActionNewReturnAction.getInstance()
             .putValue(ActionNewAction.ROLE, role);
 
-        newMenu.add(ActionNewSendAction.getInstance());
         ActionNewSendAction.getInstance().setTarget(target);
         ActionNewSendAction.getInstance().putValue(ActionNewAction.ROLE, role);
 
-        newMenu.add(ActionNewTerminateAction.getInstance());
         ActionNewTerminateAction.getInstance().setTarget(target);
         ActionNewTerminateAction.getInstance()
             .putValue(ActionNewAction.ROLE, role);
 
-        newMenu.add(ActionNewUninterpretedAction.getInstance());
         ActionNewUninterpretedAction.getInstance().setTarget(target);
         ActionNewUninterpretedAction.getInstance()
             .putValue(ActionNewAction.ROLE, role);
 
 
-        newMenu.add(ActionNewActionSequence.getInstance());
         ActionNewActionSequence.getInstance().setTarget(target);
         ActionNewActionSequence.getInstance()
             .putValue(ActionNewAction.ROLE, role);
 
-        pmenu.add(newMenu);
-
-        pmenu.addSeparator();
-
         // TODO: This needs to be fixed to work for ActionSequences - tfm
         ActionRemoveModelElement.SINGLETON.setObjectToRemove(ActionNewAction
              .getAction(role, target));
         ActionRemoveModelElement.SINGLETON.putValue(Action.NAME, 
                 Translator.localize("action.delete-from-model"));
-        pmenu.add(ActionRemoveModelElement.SINGLETON);
+        
     }
 }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewEvent.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewEvent.java?view=diff&pathrev=17066&r1=17065&r2=17066
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewEvent.java
      (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/PopupMenuNewEvent.java
      2009-04-07 16:56:42-0700
@@ -44,6 +44,11 @@
  * @author [email protected]
  */
 class PopupMenuNewEvent extends JPopupMenu {
+    
+    /**
+     * The UID.
+     */
+    private static final long serialVersionUID = -7624618103144695448L;
 
     /**
      * Constructor for PopupMenuNewEvent.<p>
@@ -56,48 +61,37 @@
      * @param role the role
      * @param target the target
      */
-    public PopupMenuNewEvent(String role, Object target) {
+    PopupMenuNewEvent(String role, Object target) {
         super();
 
         buildMenu(this, role, target);
     }
     
-    static void buildMenu(JPopupMenu pmenu, String role, Object target) {
+    void buildMenu(JPopupMenu pmenu, String role, Object target) {
         
         assert role != null;
         assert target != null;
+        
+        init(role, target);
 
         if (role.equals(ActionNewEvent.Roles.DEFERRABLE_EVENT)
                 || role.equals(ActionNewEvent.Roles.TRIGGER)) {
-            JMenu select = new JMenu(Translator.localize("action.select"));
-//            select.setText(Translator.localize("action.select"));
+            JMenu selectMenu = new JMenu(Translator.localize("action.select"));
             if (role.equals(ActionNewEvent.Roles.DEFERRABLE_EVENT)) {
-                ActionAddEventAsDeferrableEvent.SINGLETON.setTarget(target);
                 JMenuItem menuItem = new JMenuItem(
                         ActionAddEventAsDeferrableEvent.SINGLETON);
-//                select.add(ActionAddEventAsDeferrableEvent.SINGLETON);
-                select.add(menuItem);
+                selectMenu.add(menuItem);
             } else if (role.equals(ActionNewEvent.Roles.TRIGGER)) {
-                ActionAddEventAsTrigger.SINGLETON.setTarget(target);
-                select.add(ActionAddEventAsTrigger.SINGLETON);
+                selectMenu.add(ActionAddEventAsTrigger.SINGLETON);
             }
-            pmenu.add(select);
+            pmenu.add(selectMenu);
         }
 
         JMenu newMenu = new JMenu(Translator.localize("action.new"));
-//        newMenu.setText(Translator.localize("action.new"));
         newMenu.add(ActionNewCallEvent.getSingleton());
-        ActionNewCallEvent.getSingleton().setTarget(target);
-        ActionNewCallEvent.getSingleton().putValue(ActionNewEvent.ROLE, role);
         newMenu.add(ActionNewChangeEvent.getSingleton());
-        ActionNewChangeEvent.getSingleton().setTarget(target);
-        ActionNewChangeEvent.getSingleton().putValue(ActionNewEvent.ROLE, 
role);
         newMenu.add(ActionNewSignalEvent.getSingleton());
-        ActionNewSignalEvent.getSingleton().setTarget(target);
-        ActionNewSignalEvent.getSingleton().putValue(ActionNewEvent.ROLE, 
role);
         newMenu.add(ActionNewTimeEvent.getSingleton());
-        ActionNewTimeEvent.getSingleton().setTarget(target);
-        ActionNewTimeEvent.getSingleton().putValue(ActionNewEvent.ROLE, role);
         pmenu.add(newMenu);
 
         pmenu.addSeparator();
@@ -108,9 +102,32 @@
                 Translator.localize("action.delete-from-model"));
         pmenu.add(ActionRemoveModelElement.SINGLETON);
     }
+    
+    private static void init(
+            final String role,
+            final Object target) {
+        
+        if (role.equals(ActionNewEvent.Roles.DEFERRABLE_EVENT)
+                || role.equals(ActionNewEvent.Roles.TRIGGER)) {
+            if (role.equals(ActionNewEvent.Roles.DEFERRABLE_EVENT)) {
+                ActionAddEventAsDeferrableEvent.SINGLETON.setTarget(target);
+            } else if (role.equals(ActionNewEvent.Roles.TRIGGER)) {
+                ActionAddEventAsTrigger.SINGLETON.setTarget(target);
+            }
+        }
 
-    /**
-     * The UID.
-     */
-    private static final long serialVersionUID = -7624618103144695448L;
+        ActionNewCallEvent.getSingleton().setTarget(target);
+        ActionNewCallEvent.getSingleton().putValue(ActionNewEvent.ROLE, role);
+        ActionNewChangeEvent.getSingleton().setTarget(target);
+        ActionNewChangeEvent.getSingleton().putValue(ActionNewEvent.ROLE, 
role);
+        ActionNewSignalEvent.getSingleton().setTarget(target);
+        ActionNewSignalEvent.getSingleton().putValue(ActionNewEvent.ROLE, 
role);
+        ActionNewTimeEvent.getSingleton().setTarget(target);
+        ActionNewTimeEvent.getSingleton().putValue(ActionNewEvent.ROLE, role);
+
+        ActionRemoveModelElement.SINGLETON.setObjectToRemove(
+                ActionNewEvent.getAction(role, target));
+        ActionRemoveModelElement.SINGLETON.putValue(Action.NAME, 
+                Translator.localize("action.delete-from-model"));
+    }
 }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java?view=diff&pathrev=17066&r1=17065&r2=17066
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
 (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
 2009-04-07 16:56:42-0700
@@ -226,134 +226,9 @@
     private void buildSingleRow(JPanel panel, Object target,
             XMLPropertyPanelsDataRecord prop) {
         
-        UMLModelElementListModel model = null;
-        UMLSingleRowSelector pane = null;
-        
-        if ("owner".equals(prop.getName())) {
-            model = new UMLFeatureOwnerListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("behavioralFeature".equals(prop.getName())) {
-            model = new UMLParameterBehavioralFeatListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("parent".equals(prop.getName())) {
-            model = new UMLGeneralizationParentListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("child".equals(prop.getName())) {
-            model = new UMLGeneralizationChildListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("feature".equals(prop.getName())) {
-            model = new UMLParameterBehavioralFeatListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("enumeration".equals(prop.getName())) {
-            EnumerationListModel m = new EnumerationListModel();
-            m.setTarget(target);   
-            pane = new UMLSingleRowSelector(m);
-        } else if ("association".equals(prop.getName())) {
-            model = new UMLAssociationEndAssociationListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("base".equals(prop.getName())) {
-            model = new UMLExtendBaseListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);            
-        } else if ("extension".equals(prop.getName())) {
-            model = new UMLExtendExtensionListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);            
-        } else if ("addition".equals(prop.getName())) {
-            model = new UMLIncludeAdditionListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("useCase".equals(prop.getName())) {
-            model = new UMLExtensionPointUseCaseListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);            
-        } else if ("interaction".equals(prop.getName())) {
-            if (Model.getFacade().isAMessage(target)) {
-                model = new UMLMessageInteractionListModel();
-            } else {
-                model = new UMLCollaborationInteractionListModel();            
    
-            }
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);            
-        } else if ("sender".equals(prop.getName())) {
-            model = new UMLMessageSenderListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);            
-        } else if ("receiver".equals(prop.getName())) {
-            model = new UMLMessageReceiverListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);            
-        } else if ("action".equals(prop.getName())) {
-            model = new UMLMessageActionListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);            
-        } else if ("context".equals(prop.getName())) {
-            model = new UMLInteractionContextListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        }
-        /*
-         * The XML generated is "stimulus", because the A_receiver_stimulus
-         * association has "stimulus" and "receiver" as association ends.
-         * The A_stimulus_sender has "sender" and "stimulus", so it is 
generated
-         * once. So we have created them by hand with a more explicit name and
-         * removed "stimulus".
-         */ 
-        else if ("sentStimulus".equals(prop.getName())) {
-            model = new UMLInstanceSenderStimulusListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("receivedStimulus".equals(prop.getName())) {
-            model = new UMLInstanceReceiverStimulusListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("stateMachine".equals(prop.getName())) {
-            model = new UMLTransitionStatemachineListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("state".equals(prop.getName())) {
-            model = new UMLTransitionStateListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("source".equals(prop.getName())) {
-            model = new UMLTransitionSourceListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("target".equals(prop.getName())) {
-            model = new UMLTransitionTargetListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("guard".equals(prop.getName())) {
-            model = new UMLTransitionGuardListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("effect".equals(prop.getName())) {
-            model = new UMLTransitionEffectListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("trigger".equals(prop.getName())) {
-            model = new UMLTransitionTriggerListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("transition".equals(prop.getName())) {
-            model = new UMLGuardTransitionListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("container".equals(prop.getName())) {
-            model = new UMLStateVertexContainerListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        } else if ("activityGraph".equals(prop.getName())) {
-            model = new UMLPartitionActivityGraphListModel();
-            model.setTarget(target);
-            pane = new UMLSingleRowSelector(model);
-        }
+        final SingleListFactory factory = new SingleListFactory();
+        final JComponent pane =
+            factory.createComponent(target, prop.getName());
         
         if (pane != null) {           
             JLabel label = new JLabel(prop.getName());

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDeferrableEventListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDeferrableEventListModel.java?view=diff&pathrev=17066&r1=17065&r2=17066
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDeferrableEventListModel.java
       (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStateDeferrableEventListModel.java
       2009-04-07 16:56:42-0700
@@ -27,7 +27,6 @@
 import javax.swing.JPopupMenu;
 
 import org.argouml.model.Model;
-import org.argouml.uml.ui.UMLModelElementListModel2;
 import org.argouml.uml.ui.behavior.state_machines.ActionNewEvent;
 
 /**
@@ -61,8 +60,12 @@
 
     @Override
     public boolean buildPopup(JPopupMenu popup, int index) {
-        PopupMenuNewEvent.buildMenu(popup,
-                ActionNewEvent.Roles.DEFERRABLE_EVENT, getTarget());
+        final PopupMenuNewEvent menu =
+            new PopupMenuNewEvent(ActionNewEvent.Roles.DEFERRABLE_EVENT, 
getTarget());
+        
+        menu.buildMenu(popup,
+                ActionNewEvent.Roles.DEFERRABLE_EVENT, getTarget());;
+        
         return true;
     }
 }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTransitionTriggerListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTransitionTriggerListModel.java?view=diff&pathrev=17066&r1=17065&r2=17066
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTransitionTriggerListModel.java
  (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTransitionTriggerListModel.java
  2009-04-07 16:56:42-0700
@@ -60,8 +60,11 @@
 
     @Override
     public boolean buildPopup(JPopupMenu popup, int index) {
-        PopupMenuNewEvent.buildMenu(popup, 
-                ActionNewEvent.Roles.TRIGGER, getTarget());
+        final PopupMenuNewEvent menu =
+            new PopupMenuNewEvent(ActionNewEvent.Roles.TRIGGER, getTarget());
+        
+        menu.buildMenu(popup,
+                ActionNewEvent.Roles.TRIGGER, getTarget());;
         return true;
     }

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

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

Reply via email to