svn commit: r15932 - trunk/src/argouml-app/src/org/argouml/uml/diagram: activity/ui deployment/ui sequence/ui static_structure/ui ui use_case/ui

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: tfmorris
Date: 2008-10-16 12:54:47-0700
New Revision: 15932

Modified:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigSubactivityState.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/AbstractFigNode.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/sequence/ui/FigClassifierRole.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationEnd.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java

Log:
Issue 5438: Last batch of changes for minimal listener updates

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java?view=diff&rev=15932&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java&r1=15931&r2=15932
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java	2008-10-16 12:54:47-0700
@@ -31,7 +31,9 @@
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyVetoException;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.application.events.ArgoEvent;
 import org.argouml.application.events.ArgoEventPump;
@@ -164,31 +166,31 @@
      */
     @Override
     protected void updateListeners(Object oldOwner, Object newOwner) {
-        if (oldOwner != null) {
-            removeAllElementListeners();
-        }
+        Set<Object[]> l = new HashSet<Object[]>();
+
         if (newOwner != null) {
-            /* Let's NOT do this: addElementListener(newOwner);
+            /* Don't listen to all property names
              * We only need to listen to its "type", and "remove". */
-            addElementListener(newOwner, new String[] {"type", "remove"});
+            l.add(new Object[] {newOwner, new String[] {"type", "remove"}});
             // register for events from the type
             Object type = Model.getFacade().getType(newOwner);
             if (Model.getFacade().isAClassifier(type)) {
                 if (Model.getFacade().isAClassifierInState(type)) {
                     Object classifier = Model.getFacade().getType(type);
-                    addElementListener(classifier, "name");
-                    addElementListener(type, "inState");
+                    l.add(new Object[] {classifier, "name"});
+                    l.add(new Object[] {type, "inState"});
                     Collection states = Model.getFacade().getInStates(type);
                     Iterator i = states.iterator();
                     while (i.hasNext()) {
-                        addElementListener(i.next(),
-                                "name");
+                        l.add(new Object[] {i.next(), "name"});
                     }
                 } else {
-                    addElementListener(type, "name");
+                    l.add(new Object[] {type, "name"});
                 }
             }
         }
+
+        updateElementListeners(l);
     }
 
 

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigSubactivityState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigSubactivityState.java?view=diff&rev=15932&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigSubactivityState.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigSubactivityState.java&r1=15931&r2=15932
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigSubactivityState.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigSubactivityState.java	2008-10-16 12:54:47-0700
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
 // Rights Reserved. Permission to use, copy, modify, and distribute this
 // software and its documentation without fee, and without a written
 // agreement is hereby granted, provided that the above copyright notice
@@ -28,7 +28,9 @@
 import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.beans.PropertyChangeEvent;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.model.AssociationChangeEvent;
 import org.argouml.model.AttributeChangeEvent;
@@ -261,18 +263,17 @@
      */
     @Override
     protected void updateListeners(Object oldOwner, Object newOwner) {
-        if (oldOwner != null) {
-            removeAllElementListeners();
-        }
+        Set<Object[]> l = new HashSet<Object[]>();
         if (newOwner != null) {
             // add the listeners to the newOwner
-            addElementListener(newOwner);
+            l.add(new Object[] {newOwner, null});
             // and listen to name changes of the submachine
             Object machine = Model.getFacade().getSubmachine(newOwner);
             if (machine != null) {
-                addElementListener(machine);
+                l.add(new Object[] {machine, null});
             }
         }
+        updateElementListeners(l);
     }
 
     /*

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/AbstractFigNode.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/AbstractFigNode.java?view=diff&rev=15932&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/AbstractFigNode.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/AbstractFigNode.java&r1=15931&r2=15932
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/AbstractFigNode.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/AbstractFigNode.java	2008-10-16 12:54:47-0700
@@ -32,7 +32,9 @@
 import java.beans.PropertyChangeEvent;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.model.AssociationChangeEvent;
 import org.argouml.model.AttributeChangeEvent;
@@ -248,19 +250,19 @@
 
     @Override
     protected void updateListeners(Object oldOwner, Object newOwner) {
-        if (oldOwner != null) {
-            removeAllElementListeners();
-        }
+        Set<Object[]> l = new HashSet<Object[]>();
         if (newOwner != null) {
             // add the listeners to the newOwner
-            addElementListener(newOwner);
+            l.add(new Object[] {newOwner, null});
+            
             Collection c = Model.getFacade().getStereotypes(newOwner);
             Iterator i = c.iterator();
             while (i.hasNext()) {
                 Object st = i.next();
-                addElementListener(st, "name");
+                l.add(new Object[] {st, "name"});
             }
         }
+        updateElementListeners(l);
     }
 
     @Override

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/sequence/ui/FigClassifierRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/sequence/ui/FigClassifierRole.java?view=diff&rev=15932&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/sequence/ui/FigClassifierRole.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/sequence/ui/FigClassifierRole.java&r1=15931&r2=15932
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/sequence/ui/FigClassifierRole.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/sequence/ui/FigClassifierRole.java	2008-10-16 12:54:47-0700
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 1996-2006 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
 // Rights Reserved. Permission to use, copy, modify, and distribute this
 // software and its documentation without fee, and without a written
 // agreement is hereby granted, provided that the above copyright notice
@@ -30,8 +30,10 @@
 import java.awt.event.MouseListener;
 import java.beans.PropertyChangeEvent;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import java.util.StringTokenizer;
 
 import org.apache.log4j.Logger;
@@ -804,21 +806,27 @@
      */
     @Override
     protected void updateListeners(Object oldOwner, Object newOwner) {
-        removeAllElementListeners();
-        super.updateListeners(oldOwner, newOwner);
+        Set<Object[]> l = new HashSet<Object[]>();
         if (newOwner != null) {
-            addElementListener(newOwner);
+            l.add(new Object[] {newOwner, null});
             Iterator it = Model.getFacade().getBases(newOwner).iterator();
             while (it.hasNext()) {
                 Object base = it.next();
-                addElementListener(base, "name");
+                l.add(new Object[] {base, "name"});
             }
             it = Model.getFacade().getStereotypes(newOwner).iterator();
             while (it.hasNext()) {
                 Object stereo = it.next();
-                addElementListener(stereo, "name");
-            }
+                l.add(new Object[] {stereo, "name"});
+            }        
         }
+        
+        updateElementListeners(l);
+        
+        // TODO: The old implementation called the superclasses method.
+        // Do we really want to do that?
+//        super.updateListeners(oldOwner, newOwner);
+
     }
 
     void growToSize(int nodeCount) {

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java?view=diff&rev=15932&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java&r1=15931&r2=15932
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java	2008-10-16 12:54:47-0700
@@ -27,10 +27,9 @@
 import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.beans.PropertyChangeEvent;
-import java.beans.PropertyVetoException;
-import java.util.ArrayList;
-import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.swing.Action;
 
@@ -38,7 +37,6 @@
 import org.argouml.model.AttributeChangeEvent;
 import org.argouml.model.Model;
 import org.argouml.ui.ArgoJMenu;
-import org.argouml.uml.diagram.ui.CompartmentFigText;
 import org.argouml.uml.diagram.ui.EnumLiteralsCompartmentContainer;
 import org.argouml.uml.diagram.ui.FigEnumLiteralsCompartment;
 import org.argouml.uml.diagram.ui.FigStereotypesCompartment;
@@ -46,7 +44,6 @@
 import org.tigris.gef.base.Selection;
 import org.tigris.gef.graph.GraphModel;
 import org.tigris.gef.presentation.Fig;
-import org.tigris.gef.presentation.FigText;
 
 /**
  * Class to display graphics for a UML Enumeration in a diagram.
@@ -131,6 +128,7 @@
     /*
      * @see org.argouml.uml.diagram.ui.FigNodeModelElement#modelChanged(java.beans.PropertyChangeEvent)
      */
+    @Override
     protected void modelChanged(PropertyChangeEvent mee) {
         super.modelChanged(mee);
         if (mee instanceof AssociationChangeEvent 
@@ -156,28 +154,31 @@
      */
     @Override
     protected void updateListeners(Object oldOwner, Object newOwner) {
-        if (oldOwner != null) {
-            removeAllElementListeners();
-        }
+        Set<Object[]> l = new HashSet<Object[]>();
         if (newOwner != null) {
             // add the listeners to the newOwner
-            addElementListener(newOwner);
+            l.add(new Object[] {newOwner, null});
             // and its stereotypes
-            Collection c = new ArrayList(
-                    Model.getFacade().getStereotypes(newOwner));
+            for (Object stereo : Model.getFacade().getStereotypes(newOwner)) {
+                l.add(new Object[] {stereo, null});                
+            }
             // and its features
             for (Object feat : Model.getFacade().getFeatures(newOwner)) {
-                c.add(feat);
+                l.add(new Object[] {feat, null});
                 // and the stereotypes of its features
-                c.addAll(new ArrayList(Model.getFacade().getStereotypes(feat)));
+                for (Object stereo : Model.getFacade().getStereotypes(feat)) {
+                    l.add(new Object[] {stereo, null});
+                }
             }
             // and its enumerationLiterals
-            c.addAll(Model.getFacade().getEnumerationLiterals(newOwner));
-            // And now add listeners to them all:
-            for (Object obj : c) {
-                addElementListener(obj);
+            for (Object literal : Model.getFacade().getEnumerationLiterals(
+                    newOwner)) {
+                l.add(new Object[] {literal, null});
             }
         }
+        // And now add listeners to them all:
+        updateElementListeners(l);
+
     }
 
     /**

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationEnd.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationEnd.java?view=diff&rev=15932&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationEnd.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationEnd.java&r1=15931&r2=15932
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationEnd.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationEnd.java	2008-10-16 12:54:47-0700
@@ -30,7 +30,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.log4j.Logger;
 import org.argouml.kernel.Project;
 import org.argouml.kernel.ProjectManager;
 import org.argouml.model.AssociationChangeEvent;
@@ -66,9 +65,7 @@
     private FigTextGroup srcGroup = new FigTextGroup();
     private FigText srcMult; 
     private FigText srcOrdering;
-    
-    private Logger LOG = Logger.getLogger(FigAssociationEnd.class);
-    
+
     /**
      * The notation provider for the multiplicity.
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java?view=diff&rev=15932&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java&r1=15931&r2=15932
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java	2008-10-16 12:54:47-0700
@@ -33,8 +33,10 @@
 import java.beans.PropertyChangeEvent;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import java.util.Vector;
 
 import javax.swing.Action;
@@ -1049,32 +1051,34 @@
      */
     @Override
     protected void updateListeners(Object oldOwner, Object newOwner) {
-        if (oldOwner != null) {
-            removeAllElementListeners();
-        }
-        /* Now, let's register for events from all modelelements
+        Set<Object[]> l = new HashSet<Object[]>();
+        /* Let's register for events from all modelelements
          * that change the name or body text: 
          */
         if (newOwner != null) {
             /* Register for name changes, added extensionpoints
              * and abstract makes the text italic.
              * All Figs need to listen to "remove", too: */
-            addElementListener(newOwner, 
+            l.add(new Object[] {newOwner, 
                     new String[] {"remove", "name", "isAbstract", 
-                        "extensionPoint", "stereotype"});
+                        "extensionPoint", "stereotype"}});
+            
             // register for extension points:
             Iterator it =
                 Model.getFacade().getExtensionPoints(newOwner).iterator();
             while (it.hasNext()) {
-                addElementListener(it.next(),
-                        new String[] {"location", "name"});
+                l.add(new Object[] {it.next(),
+                        new String[] {"location", "name"}});
             }
-            it = Model.getFacade().getStereotypes(newOwner).iterator();
+            
+            Collection c = Model.getFacade().getStereotypes(newOwner);
+            it = c.iterator();
             while (it.hasNext()) {
-                addElementListener(it.next(),
-                        new String[] {"name"});
+                Object st = it.next();
+                l.add(new Object[] {st, "name"});
             }
         }
+        updateElementListeners(l);
     }
 
     /*
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.