svn commit: r18717 - trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels: model ui

[email protected]
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]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.