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]].
