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]
