Author: bobtarling
Date: 2008-05-14 15:53:47-0700
New Revision: 14741

Modified:
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java

Log:
Reject events we don't want as early as possible

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java?view=diff&rev=14741&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java&r1=14740&r2=14741
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
 (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
 2008-05-14 15:53:47-0700
@@ -28,6 +28,7 @@
 import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.awt.event.MouseEvent;
+import java.beans.PropertyChangeEvent;
 import java.util.Iterator;
 import java.util.Vector;
 
@@ -35,6 +36,7 @@
 
 import org.argouml.model.AddAssociationEvent;
 import org.argouml.model.AssociationChangeEvent;
+import org.argouml.model.DeleteInstanceEvent;
 import org.argouml.model.Model;
 import org.argouml.model.RemoveAssociationEvent;
 import org.argouml.model.UmlChangeEvent;
@@ -43,7 +45,6 @@
 import org.argouml.uml.diagram.ui.ActionAddNote;
 import org.argouml.uml.diagram.ui.ActionCompartmentDisplay;
 import org.argouml.uml.diagram.ui.ActionEdgesDisplay;
-import org.argouml.uml.diagram.ui.CompartmentFigText;
 import org.argouml.uml.diagram.ui.FigCompartmentBox;
 import org.argouml.uml.diagram.ui.FigEmptyRect;
 import org.argouml.uml.diagram.ui.FigOperationsCompartment;
@@ -147,6 +148,35 @@
         updateOperations();
         super.renderingChanged();
     }
+    
+    /**
+     * We are getting events we don't want. Filter them out.
+     * TODO: Can we instruct the model event pump not to send these in the
+     * first place? See defect 5095.
+     * @param event the event
+     */
+    public void propertyChange(PropertyChangeEvent event) {
+        if (event instanceof DeleteInstanceEvent
+                || event.getSource() != getOwner()) {
+            super.propertyChange(event);
+        }
+        
+        if (event.getPropertyName().equals("generalization")
+                && Model.getFacade().isAGeneralization(event.getOldValue())) {
+            return;
+        } else if (event.getPropertyName().equals("association")
+                && Model.getFacade().isAAssociationEnd(event.getOldValue())) {
+            return;
+        } else if (event.getPropertyName().equals("supplierDependency")
+                && Model.getFacade().isAUsage(event.getOldValue())) {
+            return;
+        } else if (event.getPropertyName().equals("clientDependency")
+                && Model.getFacade().isAAbstraction(event.getOldValue())) {
+            return;
+        }
+        
+        super.propertyChange(event);
+    }
 
     protected void updateLayout(UmlChangeEvent event) {
         super.updateLayout(event);

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java?view=diff&rev=14741&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java&r1=14740&r2=14741
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java   
    (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java   
    2008-05-14 15:53:47-0700
@@ -935,6 +935,15 @@
             removeFromDiagram();
             return;
         }
+        
+        // We are getting events we don't want. Filter them out.
+        if (pve.getPropertyName().equals("supplierDependency")
+                && Model.getFacade().isADependency(pve.getOldValue())) {
+            // TODO: Can we instruct the model event pump not to send these in
+            // the first place? See defect 5095.
+            return;
+        }
+        
         // We handle and consume editing events
         if (pName.equals("editing")
                 && Boolean.FALSE.equals(pve.getNewValue())) {
@@ -975,7 +984,14 @@
             try {
                 modelChanged(event);
             } catch (InvalidElementException e) {
-                LOG.debug("modelChanged method accessed deleted element ", e);
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("event = " + event.getClass().getName());
+                    LOG.debug("source = " + event.getSource());
+                    LOG.debug("old = " + event.getOldValue());
+                    LOG.debug("name = " + event.getPropertyName());
+                    LOG.debug("modelChanged method accessed deleted element ",
+                            e);
+                }
             }
             
             if (event.getSource() == owner 
@@ -987,8 +1003,11 @@
                 public void run() {
                     try {
                         updateLayout(event);
-                    }
-                    catch (InvalidElementException e) {
+                    } catch (InvalidElementException e) {
+                        LOG.debug("event = " + event.getClass().getName());
+                        LOG.debug("source = " + event.getSource());
+                        LOG.debug("old = " + event.getOldValue());
+                        LOG.debug("name = " + event.getPropertyName());
                         LOG.debug(
                                 "updateLayout method accessed deleted element 
",
                                 e);
@@ -2072,7 +2091,7 @@
     /**
      * Determine if this Fig is the sole selected target in
      * the TargetManager
-     * @return true if this si the sole target.
+     * @return true if this is the sole target.
      */
     protected boolean isSingleTarget() {
        return TargetManager.getInstance().getSingleModelTarget()
@@ -2095,7 +2114,8 @@
      * 
      * @return current practical stereotype view
      */
-    private int getPracticalView() {               
+    private int getPracticalView() {
+        // TODO assert modelElement != null???
        int practicalView = getStereotypeView();
         Object modelElement = getOwner();
 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to