svn commit: r17684 - 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-12-19 04:26:35-0800
New Revision: 17684
Removed:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddOFSState.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddPartitionContent.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddReceptionSignal.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddSignalsToSignalEvent.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddStereotypeBaseClass.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionDeleteStereotypeBaseClass.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionNewOFSParameter.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveContextSignal.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveOFSParameter.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveOFSState.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveReceptionSignal.java
Modified:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLOFSStateListModel.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLObjectFlowStateParameterListModel.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLPartitionContentListModel.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalContextListModel.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalEventSignalList.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalReceptionListModel.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStereotypeBaseClassListModel.java
Log:
Make Actions inner classes of whatever uses them
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddOFSState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddOFSState.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddPartitionContent.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddPartitionContent.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddReceptionSignal.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddReceptionSignal.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddSignalsToSignalEvent.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddSignalsToSignalEvent.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddStereotypeBaseClass.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionAddStereotypeBaseClass.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionDeleteStereotypeBaseClass.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionDeleteStereotypeBaseClass.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionNewOFSParameter.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionNewOFSParameter.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveContextSignal.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveContextSignal.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveOFSParameter.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveOFSParameter.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveOFSState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveOFSState.java?view=markup&pathrev=17683
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveReceptionSignal.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionRemoveReceptionSignal.java?view=markup&pathrev=17683
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLOFSStateListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLOFSStateListModel.java?view=diff&pathrev=17684&r1=17683&r2=17684
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLOFSStateListModel.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLOFSStateListModel.java 2009-12-19 04:26:35-0800
@@ -24,9 +24,15 @@
package org.argouml.core.propertypanels.ui;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
+import org.argouml.i18n.Translator;
import org.argouml.model.Model;
+import org.argouml.uml.ui.AbstractActionAddModelElement2;
+import org.argouml.uml.ui.AbstractActionRemoveElement;
/**
* @author mkl
@@ -34,6 +40,11 @@
class UMLOFSStateListModel extends UMLModelElementListModel {
/**
+ * The class uid
+ */
+ private static final long serialVersionUID = -9214579555300746872L;
+
+ /**
* Constructor for UMLOFSStateListModel.
*/
public UMLOFSStateListModel(Object modelElement) {
@@ -77,4 +88,138 @@
}
return false;
}
+
+ /**
+ * @author mkl
+ */
+ private static class ActionAddOFSState extends AbstractActionAddModelElement2 {
+ private Object choiceClass = Model.getMetaTypes().getState();
+
+
+ /**
+ * The constructor.
+ */
+ public ActionAddOFSState() {
+ super();
+ setMultiSelect(true);
+ }
+
+
+ protected void doIt(Collection selected) {
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ Object type = Model.getFacade().getType(t);
+ if (Model.getFacade().isAClassifierInState(type)) {
+ Model.getActivityGraphsHelper().setInStates(type, selected);
+ } else if (Model.getFacade().isAClassifier(type)
+ && (selected != null)
+ && (selected.size() > 0)) {
+ /* So, we found a Classifier
+ * that is not a ClassifierInState.
+ * And at least one state has been selected.
+ * Well, let's correct that:
+ */
+ Object cis =
+ Model.getActivityGraphsFactory()
+ .buildClassifierInState(type, selected);
+ Model.getCoreHelper().setType(t, cis);
+ }
+ }
+ }
+
+
+ protected List getChoices() {
+ List ret = new ArrayList();
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ Object classifier = getType(t);
+ if (Model.getFacade().isAClassifier(classifier)) {
+ ret.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKindWithModel(classifier,
+ choiceClass));
+ }
+ removeTopStateFrom(ret);
+ }
+ return ret;
+ }
+
+
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-state");
+ }
+
+
+ protected List getSelected() {
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ Object type = Model.getFacade().getType(t);
+ if (Model.getFacade().isAClassifierInState(type)) {
+ return new ArrayList(Model.getFacade().getInStates(type));
+ }
+ }
+ return new ArrayList();
+ }
+
+ private static Object getType(Object target) {
+ Object type = Model.getFacade().getType(target);
+ if (Model.getFacade().isAClassifierInState(type)) {
+ type = Model.getFacade().getType(type);
+ }
+ return type;
+ }
+ /**
+ * Utility function to remove the top states
+ * from a given collection of states.
+ *
+ * @param ret a collection of states
+ */
+ static void removeTopStateFrom(Collection ret) {
+ Collection tops = new ArrayList();
+ for (Object state : ret) {
+ if (Model.getFacade().isACompositeState(state)
+ && Model.getFacade().isTop(state)) {
+ tops.add(state);
+ }
+ }
+ ret.removeAll(tops);
+ }
+ }
+
+ /**
+ * @author mkl
+ */
+ private static class ActionRemoveOFSState extends AbstractActionRemoveElement {
+
+ /**
+ * The class uid
+ */
+ private static final long serialVersionUID = 4745674604611374936L;
+
+ /**
+ * Constructor.
+ */
+ public ActionRemoveOFSState() {
+ super(Translator.localize("menu.popup.remove"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ super.actionPerformed(e);
+ Object state = getObjectToRemove();
+ if (state != null) {
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ Object type = Model.getFacade().getType(t);
+ if (Model.getFacade().isAClassifierInState(type)) {
+ Collection states =
+ new ArrayList(
+ Model.getFacade().getInStates(type));
+ states.remove(state);
+ Model.getActivityGraphsHelper()
+ .setInStates(type, states);
+ }
+ }
+ }
+ }
+ }
}
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLObjectFlowStateParameterListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLObjectFlowStateParameterListModel.java?view=diff&pathrev=17684&r1=17683&r2=17684
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLObjectFlowStateParameterListModel.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLObjectFlowStateParameterListModel.java 2009-12-19 04:26:35-0800
@@ -24,7 +24,16 @@
package org.argouml.core.propertypanels.ui;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.argouml.i18n.Translator;
import org.argouml.model.Model;
+import org.argouml.uml.ui.AbstractActionAddModelElement2;
+import org.argouml.uml.ui.AbstractActionNewModelElement;
+import org.argouml.uml.ui.AbstractActionRemoveElement;
/**
* @author mkl
@@ -32,6 +41,11 @@
class UMLObjectFlowStateParameterListModel extends UMLModelElementListModel {
/**
+ * The class uid
+ */
+ private static final long serialVersionUID = -6095531893213309195L;
+
+ /**
* Constructor for UMLObjectFlowStateParameterListModel.
*/
public UMLObjectFlowStateParameterListModel(Object modelElement, String propertyName) {
@@ -59,5 +73,123 @@
return Model.getFacade().getParameters(getTarget()).contains(
element);
}
+
+ /**
+ * @author mkl
+ */
+ private static class ActionAddOFSParameter extends AbstractActionAddModelElement2 {
+ private Object choiceClass = Model.getMetaTypes().getParameter();
+
+ /**
+ * The constructor.
+ */
+ public ActionAddOFSParameter() {
+ super();
+ setMultiSelect(true);
+ }
+
+ protected void doIt(Collection selected) {
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ Model.getActivityGraphsHelper().setParameters(t, selected);
+ }
+ }
+
+
+ protected List getChoices() {
+ List ret = new ArrayList();
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ Object classifier = getType(t);
+ if (Model.getFacade().isAClassifier(classifier)) {
+ ret.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKindWithModel(classifier,
+ choiceClass));
+ }
+
+ // TODO: We may want to restrict the list to parameters which
+ // conform to the following WFR:
+// parameter.type = ofstype
+// or (parameter.kind = #in
+// and ofstype.allSupertypes->includes(type))
+// or ((parameter.kind = #out or parameter.kind = #return)
+// and type.allSupertypes->includes(ofstype))
+// or (parameter.kind = #inout
+// and ( ofstype.allSupertypes->includes(type)
+// or type.allSupertypes->includes(ofstype))))
+
+ }
+ return ret;
+ }
+
+
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-state");
+ }
+
+
+ protected List getSelected() {
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ return new ArrayList(Model.getFacade().getParameters(t));
+ }
+ return new ArrayList();
+ }
+
+ private static Object getType(Object target) {
+ Object type = Model.getFacade().getType(target);
+ if (Model.getFacade().isAClassifierInState(type)) {
+ type = Model.getFacade().getType(type);
+ }
+ return type;
+ }
+ }
+
+ /**
+ * @author mkl
+ */
+ private static class ActionNewOFSParameter extends AbstractActionNewModelElement {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Object target = getTarget();
+ if (Model.getFacade().isAObjectFlowState(target)) {
+ Object type = getType(target);
+ Object parameter = Model.getCoreFactory().createParameter();
+ Model.getCoreHelper().setType(parameter, type);
+ Model.getActivityGraphsHelper().addParameter(target, parameter);
+ }
+ }
+ private static Object getType(Object target) {
+ Object type = Model.getFacade().getType(target);
+ if (Model.getFacade().isAClassifierInState(type)) {
+ type = Model.getFacade().getType(type);
+ }
+ return type;
+ }
+ }
+
+ /**
+ * @author mkl
+ */
+ private static class ActionRemoveOFSParameter extends AbstractActionRemoveElement {
+ /**
+ * Constructor.
+ */
+ public ActionRemoveOFSParameter() {
+ super(Translator.localize("menu.popup.remove"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ super.actionPerformed(e);
+ Object param = getObjectToRemove();
+ if (param != null) {
+ Object t = getTarget();
+ if (Model.getFacade().isAObjectFlowState(t)) {
+ Model.getActivityGraphsHelper().removeParameter(t, param);
+ }
+ }
+ }
+ }
}
\ No newline at end of file
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLPartitionContentListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLPartitionContentListModel.java?view=diff&pathrev=17684&r1=17683&r2=17684
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLPartitionContentListModel.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLPartitionContentListModel.java 2009-12-19 04:26:35-0800
@@ -24,7 +24,13 @@
package org.argouml.core.propertypanels.ui;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.argouml.i18n.Translator;
import org.argouml.model.Model;
+import org.argouml.uml.ui.AbstractActionAddModelElement2;
/**
* @author mkl
@@ -49,5 +55,53 @@
Object partition = getTarget();
return Model.getFacade().getContents(partition).contains(element);
}
-
+
+ /**
+ * @author mkl
+ */
+ private static class ActionAddPartitionContent extends AbstractActionAddModelElement2 {
+
+ /**
+ * The class uid
+ */
+ private static final long serialVersionUID = -3371454533555822156L;
+
+ public ActionAddPartitionContent() {
+ super();
+ setMultiSelect(true);
+ }
+
+ @Override
+ protected void doIt(Collection selected) {
+ Object partition = getTarget();
+ if (Model.getFacade().isAPartition(partition)) {
+ Model.getActivityGraphsHelper().setContents(
+ partition, selected);
+ }
+ }
+
+ protected List getChoices() {
+ List ret = new ArrayList();
+ if (Model.getFacade().isAPartition(getTarget())) {
+ Object partition = getTarget();
+ Object ag = Model.getFacade().getActivityGraph(partition);
+ if (ag != null) {
+ Object top = Model.getFacade().getTop(ag);
+ /* There are no composite states, so this will work: */
+ ret.addAll(Model.getFacade().getSubvertices(top));
+ }
+ }
+ return ret;
+ }
+
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-contents");
+ }
+
+ protected List getSelected() {
+ List ret = new ArrayList();
+ ret.addAll(Model.getFacade().getContents(getTarget()));
+ return ret;
+ }
+ }
}
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalContextListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalContextListModel.java?view=diff&pathrev=17684&r1=17683&r2=17684
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalContextListModel.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalContextListModel.java 2009-12-19 04:26:35-0800
@@ -24,9 +24,16 @@
package org.argouml.core.propertypanels.ui;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.argouml.i18n.Translator;
+import org.argouml.kernel.ProjectManager;
import org.argouml.model.Model;
-import org.argouml.uml.ui.UMLModelElementListModel2;
-import org.argouml.uml.ui.behavior.common_behavior.ActionAddContextSignal;
+import org.argouml.uml.ui.AbstractActionAddModelElement2;
+import org.argouml.uml.ui.AbstractActionRemoveElement;
/**
* The model for the listbox showing the contexts of a signal.
@@ -36,6 +43,11 @@
class UMLSignalContextListModel extends UMLModelElementListModel {
/**
+ * The class uid
+ */
+ private static final long serialVersionUID = 2002737769556890982L;
+
+ /**
* The constructor.
*/
public UMLSignalContextListModel(Object modelElement) {
@@ -64,4 +76,75 @@
element);
}
+ /**
+ * This Action removes a Context from a Signal.
+ *
+ * @author Michiel
+ */
+ private static class ActionRemoveContextSignal extends AbstractActionRemoveElement {
+
+ /**
+ * The serial version.
+ */
+ private static final long serialVersionUID = -3345844954130000669L;
+
+ /**
+ * Construct an Action which removes a Context from a Signal.
+ */
+ public ActionRemoveContextSignal() {
+ super(Translator.localize("menu.popup.remove"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ super.actionPerformed(e);
+ Object context = getObjectToRemove();
+ if (context != null) {
+ Object signal = getTarget();
+ if (Model.getFacade().isASignal(signal)) {
+ Model.getCommonBehaviorHelper().removeContext(signal, context);
+ }
+ }
+ }
+ }
+
+ /**
+ * This action adds a context to a signal.
+ *
+ * @author [email protected]
+ */
+ private static class ActionAddContextSignal extends AbstractActionAddModelElement2 {
+
+ /**
+ * The constructor.
+ */
+ public ActionAddContextSignal() {
+ super();
+ }
+
+ protected List getChoices() {
+ List ret = new ArrayList();
+ Object model =
+ ProjectManager.getManager().getCurrentProject().getModel();
+ if (getTarget() != null) {
+ ret.addAll(Model.getModelManagementHelper()
+ .getAllBehavioralFeatures(model));
+ }
+ return ret;
+ }
+
+ protected List getSelected() {
+ List ret = new ArrayList();
+ ret.addAll(Model.getFacade().getContexts(getTarget()));
+ return ret;
+ }
+
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-contexts");
+ }
+
+ protected void doIt(Collection selected) {
+ Model.getCommonBehaviorHelper().setContexts(getTarget(), selected);
+ }
+ }
}
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalEventSignalList.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalEventSignalList.java?view=diff&pathrev=17684&r1=17683&r2=17684
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalEventSignalList.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalEventSignalList.java 2009-12-19 04:26:35-0800
@@ -24,19 +24,33 @@
package org.argouml.core.propertypanels.ui;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.swing.Action;
+import javax.swing.Icon;
import javax.swing.JPopupMenu;
+import org.argouml.application.helpers.ResourceLoaderWrapper;
+import org.argouml.i18n.Translator;
+import org.argouml.model.Model;
+import org.argouml.ui.targetmanager.TargetManager;
import org.argouml.uml.ui.AbstractActionAddModelElement2;
-import org.argouml.uml.ui.behavior.common_behavior.ActionNewSignal;
+import org.argouml.uml.ui.AbstractActionNewModelElement;
/**
- *
* @author MarkusK
- *
*/
class UMLSignalEventSignalList extends UMLMutableLinkedList {
/**
+ * The class uid
+ */
+ private static final long serialVersionUID = -1557658052001738064L;
+
+ /**
* Constructor for UMLTransitionTriggerList.
* @param dataModel the model
*/
@@ -49,9 +63,120 @@
*/
public JPopupMenu getPopupMenu() {
JPopupMenu menu = new JPopupMenu();
- ActionAddSignalsToSignalEvent.SINGLETON.setTarget(getTarget());
- menu.add(ActionAddSignalsToSignalEvent.SINGLETON);
+ menu.add(new ActionAddSignalsToSignalEvent(getTarget()));
menu.add(new ActionNewSignal());
return menu;
}
+
+ /**
+ * Provide a dialog which helps the user to select one event
+ * out of an existing list,
+ * which will be used as the trigger of the transition.
+ *
+ * @author MarkusK
+ *
+ */
+ private static class ActionAddSignalsToSignalEvent extends AbstractActionAddModelElement2 {
+
+ /**
+ * Constructor for ActionAddClassifierRoleBase.
+ */
+ public ActionAddSignalsToSignalEvent(Object target) {
+ super();
+ setMultiSelect(false);
+ setTarget(target);
+ }
+
+
+ protected List getChoices() {
+ List vec = new ArrayList();
+
+ vec.addAll(Model.getModelManagementHelper().getAllModelElementsOfKind(
+ Model.getFacade().getRoot(getTarget()),
+ Model.getMetaTypes().getSignal()));
+
+ return vec;
+ }
+
+
+ protected List getSelected() {
+ List vec = new ArrayList();
+ Object signal = Model.getFacade().getSignal(getTarget());
+ if (signal != null) {
+ vec.add(signal);
+ }
+ return vec;
+ }
+
+
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-signal");
+ }
+
+
+ @Override
+ protected void doIt(Collection selected) {
+ Object event = getTarget();
+ if (selected == null || selected.size() == 0) {
+ Model.getCommonBehaviorHelper().setSignal(event, null);
+ } else {
+ Model.getCommonBehaviorHelper().setSignal(event,
+ selected.iterator().next());
+ }
+ }
+
+ /**
+ * The UID.
+ */
+ private static final long serialVersionUID = 6890869588365483936L;
+ }
+
+ /**
+ * Create a new Signal.
+ */
+ public class ActionNewSignal extends AbstractActionNewModelElement {
+
+ /**
+ * The class uid
+ */
+ private static final long serialVersionUID = -1905204858078372670L;
+
+ /**
+ * The constructor.
+ */
+ public ActionNewSignal() {
+ super("button.new-signal");
+ putValue(Action.NAME, Translator.localize("button.new-signal"));
+ Icon icon = ResourceLoaderWrapper.lookupIcon("SignalSending");
+ putValue(Action.SMALL_ICON, icon);
+ }
+
+ /**
+ * Creates a new signal and in case of a SignalEvent as target also set the
+ * Signal for this event.<p>
+ * {@inheritDoc}
+ */
+ public void actionPerformed(ActionEvent e) {
+ Object target = TargetManager.getInstance().getModelTarget();
+ if (Model.getFacade().isASignalEvent(target)
+ || Model.getFacade().isASendAction(target)
+ || Model.getFacade().isAReception(target)
+ || Model.getFacade().isABehavioralFeature(target)) {
+ Object newSig =
+ Model.getCommonBehaviorFactory().buildSignal(target);
+ TargetManager.getInstance().setTarget(newSig);
+ } else {
+ Object ns = null;
+ if (Model.getFacade().isANamespace(target)) {
+ ns = target;
+ } else {
+ ns = Model.getFacade().getNamespace(target);
+ }
+ Object newElement = Model.getCommonBehaviorFactory().createSignal();
+ TargetManager.getInstance().setTarget(newElement);
+ Model.getCoreHelper().setNamespace(newElement, ns);
+ }
+ super.actionPerformed(e);
+ }
+ }
}
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalReceptionListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalReceptionListModel.java?view=diff&pathrev=17684&r1=17683&r2=17684
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalReceptionListModel.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLSignalReceptionListModel.java 2009-12-19 04:26:35-0800
@@ -24,8 +24,16 @@
package org.argouml.core.propertypanels.ui;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.argouml.i18n.Translator;
+import org.argouml.kernel.ProjectManager;
import org.argouml.model.Model;
-import org.argouml.uml.ui.UMLModelElementListModel2;
+import org.argouml.uml.ui.AbstractActionAddModelElement2;
+import org.argouml.uml.ui.AbstractActionRemoveElement;
/**
* The model for the listbox showing the receptions of a signal.
@@ -35,6 +43,11 @@
class UMLSignalReceptionListModel extends UMLModelElementListModel {
/**
+ * The class uid
+ */
+ private static final long serialVersionUID = 1045014158284951739L;
+
+ /**
* Construct a list model showing the receptions of a signal.
*/
public UMLSignalReceptionListModel(Object modelElement) {
@@ -67,4 +80,86 @@
&& Model.getFacade().getReceptions(getTarget()).contains(element);
}
+ /**
+ * This Action adds a Reception to a Signal.
+ *
+ * @author Michiel
+ */
+ private static class ActionAddReceptionSignal extends AbstractActionAddModelElement2 {
+
+ /**
+ * Construct an Action which adds a Reception to a Signal.
+ */
+ public ActionAddReceptionSignal() {
+ super();
+ }
+
+
+ protected List getChoices() {
+ List ret = new ArrayList();
+ Object model =
+ ProjectManager.getManager().getCurrentProject().getModel();
+ if (getTarget() != null) {
+ ret.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getReception()));
+ }
+ return ret;
+ }
+
+
+ protected List getSelected() {
+ List ret = new ArrayList();
+ ret.addAll(Model.getFacade().getReceptions(getTarget()));
+ return ret;
+ }
+
+
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-receptions");
+ }
+
+
+ @Override
+ protected void doIt(Collection selected) {
+ Model.getCommonBehaviorHelper().setReception(getTarget(), selected);
+ }
+
+ }
+
+ /**
+ * This Action removes a Reception from a Signal.
+ *
+ * @author Michiel
+ */
+ private static class ActionRemoveReceptionSignal extends AbstractActionRemoveElement {
+
+ /**
+ * The class uid
+ */
+ private static final long serialVersionUID = 8213584329453727152L;
+
+ /**
+ * Construct an Action which removes a Reception from a Signal.
+ */
+ public ActionRemoveReceptionSignal() {
+ super(Translator.localize("menu.popup.remove"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ super.actionPerformed(e);
+ Object reception = getObjectToRemove();
+ if (reception != null) {
+ Object signal = getTarget();
+ if (Model.getFacade().isASignal(signal)) {
+ // TODO: Should we delete the Reception? A Reception
+ // without a Signal violates the cardinality of 1 in
+ // the metamodel - tfm - 20070308
+ Model.getCommonBehaviorHelper().removeReception(signal,
+ reception);
+ }
+ }
+ }
+ }
}
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStereotypeBaseClassListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStereotypeBaseClassListModel.java?view=diff&pathrev=17684&r1=17683&r2=17684
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStereotypeBaseClassListModel.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStereotypeBaseClassListModel.java 2009-12-19 04:26:35-0800
@@ -24,11 +24,19 @@
package org.argouml.core.propertypanels.ui;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import org.argouml.i18n.Translator;
import org.argouml.model.Model;
-import org.argouml.uml.ui.UMLModelElementListModel2;
+import org.argouml.uml.ui.AbstractActionAddModelElement2;
+import org.argouml.uml.ui.AbstractActionRemoveElement;
/**
* The list model for the BaseClasses of the stereotype.
@@ -67,4 +75,109 @@
}
return false;
}
+
+ /**
+ * The Action to add a baseclass to the stereotype.
+ *
+ * @author Michiel
+ */
+ private static class ActionAddStereotypeBaseClass extends AbstractActionAddModelElement2 {
+
+ private List<String> metaClasses;
+
+ public ActionAddStereotypeBaseClass() {
+ super();
+ initMetaClasses();
+ }
+
+ /**
+ * Initialize the meta-classes list. <p>
+ *
+ * All this code is necessary to be independent of
+ * model repository implementation,
+ * i.e. to ensure that we have a
+ * sorted list of strings.
+ */
+ void initMetaClasses() {
+ Collection<String> tmpMetaClasses =
+ Model.getCoreHelper().getAllMetatypeNames();
+ if (tmpMetaClasses instanceof List) {
+ metaClasses = (List<String>) tmpMetaClasses;
+ } else {
+ metaClasses = new LinkedList<String>(tmpMetaClasses);
+ }
+ try {
+ Collections.sort(metaClasses);
+ } catch (UnsupportedOperationException e) {
+ // We got passed an unmodifiable List. Copy it and sort the result
+ metaClasses = new LinkedList<String>(tmpMetaClasses);
+ Collections.sort(metaClasses);
+ }
+ }
+
+ @Override
+ protected List<String> getChoices() {
+ return Collections.unmodifiableList(metaClasses);
+ }
+
+ @Override
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-baseclasses");
+ }
+
+ @Override
+ protected List<String> getSelected() {
+ List<String> result = new ArrayList<String>();
+ if (Model.getFacade().isAStereotype(getTarget())) {
+ Collection<String> bases =
+ Model.getFacade().getBaseClasses(getTarget());
+ result.addAll(bases);
+ }
+ return result;
+ }
+
+ @Override
+ protected void doIt(Collection selected) {
+ Object stereo = getTarget();
+ Set<Object> oldSet = new HashSet<Object>(getSelected());
+ Set toBeRemoved = new HashSet<Object>(oldSet);
+
+ for (Object o : selected) {
+ if (oldSet.contains(o)) {
+ toBeRemoved.remove(o);
+ } else {
+ Model.getExtensionMechanismsHelper()
+ .addBaseClass(stereo, o);
+ }
+ }
+ for (Object o : toBeRemoved) {
+ Model.getExtensionMechanismsHelper().removeBaseClass(stereo, o);
+ }
+ }
+
+ }
+
+ /**
+ * The Action to remove a baseclass from a stereotype.
+ *
+ * @author Michiel
+ */
+ private static class ActionDeleteStereotypeBaseClass extends AbstractActionRemoveElement {
+
+ public ActionDeleteStereotypeBaseClass() {
+ super(Translator.localize("menu.popup.remove"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Object baseclass = getObjectToRemove();
+ if (baseclass != null) {
+ Object st = getTarget();
+ if (Model.getFacade().isAStereotype(st)) {
+ Model.getExtensionMechanismsHelper().removeBaseClass(st,
+ baseclass);
+ }
+ }
+ }
+ }
}
\ No newline at end of file
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2431705
To unsubscribe from this discussion, e-mail: [[email protected]].