Author: bobtarling
Date: 2010-03-14 09:27:15-0800
New Revision: 18094

Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.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-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=18094&r1=18093&r2=18094
==============================================================================
--- 
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-03-14 09:27:15-0800
@@ -17,6 +17,7 @@
 import java.util.Collection;
 import java.util.Collections;
 
+import org.apache.log4j.Logger;
 import org.argouml.model.Model;
 
 /**
@@ -25,6 +26,9 @@
  */
 class GetterSetterManagerImpl extends GetterSetterManager {
     
+    private static final Logger LOG =
+        Logger.getLogger(GetterSetterManagerImpl.class);
+    
     /**
      * The constructor
      */
@@ -55,6 +59,7 @@
         addGetterSetter("changeability", new ChangeabilityGetterSetter());
         addGetterSetter("concurrency", new ConcurrencyGetterSetter());
         addGetterSetter("feature", new FeatureGetterSetter(type));
+        addGetterSetter("parameter", new ParameterGetterSetter());
         addGetterSetter("receiver", new ReceiverGetterSetter());
         addGetterSetter("sender", new SenderGetterSetter());
         addGetterSetter("body", new MethodExpressionGetterSetter());
@@ -131,7 +136,7 @@
             return ((ListGetterSetter) bgs).getMetaType();
         }
         
-        return false;
+        return null;
     }
     
     /**
@@ -595,6 +600,31 @@
     }
     
     
+    private class ParameterGetterSetter extends ListGetterSetter {
+        
+        public Collection getOptions(Object modelElement, String type) {
+            return Model.getFacade().getParameters(modelElement);
+        }
+      
+        public Object get(Object modelElement, String type) {
+            // not needed
+            return null;
+        }
+      
+        public void set(Object element, Object x) {
+            // not needed
+        }
+
+        protected boolean isValidElement(Object element, String type) {
+            return getOptions(element, type).contains(element);
+        }
+        
+        public Object getMetaType() {
+            return Model.getMetaTypes().getParameter();
+        }
+    }
+    
+    
     private class MethodExpressionGetterSetter extends ExpressionGetterSetter {
         
         @Override

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=18094&r1=18093&r2=18094
==============================================================================
--- 
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-03-14 09:27:15-0800
@@ -159,12 +159,12 @@
             model = new UMLNamespaceOwnedElementListModel(modelElement);
         } else if ("outgoing".equals(propName)) {
             model = new UMLStateVertexOutgoingListModel(modelElement);
-        } else if ("parameter".equals(propName)) {
-            if (Model.getFacade().isAObjectFlowState(modelElement)) {
-                model = new UMLObjectFlowStateParameterListModel(modelElement, 
propName);
-            } else {
-                model = new UMLClassifierParameterListModel(modelElement, 
propName);
-            }
+//        } else if ("parameter".equals(propName)) {
+//            if (Model.getFacade().isAObjectFlowState(modelElement)) {
+//                model = new 
UMLObjectFlowStateParameterListModel(modelElement, propName);
+//            } else {
+//                model = new UMLClassifierParameterListModel(modelElement, 
propName);
+//            }
         } else if ("partition".equals(propName)) {
             model = new UMLActivityGraphPartitionListModel(modelElement);
         } else if ("predecessor".equals(propName)) {

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java?view=diff&pathrev=18094&r1=18093&r2=18094
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
        (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
        2010-03-14 09:27:15-0800
@@ -97,7 +97,14 @@
                                     type);
                             final int index =
                                 CollectionUtil.indexOf(c, newElement);
-                            add(index, newElement);
+                            if (index < 0 || index > getSize() - 1) {
+                                LOG.warn(
+                                        "Unable to add element at correct 
position "
+                                        + index + " added to end instead");
+                                addElement(newElement);
+                            } else {
+                                add(index, newElement);
+                            }
                         } else {
                             addElement(newElement);
                         }

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2459550

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to