Author: bobtarling
Date: 2009-12-23 09:16:07-0800
New Revision: 17707

Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java

Log:
Handle addition of a model element to the list by listening to the model

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=17707&r1=17706&r2=17707
==============================================================================
--- 
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
        2009-12-23 09:16:07-0800
@@ -16,14 +16,18 @@
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.Collection;
+import java.util.List;
+
 import javax.swing.DefaultListModel;
 import javax.swing.SwingUtilities;
 
 import org.apache.log4j.Logger;
 import org.argouml.core.propertypanels.model.GetterSetterManager;
+import org.argouml.model.AddAssociationEvent;
 import org.argouml.model.InvalidElementException;
 import org.argouml.model.Model;
 import org.argouml.model.RemoveAssociationEvent;
+import org.argouml.util.CollectionUtil;
 
 /**
  * The simplest model for a list of UML elements
@@ -82,6 +86,21 @@
                     if (e instanceof RemoveAssociationEvent) {
                         removeElement(
                                 ((RemoveAssociationEvent) 
e).getChangedValue());
+                    } else if (e instanceof AddAssociationEvent) {
+                        Object newElement = ((AddAssociationEvent) 
e).getChangedValue();
+                        
+                        if (Model.getUmlHelper().isMovable(getMetaType())) {
+                            final Collection c =
+                                (Collection) getterSetterManager.getOptions( 
+                                    umlElement, 
+                                    propertyName, 
+                                    type);
+                            final int index =
+                                CollectionUtil.indexOf(c, newElement);
+                            add(index, newElement);
+                        } else {
+                            addElement(newElement);
+                        }
                     }
                 } catch (InvalidElementException e) {
                     LOG.debug("propertyChange accessed a deleted element ", e);

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

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

Reply via email to