svn commit: r19481 - trunk/src/argouml-core-diagrams-state2/src/org/argouml/state2/diagram

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
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.