Author: bobtarling
Date: 2008-05-09 17:26:57-0700
New Revision: 14685

Removed:
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionDeleteConcurrentRegion.java
Modified:
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigCompositeState.java
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigConcurrentRegion.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java
   
trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/state_machines/PropPanelCompositeState.java

Log:
Move deleting of cooncurrent regions to model implementation.

Fig reacts to events.

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigCompositeState.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigCompositeState.java?view=diff&rev=14685&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigCompositeState.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigCompositeState.java&r1=14684&r2=14685
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigCompositeState.java
   (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigCompositeState.java
   2008-05-09 17:26:57-0700
@@ -34,10 +34,12 @@
 import java.util.Vector;
 
 import org.argouml.model.Model;
+import org.argouml.model.RemoveAssociationEvent;
 import org.argouml.model.UmlChangeEvent;
 import org.argouml.ui.targetmanager.TargetManager;
 import org.argouml.uml.diagram.ui.ActionAddConcurrentRegion;
 import org.tigris.gef.graph.GraphModel;
+import org.tigris.gef.presentation.Fig;
 import org.tigris.gef.presentation.FigLine;
 import org.tigris.gef.presentation.FigRRect;
 import org.tigris.gef.presentation.FigRect;
@@ -222,6 +224,9 @@
     /**
      * To resize only when a new concurrent region is added,
      * changing the height.
+     * TODO: Badly named method, it actually sets height. Probably shouldn't
+     * exist as this class should be listening for added concurrent regions
+     * and call this internally itself.
      *
      * @param h the new height
      */
@@ -325,14 +330,43 @@
 
     @Override 
     protected void updateLayout(UmlChangeEvent event) {
-        if (event.getPropertyName().equals("isConcurrent")) {
-            // TODO: this should split the composite state into two
-            // regions. This must be implemented. 
-            // Bob says - But it appears to me that there is no way to change
-            // isConcurrent of an existing CompositeState so do we
-            // really need to do this and do we need to redraw everything?
-            renderingChanged();
+                
+        if (!(event instanceof RemoveAssociationEvent)) {
+            return;
         }
+        
+        final Object removedRegion = event.getOldValue();
+        
+        List<FigConcurrentRegion> regionFigs =
+            ((List<FigConcurrentRegion>) getEnclosedFigs().clone());
+
+        int totHeight = getInitialHeight();
+        if (!regionFigs.isEmpty()) {
+            Fig removedFig = null;
+            for (FigConcurrentRegion figRegion : regionFigs) {
+                if (figRegion.getOwner() == removedRegion) {
+                    removedFig = figRegion;
+                    removeEnclosedFig(figRegion);
+                    break;
+                }
+            }
+            if (removedFig != null) {
+                regionFigs.remove(removedFig);
+                if (!regionFigs.isEmpty()) {
+                    for (FigConcurrentRegion figRegion : regionFigs) {
+                        if (figRegion.getY() > removedFig.getY()) {
+                            figRegion.displace(0, -removedFig.getHeight());
+                        }
+                    }
+                    totHeight = getHeight() - removedFig.getHeight();
+                }
+            }
+        }
+        
+        setBounds(getX(), getY(), getWidth(), totHeight);
+
+        // do we need to 
+        renderingChanged();
     }
 
 

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigConcurrentRegion.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigConcurrentRegion.java?view=diff&rev=14685&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigConcurrentRegion.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigConcurrentRegion.java&r1=14684&r2=14685
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigConcurrentRegion.java
 (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigConcurrentRegion.java
 2008-05-09 17:26:57-0700
@@ -30,20 +30,17 @@
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
-import java.beans.PropertyChangeEvent;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Vector;
 
 import javax.swing.JSeparator;
-import javax.swing.SwingUtilities;
 
 import org.argouml.model.Model;
 import org.argouml.model.UmlChangeEvent;
 import org.argouml.ui.ProjectActions;
 import org.argouml.uml.diagram.ui.ActionAddConcurrentRegion;
-import org.argouml.uml.diagram.ui.ActionDeleteConcurrentRegion;
 import org.tigris.gef.base.Globals;
 import org.tigris.gef.base.Selection;
 import org.tigris.gef.graph.GraphModel;
@@ -150,11 +147,9 @@
                 ProjectActions.getInstance().getRemoveFromDiagramAction());
         popUpActions.add(new JSeparator());
         // TODO: There's a cyclic dependency between FigConcurrentRegion and
-        // the actions ActionAddConcurrentRegion and 
ActionDeleteConcurrentRegion
+        // the actions ActionAddConcurrentRegion
         popUpActions.addElement(
                 new ActionAddConcurrentRegion());
-        popUpActions.addElement(
-                new ActionDeleteConcurrentRegion());
         return popUpActions;
     }
 

Removed: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionDeleteConcurrentRegion.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionDeleteConcurrentRegion.java?view=auto&rev=14684

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java?view=diff&rev=14685&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java&r1=14684&r2=14685
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java 
(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java 
2008-05-09 17:26:57-0700
@@ -47,7 +47,6 @@
 import org.argouml.ui.targetmanager.TargetManager;
 import org.argouml.uml.CommentEdge;
 import org.argouml.uml.diagram.ArgoDiagram;
-import org.argouml.uml.diagram.ui.ActionDeleteConcurrentRegion;
 import org.argouml.util.ArgoFrame;
 import org.tigris.gef.base.Editor;
 import org.tigris.gef.base.Globals;
@@ -146,17 +145,7 @@
                             target = owner;
                         }
                     }
-                    // TODO: This introduces a dependency between the core
-                    // and a specific diagram subsystem which causes a cyclic
-                    // dependency - see issue 5051
-                    // and besides, this will fail if the concurrent region
-                    // is not the first target selected.
-                    if (Model.getFacade().isAConcurrentRegion(target)) {
-                        new ActionDeleteConcurrentRegion()
-                            .actionPerformed(ae);
-                    } else {
-                        p.moveToTrash(target);
-                    }
+                    p.moveToTrash(target);
                 }
             } catch (InvalidElementException e) {
                 LOG.debug("Model element deleted twice - ignoring 2nd delete");

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/state_machines/PropPanelCompositeState.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/state_machines/PropPanelCompositeState.java?view=diff&rev=14685&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/state_machines/PropPanelCompositeState.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/state_machines/PropPanelCompositeState.java&r1=14684&r2=14685
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/state_machines/PropPanelCompositeState.java
   (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/ui/behavior/state_machines/PropPanelCompositeState.java
   2008-05-09 17:26:57-0700
@@ -33,7 +33,6 @@
 import org.argouml.model.Model;
 import org.argouml.ui.targetmanager.TargetManager;
 import org.argouml.uml.diagram.ui.ActionAddConcurrentRegion;
-import org.argouml.uml.diagram.ui.ActionDeleteConcurrentRegion;
 import org.tigris.swidgets.Orientation;
 
 /**
@@ -118,8 +117,6 @@
         super.addExtraButtons();
         addConcurrentRegion = new ActionAddConcurrentRegion();
         addAction(addConcurrentRegion);
-        deleteConcurrentRegion = new ActionDeleteConcurrentRegion();
-        addAction(deleteConcurrentRegion);
     }
 
     protected void updateExtraButtons() {

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

Reply via email to