Author: bobtarling
Date: 2011-05-21 09:58:17-0700
New Revision: 19481
Added:
trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/NodeConnector.java
Modified:
trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigCircleState.java
trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigEntryPoint.java
trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigExitPoint.java
trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigVertex.java
Log:
Trap rectangles for a state differ depending on the item being dropped into the state
Modified: trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigCircleState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigCircleState.java?view=diff&pathrev=19481&r1=19480&r2=19481
==============================================================================
--- trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigCircleState.java (original)
+++ trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigCircleState.java 2011-05-21 09:58:17-0700
@@ -20,7 +20,11 @@
import org.tigris.gef.presentation.Fig;
import org.tigris.gef.presentation.FigCircle;
-public class FigCircleState extends FigNodeModelElement {
+/**
+ * Abstract class for any state class with a circular boundary.
+ * @author Bob Tarling
+ */
+abstract class FigCircleState extends FigNodeModelElement {
private static final int WIDTH = 16;
private static final int HEIGHT = 16;
Modified: trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigEntryPoint.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigEntryPoint.java?view=diff&pathrev=19481&r1=19480&r2=19481
==============================================================================
--- trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigEntryPoint.java (original)
+++ trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigEntryPoint.java 2011-05-21 09:58:17-0700
@@ -16,7 +16,7 @@
import java.awt.Rectangle;
import org.argouml.uml.diagram.DiagramSettings;
-public class FigEntryPoint extends FigCircleState {
+public class FigEntryPoint extends FigCircleState implements NodeConnector {
public FigEntryPoint(Object owner, Rectangle bounds,
DiagramSettings settings) {
Modified: trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigExitPoint.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigExitPoint.java?view=diff&pathrev=19481&r1=19480&r2=19481
==============================================================================
--- trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigExitPoint.java (original)
+++ trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigExitPoint.java 2011-05-21 09:58:17-0700
@@ -16,7 +16,7 @@
import java.awt.Rectangle;
import org.argouml.uml.diagram.DiagramSettings;
-public class FigExitPoint extends FigCircleState {
+public class FigExitPoint extends FigCircleState implements NodeConnector {
public FigExitPoint(Object owner, Rectangle bounds,
DiagramSettings settings) {
Modified: trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigVertex.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigVertex.java?view=diff&pathrev=19481&r1=19480&r2=19481
==============================================================================
--- trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigVertex.java (original)
+++ trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/FigVertex.java 2011-05-21 09:58:17-0700
@@ -40,7 +40,6 @@
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.tigris.gef.base.LayerPerspective;
-import org.tigris.gef.base.Selection;
import org.tigris.gef.di.DiagramElement;
import org.tigris.gef.presentation.Fig;
import org.tigris.gef.presentation.FigGroup;
@@ -106,7 +105,8 @@
List regions = Model.getStateMachinesHelper().getRegions(
encloser.getOwner());
if (regions.isEmpty()) {
- // There are no regions so create one and place the vertex there.
+ // There are no regions so create one and place the vertex
+ //there.
region = Model.getUmlFactory().buildNode(
Model.getMetaTypes().getRegion(), encloser.getOwner());
} else {
@@ -183,17 +183,11 @@
}
}
- // Temporary start
-// private static final Color[] COLOR_ARRAY = {
-// Color.RED, Color.BLUE, Color.CYAN, Color.YELLOW, Color.GREEN};
-// private int nextColor = 0;
- // Temporary end
-
@Override
protected void modelChanged(PropertyChangeEvent mee) {
super.modelChanged(mee);
- assert(mee.getPropertyName().equals("region"));
+ assert (mee.getPropertyName().equals("region"));
if (mee instanceof AddAssociationEvent) {
// TODO: Before adding a new region make the last region
@@ -206,15 +200,9 @@
regionCompartment.getX(), regionCompartment.getY(),
rg.getMinimumSize().width, rg.getMinimumSize().height);
- // Temporary start - colour the regions so that we can see them for now
-// rg.setFillColor(COLOR_ARRAY[nextColor++]);
-// if (nextColor >= COLOR_ARRAY.length) {
-// nextColor = 0;
-// }
- // Temporary end
-
regionCompartment.addFig(rg);
- setSize(getMinimumSize());
+ setSize(Math.max(getMinimumSize().width, getWidth()),
+ Math.max(getMinimumSize().height, getHeight()));
}
if (mee instanceof RemoveAssociationEvent) {
Object oldRegion = mee.getNewValue();
@@ -329,18 +317,24 @@
return true;
}
- public List<Rectangle> getTrapRects() {
- List regions = Model.getStateMachinesHelper().getRegions(getOwner());
-
- ArrayList<Rectangle> rects = new ArrayList<Rectangle>(regions.size());
- if (regions.isEmpty()) {
- rects.add(regionCompartment.getBounds());
+ public List<Rectangle> getTrapRects(Fig draggedFig) {
+ if (draggedFig instanceof NodeConnector) {
+ ArrayList<Rectangle> rects = new ArrayList<Rectangle>(1);
+ rects.add(getBounds());
+ return rects;
} else {
- for (DiagramElement f : regionCompartment.getDiagramElements()) {
- rects.add(((Fig) f).getBounds());
+ List regions = Model.getStateMachinesHelper().getRegions(getOwner());
+
+ ArrayList<Rectangle> rects = new ArrayList<Rectangle>(regions.size());
+ if (regions.isEmpty()) {
+ rects.add(regionCompartment.getBounds());
+ } else {
+ for (Fig f : regionCompartment.getFigs()) {
+ rects.add(f.getBounds());
+ }
}
+ return rects;
}
- return rects;
}
protected void setStandardBounds(int x, int y, int w, int h) {
Added: trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/NodeConnector.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/NodeConnector.java?view=markup&pathrev=19481
==============================================================================
--- (empty file)
+++ trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram/NodeConnector.java 2011-05-21 09:58:17-0700
@@ -0,0 +1,24 @@
+/* $Id: $
+ *****************************************************************************
+ * Copyright (c) 2011 Contributors - see below
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Bob Tarling
+ *****************************************************************************
+ */
+
+package org.argouml.state2.diagram;
+
+/**
+ * An interface that must be implemented by any node that acts as a connection
+ * point to another node. Such a node hugs the bounds of any other node it is
+ * connected to.
+ * @author Bob Tarling
+ */
+interface NodeConnector {
+
+}
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2743381
To unsubscribe from this discussion, e-mail: [[email protected]].
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.