svn commit: r18717 - trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels: model ui
[email protected] Tue, 31 Aug 2010 14:49:15 -0700 (PDT)
Newsgroups
gmane.comp.lang.uml.argouml.cvs
Message-ID
<[email protected] >
Author: bobtarling
Date: 2010-08-31 14:49:15-0700
New Revision: 18717
Removed:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComponentResidentListModel.java
Modified:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/metamodel.xml
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
Log:
Allow addition and removal of element residence to component - work in progress
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java?view=diff&pathrev=18717&r1=18716&r2=18717
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java 2010-08-31 14:49:15-0700
@@ -18,6 +18,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -102,6 +103,7 @@
addGetterSetter("raisedSignal", new RaisedExceptionGetterSetter());
addGetterSetter("receiver", new ReceiverGetterSetter());
addGetterSetter("reception", new ReceptionGetterSetter());
+ addGetterSetter("residentElement", new ResidentElementGetterSetter());
addGetterSetter("sender", new SenderGetterSetter());
addGetterSetter("subvertex", new SubvertexGetterSetter());
addGetterSetter("targetScope", new TargetScopeGetterSetter());
@@ -1616,6 +1618,148 @@
}
}
+ private class ResidentElementGetterSetter extends ListGetterSetter implements Addable, Removeable {
+
+ public Collection getOptions(Object modelElement, Collection<Class<?>> types) {
+ Iterator it = Model.getFacade().getResidentElements(modelElement).iterator();
+ ArrayList list = new ArrayList();
+ while (it.hasNext()) {
+ list.add(Model.getFacade().getResident(it.next()));
+ }
+ return list;
+ }
+
+ public Object get(Object modelElement, Class<?> type) {
+ // not needed
+ return null;
+ }
+
+ public void set(Object element, Object x) {
+ // not needed
+ }
+
+ public boolean isValidElement(Object element, Collection<Class<?>> types) {
+ return getOptions(element, types).contains(element);
+ }
+
+ public Object getMetaType() {
+ return Model.getMetaTypes().getElementResidence();
+ }
+
+ public Command getAddCommand(Object modelElement) {
+ return new AddCommand(modelElement);
+ }
+
+ public Command getRemoveCommand(Object modelElement, Object objectToRemove) {
+ return new RemoveCommand(modelElement, objectToRemove);
+ }
+
+ private class AddCommand extends AddModelElementCommand {
+
+ /**
+ * Constructor for ActionAddPackageImport.
+ */
+ public AddCommand(final Object target) {
+ super(target);
+ }
+
+
+ protected List getChoices() {
+ List list = new ArrayList();
+ /* TODO: correctly implement next function
+ * in the model subsystem for
+ * issue 1942: */
+ Object model =
+ ProjectManager.getManager().getCurrentProject().getModel();
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getUMLClass()));
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getInterface()));
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getDataType()));
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getDataValue()));
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getAssociation()));
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getDependency()));
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getConstraint()));
+ list.addAll(Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(model,
+ Model.getMetaTypes().getSignal()));
+ return list;
+ }
+
+
+ protected List getSelected() {
+ Iterator it = Model.getFacade().getResidentElements(getTarget()).iterator();
+ ArrayList list = new ArrayList();
+ while (it.hasNext()) {
+ list.add(Model.getFacade().getResident(it.next()));
+ }
+ return list;
+ }
+
+
+ protected String getDialogTitle() {
+ return Translator.localize("dialog.title.add-residentelements");
+ }
+
+
+ @Override
+ protected void doIt(Collection selected) {
+ ArrayList toRemove = new ArrayList();
+ Collection current = Model.getFacade().getResidentElements(getTarget());
+ for (Iterator it = current.iterator(); it.hasNext(); ) {
+ toRemove.add(Model.getFacade().getResident(it.next()));
+ }
+
+ toRemove.removeAll(selected);
+ selected.removeAll(current);
+
+ for (Iterator it = toRemove.iterator(); it.hasNext(); ) {
+ Model.getCoreHelper().removeElementResidence(getTarget(), it.next());
+ }
+ for (Iterator it = selected.iterator(); it.hasNext(); ) {
+ Model.getCoreFactory().buildElementResidence(
+ it.next(), getTarget());
+ }
+ }
+ }
+
+ private class RemoveCommand
+ extends NonUndoableCommand {
+
+ private final Object target;
+ private final Object objectToRemove;
+
+ /**
+ * Constructor for ActionRemovePackageImport.
+ */
+ public RemoveCommand(final Object target, final Object objectToRemove) {
+ this.target = target;
+ this.objectToRemove = objectToRemove;
+ }
+
+ /*
+ * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+ */
+ public Object execute() {
+ Model.getCoreHelper()
+ .removeElementResidence(target, objectToRemove);
+ return null;
+ }
+ }
+ }
+
private abstract class AddModelElementCommand extends NonUndoableCommand {
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/metamodel.xml
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/metamodel.xml?view=diff&pathrev=18717&r1=18716&r2=18717
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/metamodel.xml (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/metamodel.xml 2010-08-31 14:49:15-0700
@@ -5,11 +5,22 @@
name
-->
<classes>
+ <class name="Abstraction">org.omg.uml.foundation.core.Abstraction</class>
+ <class name="ActionSequence">org.omg.uml.behavioralelements.commonbehavior.ActionSequence</class>
+ <class name="ActionState">org.omg.uml.behavioralelements.activitygraphs.ActionState</class>
+ <class name="Actor">org.omg.uml.behavioralelements.usecases.Actor</class>
+ <class name="ArgListsExpression">org.omg.uml.foundation.datatypes.ArgListsExpression</class>
+ <class name="Argument">org.omg.uml.behavioralelements.commonbehavior.Argument</class>
+ <class name="Artifact">org.omg.uml.foundation.core.Artifact</class>
+ <class name="AssociationEnd">org.omg.uml.foundation.core.AssociationEnd</class>
+ <class name="AssociationEndRole">org.omg.uml.behavioralelements.collaborations.AssociationEndRole</class>
+ <class name="AssociationRole">org.omg.uml.behavioralelements.collaborations.AssociationRole</class>
+ <class name="AttributeLink">org.omg.uml.behavioralelements.commonbehavior.AttributeLink</class>
+ <class name="Expression">org.omg.uml.foundation.datatypes.Expression</class>
+ <class name="BooleanExpression">org.omg.uml.foundation.datatypes.BooleanExpression</class>
<class name="String">java.lang.String</class>
<class name="Multiplicity">org.omg.uml.foundation.datatypes.Multiplicity</class>
<class name="MultiplicityRange">org.omg.uml.foundation.datatypes.MultiplicityRange</class>
- <class name="Expression">org.omg.uml.foundation.datatypes.Expression</class>
- <class name="BooleanExpression">org.omg.uml.foundation.datatypes.BooleanExpression</class>
<class name="TypeExpression">org.omg.uml.foundation.datatypes.TypeExpression</class>
<class name="MappingExpression">org.omg.uml.foundation.datatypes.MappingExpression</class>
<class name="ProcedureExpression">org.omg.uml.foundation.datatypes.ProcedureExpression</class>
@@ -17,7 +28,6 @@
<class name="ActionExpression">org.omg.uml.foundation.datatypes.ActionExpression</class>
<class name="IterationExpression">org.omg.uml.foundation.datatypes.IterationExpression</class>
<class name="TimeExpression">org.omg.uml.foundation.datatypes.TimeExpression</class>
- <class name="ArgListsExpression">org.omg.uml.foundation.datatypes.ArgListsExpression</class>
<class name="Element">org.omg.uml.foundation.core.Element</class>
<class name="ModelElement">org.omg.uml.foundation.core.ModelElement</class>
<class name="GeneralizableElement">org.omg.uml.foundation.core.GeneralizableElement</class>
@@ -27,7 +37,6 @@
<class name="DataType">org.omg.uml.foundation.core.DataType</class>
<class name="Feature">org.omg.uml.foundation.core.Feature</class>
<class name="StructuralFeature">org.omg.uml.foundation.core.StructuralFeature</class>
- <class name="AssociationEnd">org.omg.uml.foundation.core.AssociationEnd</class>
<class name="Interface">org.omg.uml.foundation.core.Interface</class>
<class name="Constraint">org.omg.uml.foundation.core.Constraint</class>
<class name="Relationship">org.omg.uml.foundation.core.Relationship</class>
@@ -40,7 +49,6 @@
<class name="Generalization">org.omg.uml.foundation.core.Generalization</class>
<class name="AssociationClass">org.omg.uml.foundation.core.AssociationClass</class>
<class name="Dependency">org.omg.uml.foundation.core.Dependency</class>
- <class name="Abstraction">org.omg.uml.foundation.core.Abstraction</class>
<class name="PresentationElement">org.omg.uml.foundation.core.PresentationElement</class>
<class name="Usage">org.omg.uml.foundation.core.Usage</class>
<class name="Binding">org.omg.uml.foundation.core.Binding</class>
@@ -56,7 +64,6 @@
<class name="TagDefinition">org.omg.uml.foundation.core.TagDefinition</class>
<class name="TaggedValue">org.omg.uml.foundation.core.TaggedValue</class>
<class name="ProgrammingLanguageDataType">org.omg.uml.foundation.core.ProgrammingLanguageDataType</class>
- <class name="Artifact">org.omg.uml.foundation.core.Artifact</class>
<class name="TemplateArgument">org.omg.uml.foundation.core.TemplateArgument</class>
<class name="Instance">org.omg.uml.behavioralelements.commonbehavior.Instance</class>
<class name="Signal">org.omg.uml.behavioralelements.commonbehavior.Signal</class>
@@ -64,15 +71,12 @@
<class name="CreateAction">org.omg.uml.behavioralelements.commonbehavior.CreateAction</class>
<class name="DestroyAction">org.omg.uml.behavioralelements.commonbehavior.DestroyAction</class>
<class name="UninterpretedAction">org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction</class>
- <class name="AttributeLink">org.omg.uml.behavioralelements.commonbehavior.AttributeLink</class>
<class name="Object">org.omg.uml.behavioralelements.commonbehavior.Object</class>
<class name="Link">org.omg.uml.behavioralelements.commonbehavior.Link</class>
<class name="LinkObject">org.omg.uml.behavioralelements.commonbehavior.LinkObject</class>
<class name="DataValue">org.omg.uml.behavioralelements.commonbehavior.DataValue</class>
<class name="CallAction">org.omg.uml.behavioralelements.commonbehavior.CallAction</class>
<class name="SendAction">org.omg.uml.behavioralelements.commonbehavior.SendAction</class>
- <class name="ActionSequence">org.omg.uml.behavioralelements.commonbehavior.ActionSequence</class>
- <class name="Argument">org.omg.uml.behavioralelements.commonbehavior.Argument</class>
<class name="Reception">org.omg.uml.behavioralelements.commonbehavior.Reception</class>
<class name="LinkEnd">org.omg.uml.behavioralelements.commonbehavior.LinkEnd</class>
<class name="ReturnAction">org.omg.uml.behavioralelements.commonbehavior.ReturnAction</class>
@@ -83,7 +87,6 @@
<class name="NodeInstance">org.omg.uml.behavioralelements.commonbehavior.NodeInstance</class>
<class name="SubsystemInstance">org.omg.uml.behavioralelements.commonbehavior.SubsystemInstance</class>
<class name="UseCase">org.omg.uml.behavioralelements.usecases.UseCase</class>
- <class name="Actor">org.omg.uml.behavioralelements.usecases.Actor</class>
<class name="UseCaseInstance">org.omg.uml.behavioralelements.usecases.UseCaseInstance</class>
<class name="Extend">org.omg.uml.behavioralelements.usecases.Extend</class>
<class name="Include">org.omg.uml.behavioralelements.usecases.Include</class>
@@ -107,8 +110,6 @@
<class name="FinalState">org.omg.uml.behavioralelements.statemachines.FinalState</class>
<class name="Collaboration">org.omg.uml.behavioralelements.collaborations.Collaboration</class>
<class name="ClassifierRole">org.omg.uml.behavioralelements.collaborations.ClassifierRole</class>
- <class name="AssociationRole">org.omg.uml.behavioralelements.collaborations.AssociationRole</class>
- <class name="AssociationEndRole">org.omg.uml.behavioralelements.collaborations.AssociationEndRole</class>
<class name="Message">org.omg.uml.behavioralelements.collaborations.Message</class>
<class name="Interaction">org.omg.uml.behavioralelements.collaborations.Interaction</class>
<class name="InteractionInstanceSet">org.omg.uml.behavioralelements.collaborations.InteractionInstanceSet</class>
@@ -116,7 +117,6 @@
<class name="ActivityGraph">org.omg.uml.behavioralelements.activitygraphs.ActivityGraph</class>
<class name="Partition">org.omg.uml.behavioralelements.activitygraphs.Partition</class>
<class name="SubactivityState">org.omg.uml.behavioralelements.activitygraphs.SubactivityState</class>
- <class name="ActionState">org.omg.uml.behavioralelements.activitygraphs.ActionState</class>
<class name="CallState">org.omg.uml.behavioralelements.activitygraphs.CallState</class>
<class name="ObjectFlowState">org.omg.uml.behavioralelements.activitygraphs.ObjectFlowState</class>
<class name="ClassifierInState">org.omg.uml.behavioralelements.activitygraphs.ClassifierInState</class>
@@ -1102,7 +1102,7 @@
<list name="supplierDependency" type="ModelElement" label="label.supplier-dependencies" />
<separator />
<list name="feature" type="Operation,Reception" new="true" label="label.operations" />
- <list name="residentElement" type="ElementResidence" label="label.residents" />
+ <list name="residentElement" type="Class,Interface,DataType,Association,Dependency,Constraint,Signal,DataValue,Object" new="true" label="label.residents" />
<debug />
<attribute name="visibility" type="VisibilityKind" />
<attribute name="targetFlow" type="Flow" />
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java?view=diff&pathrev=18717&r1=18716&r2=18717
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java 2010-08-31 14:49:15-0700
@@ -113,8 +113,6 @@
model = new UMLMessagePredecessorListModel(modelElement);
} else if ("resident".equals(propName)) {
model = new UMLContainerResidentListModel(modelElement);
- } else if ("residentElement".equals(propName)) {
- model = new UMLComponentResidentListModel(modelElement);
} else if ("specialization".equals(propName)) {
model = new UMLGeneralizableElementSpecializationListModel(modelElement);
} else if ("specification".equals(propName)) {
Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComponentResidentListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComponentResidentListModel.java?view=markup&pathrev=18716
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2653814
To unsubscribe from this discussion, e-mail: [[email protected] ].