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

Reply via email to