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]].
