Author: bobtarling
Date: 2011-05-11 09:52:37-0700
New Revision: 19406

Modified:
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/StateMachinesHelperEUMLImpl.java

Log:
Make sure that changing namespace or region does not fire a delete event

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java?view=diff&pathrev=19406&r1=19405&r2=19406
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
        (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
        2011-05-11 09:52:37-0700
@@ -406,7 +406,13 @@
         }
         if (!(me instanceof Element)) {
             throw new IllegalArgumentException(
-                    "'me' must be instance of Element, we got a " + me); 
//$NON-NLS-1$
+                    "'me' must be instance of Element, we got a "//$NON-NLS-1$
+                     + me);
+        }
+        Element element = (Element) me;
+        if (element.getOwner() != null) {
+            ModelEventPumpEUMLImpl pump = (ModelEventPumpEUMLImpl) 
Model.getPump();
+            pump.addElementForDeleteEventIgnore(element);
         }
         editingDomain.getCommandStack().execute(
                 new ChangeCommand(modelImpl, getRunnableClassForAddCommand(

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java?view=diff&pathrev=19406&r1=19405&r2=19406
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java
    (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/ModelEventPumpEUMLImpl.java
    2011-05-11 09:52:37-0700
@@ -42,6 +42,7 @@
 import org.eclipse.emf.ecore.ENamedElement;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EReference;
+import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Property;
 
 /**
@@ -54,8 +55,8 @@
      * events. See issue 
 
      */
-    final private List<Property> deleteEventIgnoreList =
-        new ArrayList<Property>();
+    final private List<Element> deleteEventIgnoreList =
+        new ArrayList<Element>();
     
     /**
      * A listener attached to a UML element
@@ -493,12 +494,10 @@
      */
     private boolean isDeleteEventRequired(
             final Object element) {
-        if (element instanceof Property) {
-            synchronized (deleteEventIgnoreList) {
-                if (deleteEventIgnoreList.contains(element)) {
-                    deleteEventIgnoreList.remove(element);
-                    return false;
-                }
+        synchronized (deleteEventIgnoreList) {
+            if (deleteEventIgnoreList.contains(element)) {
+                deleteEventIgnoreList.remove(element);
+                return false;
             }
         }
         return true;
@@ -510,9 +509,9 @@
      * 
      * @param property
      */
-    void addElementForDeleteEventIgnore(Property property) {
+    void addElementForDeleteEventIgnore(Element element) {
         synchronized (deleteEventIgnoreList) {
-            deleteEventIgnoreList.add(property);
+            deleteEventIgnoreList.add(element);
         }
     }
 

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/StateMachinesHelperEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/StateMachinesHelperEUMLImpl.java?view=diff&pathrev=19406&r1=19405&r2=19406
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/StateMachinesHelperEUMLImpl.java
       (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/StateMachinesHelperEUMLImpl.java
       2011-05-11 09:52:37-0700
@@ -216,6 +216,9 @@
         }
                         
         if (region == null || region instanceof Region) {
+            ModelEventPumpEUMLImpl pump =
+                (ModelEventPumpEUMLImpl) Model.getPump();
+            pump.addElementForDeleteEventIgnore((Vertex) handle);
             ((Vertex) handle).setContainer((Region) region);
             return;
         }

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

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

Reply via email to