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