svn commit: r17066 - trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui

Bob Tarling <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
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]].
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.