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

Bob Tarling <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2009-12-10 06:59:02-0800
New Revision: 17623

Modified:
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/Ordered.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionArgumentListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSequenceActionListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationConnectionListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndQualifiersListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassAttributeListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassOperationListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierFeatureListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierParameterListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableContentsListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableFeaturesListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEnumerationLiteralsListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEventParameterListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLExtendExtensionPointListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLLinkConnectionListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLUseCaseExtensionPointListModel.java
   trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XmlPropertyPanel.java

Log:
Provide a getModelElements method for ordered lists

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/Ordered.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/Ordered.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/Ordered.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/Ordered.java	2009-12-10 06:59:02-0800
@@ -24,9 +24,12 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
+
 /**
  * A marker interface to be implemented by ordered list models (ie can have
  * items reordered)
  */
 interface Ordered {
+    Collection getModelElements();
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java	2009-12-10 06:59:02-0800
@@ -160,7 +160,7 @@
      * By recording the model element being moved the add event can detected
      * when the element is added and mark it as selected.
      */
-    private Object movedModelElement;
+    private MovedModelElement movedModelElement = new MovedModelElement();
 
     /**
      * The label that contains the +/- symbol to indicate
@@ -401,14 +401,14 @@
     }
 
     public void componentAdded(ContainerEvent arg0) {
-        // TODO Auto-generated method stub
-
+        LOG.info("The RowSelector is being added to a panel");
     }
 
     /**
      * Remove all the listeners that were added in the constructor
      */
-     public void componentRemoved(ContainerEvent event) {
+    public void componentRemoved(ContainerEvent event) {
+        LOG.info("The RowSelector is being removed from a panel");
         getList().removeListSelectionListener(deleteAction);
         if (moveUpAction != null) {
             getList().removeListSelectionListener(moveUpAction);
@@ -419,6 +419,7 @@
         this.removeMouseListener(this);
         this.removeContainerListener(this);
         getModel().removeListDataListener(this);
+        ((UMLModelElementListModel) getModel()).removeModelEventListener();
     }
 
 
@@ -569,10 +570,11 @@
         @Override
         public void actionPerformed(ActionEvent e) {
             super.actionPerformed(e);
-            movedModelElement = getList().getSelectedValues()[0];
+            movedModelElement.setElement(getList().getSelectedValues()[0]);
+            assert (movedModelElement != null);
             Model.getUmlHelper().move(
                     target, 
-                    movedModelElement, 
+                    movedModelElement.getElement(), 
                     UmlHelper.Direction.UP);
         }
     }
@@ -613,10 +615,11 @@
         @Override
         public void actionPerformed(ActionEvent e) {
             super.actionPerformed(e);
-            movedModelElement = getList().getSelectedValues()[0];
+            movedModelElement.setElement(getList().getSelectedValues()[0]);
+            assert (movedModelElement != null);
             Model.getUmlHelper().move(
                     target, 
-                    movedModelElement, 
+                    movedModelElement.getElement(), 
                     UmlHelper.Direction.DOWN);
         }
     }
@@ -656,10 +659,11 @@
         @Override
         public void actionPerformed(ActionEvent e) {
             super.actionPerformed(e);
-            movedModelElement = getList().getSelectedValues()[0];
+            movedModelElement.setElement(getList().getSelectedValues()[0]);
+            assert (movedModelElement != null);
             Model.getUmlHelper().move(
                     target, 
-                    movedModelElement, 
+                    movedModelElement.getElement(), 
                     UmlHelper.Direction.TOP);
         }
     }
@@ -700,11 +704,25 @@
         @Override
         public void actionPerformed(ActionEvent e) {
             super.actionPerformed(e);
-            movedModelElement = getList().getSelectedValues()[0];
+            movedModelElement.setElement(getList().getSelectedValues()[0]);
+            assert (movedModelElement != null);
             Model.getUmlHelper().move(
                     target,
-                    movedModelElement,
+                    movedModelElement.getElement(),
                     UmlHelper.Direction.BOTTOM);
         }
     }
+    
+    private class MovedModelElement {
+        private Object element;
+
+        public Object getElement() {
+            return element;
+        }
+
+        public void setElement(Object element) {
+            LOG.info("Setting moved model element to " + element);
+            this.element = element;
+        }
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionArgumentListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionArgumentListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionArgumentListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionArgumentListModel.java	2009-12-10 06:59:02-0800
@@ -24,6 +24,7 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.argouml.model.Model;
@@ -37,6 +38,11 @@
         implements Ordered {
 
     /**
+     * The UID.
+     */
+    private static final long serialVersionUID = -3265997785192090331L;
+
+    /**
      * Constructor.
      */
     public UMLActionArgumentListModel(final Object modelElement) {
@@ -49,7 +55,7 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-            setAllElements(Model.getFacade().getActualArguments(getTarget()));
+            setAllElements(getModelElements());
         }
     }
 
@@ -60,8 +66,8 @@
         return Model.getFacade().isAArgument(element);
     }
 
-    /**
-     * The UID.
-     */
-    private static final long serialVersionUID = -3265997785192090331L;
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getActualArguments(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSequenceActionListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSequenceActionListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSequenceActionListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSequenceActionListModel.java	2009-12-10 06:59:02-0800
@@ -24,6 +24,7 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.argouml.model.Model;
@@ -49,7 +50,7 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-            setAllElements(Model.getFacade().getActions(getTarget()));
+            setAllElements(getModelElements());
         }
     }
 
@@ -59,4 +60,9 @@
     protected boolean isValidElement(Object element) {
         return Model.getFacade().isAAction(element);
     }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getActions(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationConnectionListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationConnectionListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationConnectionListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationConnectionListModel.java	2009-12-10 06:59:02-0800
@@ -105,4 +105,9 @@
         return Model.getFacade().isAAssociationEnd(o)
             && Model.getFacade().getConnections(getTarget()).contains(o);
     }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getConnections(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndQualifiersListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndQualifiersListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndQualifiersListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndQualifiersListModel.java	2009-12-10 06:59:02-0800
@@ -25,6 +25,7 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.argouml.model.Model;
@@ -50,7 +51,7 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-            setAllElements(Model.getFacade().getQualifiers(getTarget()));
+            setAllElements(getModelElements());
         }
     }
 
@@ -61,4 +62,10 @@
         return Model.getFacade().isAAttribute(o)
             && Model.getFacade().getQualifiers(getTarget()).contains(o);
     }
+
+    @Override
+    public Collection getModelElements() {
+        // TODO Auto-generated method stub
+        return Model.getFacade().getQualifiers(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassAttributeListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassAttributeListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassAttributeListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassAttributeListModel.java	2009-12-10 06:59:02-0800
@@ -24,10 +24,10 @@
 
 package org.argouml.core.propertypanels.ui;
 
-import java.util.List;
+import java.util.Collection;
 
+import org.apache.log4j.Logger;
 import org.argouml.model.Model;
-import org.argouml.uml.ui.UMLModelElementOrderedListModel2;
 
 /**
  *
@@ -38,12 +38,16 @@
         extends UMLModelElementListModel 
         implements Ordered {
 
+    private static final Logger LOG = 
+        Logger.getLogger(UMLClassAttributeListModel.class);
+    
     /**
      * Constructor for UMLClassifierStructuralFeatureListModel.
      */
     public UMLClassAttributeListModel(Object modelElement) {
         super("feature", true, false, Model.getMetaTypes().getAttribute());
         setTarget(modelElement);
+        LOG.info("Constructed UMLClassAttributeListModel");
     }
 
     /*
@@ -51,15 +55,19 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-
-            setAllElements(Model.getFacade().getAttributes(getTarget()));
+            setAllElements(getModelElements());
         }
     }
+    
+    public Collection getModelElements() {
+        return Model.getFacade().getAttributes(getTarget());
+    }
 
     /*
      * @see org.argouml.uml.ui.UMLModelElementListModel2#isValidElement(Object)
      */
     protected boolean isValidElement(Object element) {
-        return (Model.getFacade().getAttributes(getTarget()).contains(element));
+        return Model.getFacade().isAAttribute(element)
+            && (getModelElements().contains(element));
     }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassOperationListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassOperationListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassOperationListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassOperationListModel.java	2009-12-10 06:59:02-0800
@@ -24,6 +24,7 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.argouml.model.Model;
@@ -50,9 +51,7 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-            List opsAndReceps =
-                    Model.getFacade().getOperationsAndReceptions(getTarget());
-            setAllElements(opsAndReceps);
+            setAllElements(getModelElements());
         }
     }
 
@@ -64,4 +63,10 @@
         return (Model.getFacade().getOperationsAndReceptions(getTarget())
                 .contains(element));
     }
+
+    @Override
+    public Collection getModelElements() {
+        return
+            Model.getFacade().getOperationsAndReceptions(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierFeatureListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierFeatureListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierFeatureListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierFeatureListModel.java	2009-12-10 06:59:02-0800
@@ -24,6 +24,7 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.argouml.model.Model;
@@ -51,7 +52,7 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-            setAllElements(Model.getFacade().getFeatures(getTarget()));
+            setAllElements(getModelElements());
         }
     }
 
@@ -61,4 +62,9 @@
     protected boolean isValidElement(Object element) {
         return Model.getFacade().getFeatures(getTarget()).contains(element);
     }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getFeatures(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierParameterListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierParameterListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierParameterListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierParameterListModel.java	2009-12-10 06:59:02-0800
@@ -57,7 +57,7 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-            setAllElements(Model.getFacade().getParameters(getTarget()));
+            setAllElements(getModelElements());
         }
     }
 
@@ -67,4 +67,9 @@
     protected boolean isValidElement(Object element) {
         return Model.getFacade().getParameters(getTarget()).contains(element);
     }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getParameters(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableContentsListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableContentsListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableContentsListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableContentsListModel.java	2009-12-10 06:59:02-0800
@@ -131,6 +131,26 @@
             fireIntervalAdded(this, 0, getSize() - 1);
         }
     }
+    
+    public void removeModelEventListener() {
+        Collection bases = Model.getFacade().getBases(getTarget());
+        Iterator it = bases.iterator();
+        while (it.hasNext()) {
+            Object base =  it.next();
+            Model.getPump().removeModelEventListener(
+                this,
+                base,
+                "ownedElement");
+        }
+        
+        // make sure we know it when a classifier is added as a base
+        Model.getPump().removeModelEventListener(
+            this,
+            getTarget(),
+            "base");
+    }
+
+    
 
     /*
      * @see org.argouml.uml.ui.UMLModelElementListModel2#isValidElement(Object)

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableFeaturesListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableFeaturesListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableFeaturesListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassifierRoleAvailableFeaturesListModel.java	2009-12-10 06:59:02-0800
@@ -139,4 +139,23 @@
     protected boolean isValidElement(Object element) {
         return false;
     }
+    
+    
+    public void removeModelEventListener() {
+        Collection bases = Model.getFacade().getBases(getTarget());
+        Iterator it = bases.iterator();
+        while (it.hasNext()) {
+            Object base =  it.next();
+            Model.getPump().removeModelEventListener(
+                this,
+                base,
+                "feature");
+        }
+        
+        // make sure we know it when a classifier is added as a base
+        Model.getPump().removeModelEventListener(
+            this,
+            getTarget(),
+            "base");
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEnumerationLiteralsListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEnumerationLiteralsListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEnumerationLiteralsListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEnumerationLiteralsListModel.java	2009-12-10 06:59:02-0800
@@ -24,6 +24,7 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.argouml.model.Model;
@@ -56,8 +57,7 @@
      */
     protected void buildModelList() {
         if (Model.getFacade().isAEnumeration(getTarget())) {
-            setAllElements(
-                    Model.getFacade().getEnumerationLiterals(getTarget()));
+            setAllElements(getModelElements());
         }
     }
 
@@ -66,10 +66,13 @@
      */
     protected boolean isValidElement(Object element) {
         if (Model.getFacade().isAEnumeration(getTarget())) {
-            List literals =
-                Model.getFacade().getEnumerationLiterals(getTarget());
-            return literals.contains(element);
+            return getModelElements().contains(element);
         }
         return false;
     }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getEnumerationLiterals(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEventParameterListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEventParameterListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEventParameterListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLEventParameterListModel.java	2009-12-10 06:59:02-0800
@@ -24,6 +24,8 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
+
 import org.argouml.model.Model;
 
 /**
@@ -46,15 +48,18 @@
      * @see org.argouml.uml.ui.UMLModelElementListModel2#buildModelList()
      */
     protected void buildModelList() {
-        //setAllElements(((MEvent)getTarget()).getParameters());
-        setAllElements(Model.getFacade().getParameters(getTarget()));
+        setAllElements(getModelElements());
     }
 
     /*
      * @see org.argouml.uml.ui.UMLModelElementListModel2#isValidElement(Object)
      */
     protected boolean isValidElement(Object element) {
-        return Model.getFacade().getParameters(getTarget()).contains(element);
+        return getModelElements().contains(element);
     }
 
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getParameters(getTarget());
+    }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLExtendExtensionPointListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLExtendExtensionPointListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLExtendExtensionPointListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLExtendExtensionPointListModel.java	2009-12-10 06:59:02-0800
@@ -24,6 +24,7 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.Collection;
 import java.util.List;
 
 import org.argouml.model.Model;
@@ -52,7 +53,7 @@
      * @see org.argouml.uml.ui.UMLModelElementListModel2#buildModelList()
      */
     protected void buildModelList() {
-        setAllElements(Model.getFacade().getExtensionPoints(getTarget()));
+        setAllElements(getModelElements());
     }
 
     /*
@@ -60,6 +61,11 @@
      */
     protected boolean isValidElement(Object o) {
         return Model.getFacade().isAExtensionPoint(o)
-            && Model.getFacade().getExtensionPoints(getTarget()).contains(o);
+            && getModelElements().contains(o);
+    }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getExtensionPoints(getTarget());
     }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLLinkConnectionListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLLinkConnectionListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLLinkConnectionListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLLinkConnectionListModel.java	2009-12-10 06:59:02-0800
@@ -24,12 +24,9 @@
 
 package org.argouml.core.propertypanels.ui;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.Collection;
 
 import org.argouml.model.Model;
-import org.argouml.uml.ui.UMLModelElementOrderedListModel2;
 
 /**
  *
@@ -52,7 +49,7 @@
      */
     protected void buildModelList() {
         if (getTarget() != null) {
-            setAllElements(Model.getFacade().getConnections(getTarget()));
+            setAllElements(getModelElements());
         }
     }
 
@@ -60,6 +57,11 @@
      * @see org.argouml.uml.ui.UMLModelElementListModel2#isValidElement(Object)
      */
     protected boolean isValidElement(Object element) {
-        return Model.getFacade().getConnections(getTarget()).contains(element);
+        return getModelElements().contains(element);
+    }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getConnections(getTarget());
     }
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLModelElementListModel.java	2009-12-10 06:59:02-0800
@@ -75,6 +75,8 @@
     private AbstractActionNewModelElement newAction = null;
     private AbstractActionRemoveElement removeAction = null;
     
+    private static int count = 0;
+    private final int instance = count++;
     
     /**
      * Flag to indicate whether list events should be fired
@@ -304,21 +306,25 @@
      * differences between NSUML and MDR - tfm - 20060302
      */
     public void propertyChange(final PropertyChangeEvent e) {
+        final UMLModelElementListModel lm = this;
         Runnable doWorkRunnable = new Runnable() {
             public void run() {
                 try {
                     if (e instanceof AttributeChangeEvent) {
                         try {
                             if (isValidEvent(e)) {
+                                LOG.info("Rebuilding model");
                                 rebuildModelList();
                             }
                         } catch (InvalidElementException iee) {
                             return;
                         }
-                    } else if (e instanceof AddAssociationEvent) {
+                    } else
+                    if (e instanceof AddAssociationEvent) {
                         if (isValidEvent(e)) {
                             Object o = getChangedElement(e);
                             if (o instanceof Collection) {
+                                LOG.info("Elements added");
                                 ArrayList tempList = new ArrayList((Collection) o);
                                 Iterator it = tempList.iterator();
                                 while (it.hasNext()) {
@@ -328,7 +334,25 @@
                             } else {
                                 /* TODO: If this is an ordered list, then you have to 
                                     add in the right location! */
-                                addElement(o); 
+                                if (!lm.contains(o)) {
+                                    if (lm instanceof Ordered) {
+                                        Ordered ordered = (Ordered) lm;
+                                        Collection elements = ordered.getModelElements();
+                                        if (elements instanceof List) {
+                                            LOG.info("Element inserted " + instance + " " + o);
+                                            final int posn = ((List) elements).indexOf(o);
+                                            add(posn, o);
+                                        } else {
+                                            LOG.info("Element addedx" + instance);
+                                            addElement(o);
+                                        }
+                                        int posn = 1;
+                                        add(posn, o);
+                                    } else {
+                                        LOG.info("Element addedy " + o);
+                                        addElement(o);
+                                    }
+                                }
                             }
                         }
                     } else if (e instanceof RemoveAssociationEvent) {
@@ -348,6 +372,7 @@
                             }
                         }
                         if (valid) {
+                            LOG.info("Remove is valid" + instance);
                             Object o = getChangedElement(e);
                             if (o instanceof Collection) {
                                 Iterator it = ((Collection) o).iterator();
@@ -356,8 +381,11 @@
                                     removeElement(o3);
                                 }
                             } else {
+                                LOG.info("Removing" + instance + " " + o);
                                 removeElement(o);
                             }
+                        } else {
+                            LOG.info("Remove is not valid for " + instance + " " + getChangedElement(e));
                         }
                     }
                 } catch (InvalidElementException e) {
@@ -377,6 +405,7 @@
      * Delete and rebuild the model list from scratch.
      */
     private void rebuildModelList() {
+        LOG.info("Rebuilding");
         removeAllElements();
         buildingModel = true;
         try {
@@ -504,6 +533,10 @@
 
         rebuildModelList();
     }
+    
+    public void removeModelEventListener() {
+        Model.getPump().removeModelEventListener(this, listTarget, eventName);
+    }
 
     /**
      * This function allows subclasses to listen to more modelelements.

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLUseCaseExtensionPointListModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLUseCaseExtensionPointListModel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLUseCaseExtensionPointListModel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLUseCaseExtensionPointListModel.java	2009-12-10 06:59:02-0800
@@ -25,6 +25,7 @@
 package org.argouml.core.propertypanels.ui;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
@@ -60,13 +61,20 @@
      * @see org.argouml.uml.ui.UMLModelElementListModel2#buildModelList()
      */
     protected void buildModelList() {
-        setAllElements(Model.getFacade().getExtensionPoints(getTarget()));
+        setAllElements(getModelElements());
     }
 
     /*
      * @see org.argouml.uml.ui.UMLModelElementListModel2#isValidElement(Object)
      */
     protected boolean isValidElement(Object o) {
-        return Model.getFacade().getExtensionPoints(getTarget()).contains(o);
+        return getModelElements().contains(o);
     }
+
+    @Override
+    public Collection getModelElements() {
+        return Model.getFacade().getExtensionPoints(getTarget());
+    }
+    
+    
 }

Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XmlPropertyPanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XmlPropertyPanel.java?view=diff&pathrev=17623&r1=17622&r2=17623
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XmlPropertyPanel.java	(original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XmlPropertyPanel.java	2009-12-10 06:59:02-0800
@@ -75,6 +75,9 @@
         if (comp instanceof RowSelector) {
             RowSelector rs = (RowSelector) comp;
             rs.removeListSelectionListener(this);
+            // TODO: Why do we have to call this manually
+            // when the component is listening for its own removal?
+            rs.componentRemoved(null);
         }
     }

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

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.