Author: bobtarling Date: 2010-03-14 09:27:20-0800 New Revision: 18095 Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
Log: Make the parameters list use SimpleListModel so that the ScrollList toolbar generates a new element toolbar action. Factories in model/MDR adapted to create parameter for Operation, Event and ObjectFlowState Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java?view=diff&pathrev=18095&r1=18094&r2=18095 ============================================================================== --- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java (original) +++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreFactoryMDRImpl.java 2010-03-14 09:27:20-0800 @@ -50,6 +50,7 @@ import org.argouml.model.CoreFactory; import org.argouml.model.ModelCommand; import org.argouml.model.ModelManagementHelper; +import org.omg.uml.behavioralelements.activitygraphs.ObjectFlowState; import org.omg.uml.behavioralelements.commonbehavior.Reception; import org.omg.uml.behavioralelements.commonbehavior.Signal; import org.omg.uml.behavioralelements.statemachines.Event; @@ -1100,10 +1101,19 @@ Parameter res = buildParameter((Classifier) type, event); res.setKind(ParameterDirectionKindEnum.PDK_IN); event.getParameter().add(res); + res.setName("arg" + event.getParameter().size()); + return res; + } else if (o instanceof ObjectFlowState) { + ObjectFlowState ofs = (ObjectFlowState) o; + Parameter res = buildParameter((Classifier) type, ofs); + res.setKind(ParameterDirectionKindEnum.PDK_IN); + ofs.getParameter().add(res); + res.setName("arg" + ofs.getParameter().size()); return res; } else if (o instanceof BehavioralFeature) { BehavioralFeature oper = (BehavioralFeature) o; Parameter res = buildParameter((Classifier) type, oper); + res.setKind(ParameterDirectionKindEnum.PDK_IN); oper.getParameter().add(res); res.setName("arg" + oper.getParameter().size()); return res; Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java?view=diff&pathrev=18095&r1=18094&r2=18095 ============================================================================== --- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java (original) +++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java 2010-03-14 09:27:20-0800 @@ -93,6 +93,7 @@ import org.omg.uml.behavioralelements.commonbehavior.UmlException; import org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction; import org.omg.uml.behavioralelements.statemachines.CompositeState; +import org.omg.uml.behavioralelements.statemachines.Event; import org.omg.uml.behavioralelements.statemachines.FinalState; import org.omg.uml.behavioralelements.statemachines.Guard; import org.omg.uml.behavioralelements.statemachines.Pseudostate; @@ -152,6 +153,7 @@ import org.omg.uml.foundation.core.UmlAssociation; import org.omg.uml.foundation.core.UmlClass; import org.omg.uml.foundation.core.Usage; +import org.omg.uml.foundation.datatypes.ParameterDirectionKindEnum; import org.omg.uml.modelmanagement.ElementImport; import org.omg.uml.modelmanagement.Subsystem; import org.omg.uml.modelmanagement.UmlPackage; @@ -415,11 +417,23 @@ Operation.class }); - // specifies valid elements for a Attribute to contain + // specifies valid elements for a Operation to contain validContainmentMap.put(Operation.class, new Class<?>[] { Parameter.class }); + + // specifies valid elements for an Event to contain + validContainmentMap.put(Event.class, + new Class<?>[] { + Parameter.class + }); + + // specifies valid elements for an ObjectFlowState to contain + validContainmentMap.put(ObjectFlowState.class, + new Class<?>[] { + Parameter.class + }); } public Object buildConnection(Object elementType, Object fromElement, @@ -588,7 +602,10 @@ Object element = null; // if this is a feature get the owner of that feature - if (this.modelImpl.getFacade().isAFeature(container)) { + // TODO: Does anything actually make use of this? It can + // cause unexpected behaviour. + if (this.modelImpl.getFacade().isAFeature(container) + && elementType != metaTypes.getParameter()) { container = this.modelImpl.getFacade().getOwner(container); } @@ -618,7 +635,9 @@ param.setName("T"); // default parameter name element = modelImpl.getCoreFactory().buildTemplateParameter(container, - param, null); + param, null); + } else if (elementType == metaTypes.getParameter()) { + element = getCore().buildParameter(container, null); } else { // build all other elements using existing buildNode element = buildNode(elementType); ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2459551 To unsubscribe from this discussion, e-mail: [[email protected]].
