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() {
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.