svn commit: r19401 - trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2011-05-11 07:56:06-0700
New Revision: 19401

Added:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/SelectionVertex.java
Modified:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigRegion.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigVertex.java

Log:
Display dashed lines between different regions in an orthogonal state

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigRegion.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigRegion.java?view=diff&pathrev=19401&r1=19400&r2=19401
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigRegion.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigRegion.java	2011-05-11 07:56:06-0700
@@ -13,9 +13,7 @@
 
 package org.argouml.uml.diagram.state.ui;
 
-import java.awt.Color;
 import java.awt.Dimension;
-import java.awt.Rectangle;
 import org.tigris.gef.presentation.FigRect;
 
 /**
@@ -32,8 +30,8 @@
     public FigRegion(
             final Object region) {
         super(0,0,0,0);
+        setLineWidth(0);
         setOwner(region);
-        setFillColor(Color.red);
     }
     
     /*

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigVertex.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigVertex.java?view=diff&pathrev=19401&r1=19400&r2=19401
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigVertex.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigVertex.java	2011-05-11 07:56:06-0700
@@ -16,6 +16,7 @@
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.Graphics;
 import java.awt.Rectangle;
 import java.awt.event.MouseEvent;
 import java.beans.PropertyChangeEvent;
@@ -45,7 +46,6 @@
 import org.tigris.gef.presentation.Fig;
 import org.tigris.gef.presentation.FigGroup;
 import org.tigris.gef.presentation.FigRRect;
-import org.tigris.gef.presentation.FigRect;
 import org.tigris.gef.presentation.FigText;
 
 /**
@@ -135,9 +135,9 @@
 
     @Override
     public Selection makeSelection() {
-        return new SelectionState(this);
+        return new SelectionVertex(this);
     }
-
+    
     @Override
     protected Fig createBigPortFig() {
         return new FigRRect(0, 0, 0, 0, LINE_COLOR, FILL_COLOR);
@@ -180,9 +180,9 @@
     }
 
     // Temporary start
-    private static final Color[] COLOR_ARRAY = {
-        Color.RED, Color.BLUE, Color.CYAN, Color.YELLOW, Color.GREEN}; 
-    private int nextColor = 0;
+//    private static final Color[] COLOR_ARRAY = {
+//        Color.RED, Color.BLUE, Color.CYAN, Color.YELLOW, Color.GREEN}; 
+//    private int nextColor = 0;
     // Temporary end
     
     @Override
@@ -202,24 +202,29 @@
                     regionCompartment.getX(), regionCompartment.getY(),
                     rg.getMinimumSize().width, rg.getMinimumSize().height);
             
-            // Temporary start
-            rg.setFillColor(COLOR_ARRAY[nextColor++]);
-            if (nextColor >= COLOR_ARRAY.length) {
-                nextColor = 0;
-            }
+            // 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);
-            
-            // TODO: After adding a new region resize the node to
-            // include it.
+            setSize(getMinimumSize());
         }
         if (mee instanceof RemoveAssociationEvent) {
             Object oldRegion = mee.getNewValue();
+            for (DiagramElement de : regionCompartment.getDiagramElements()) {
+                if (de.getOwner() == oldRegion) {
+                    regionCompartment.removeFig((Fig) de);
+                    // TODO: After removing a region reset the overall
+                    // size of the node.
+                    renderingChanged();
+                    damage();
+                }
+            }
             LOG.debug("Removing region " + oldRegion);
         }
-        renderingChanged();
-        damage();
     }
 
     /*
@@ -295,6 +300,8 @@
             + nameSize.height
             + getBottomMargin();
 
+        h += regionCompartment.getMinimumSize().height;
+        
         if (getBodyText().getText().length() > 0) {
             h += bodySize.height;
         }
@@ -431,7 +438,7 @@
                 final int x,
                 int y,
                 final int w,
-                final int h) {
+                int h) {
 
             _x = x;
             _y = y;
@@ -442,11 +449,50 @@
                 Fig fig = (Fig) it.next();
                 if (it.hasNext()) {
                     fig.setBounds(x, y, w, fig.getMinimumSize().height);
+                    h -= fig.getMinimumSize().height;
                 } else {
-                    fig.setBounds(x, y, w, h - y);
+                    fig.setBounds(x, y, w, h);
                 }
                 y += fig.getHeight();
             }
         }
+        
+        
+        @Override
+        public Dimension getMinimumSize() {
+            int minWidth = 0;
+            int minHeight = 0;
+            for (Iterator it = getFigs().iterator(); it.hasNext(); ) {
+                Fig fig = (Fig) it.next();
+                minWidth = Math.max(fig.getMinimumSize().width, minWidth);
+                if (it.hasNext()) {
+                    minHeight += fig.getHeight();
+                } else {
+                    minHeight += fig.getMinimumSize().height;
+                }
+            }
+
+            return new Dimension(minWidth, minHeight);
+        }
+        
+        public void paint(Graphics g) {
+            super.paint(g);
+            
+            for (Iterator it = getFigs().iterator(); it.hasNext(); ) {
+                Fig fig = (Fig) it.next();
+                if (it.hasNext()) {
+                    g.setColor(getLineColor());
+                    
+                    drawDashedLine(
+                            g, 1, 
+                            fig.getX(), 
+                            fig.getY() + fig.getHeight(),
+                            fig.getX() + fig.getWidth(),
+                            fig.getY() + fig.getHeight(),
+                            0, new float [] { 5.0f, 5.0f }, 10);            
+                }
+            }
+            
+        }
     }
 }

Added: trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/SelectionVertex.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/SelectionVertex.java?view=markup&pathrev=19401
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/SelectionVertex.java	2011-05-11 07:56:06-0700
@@ -0,0 +1,43 @@
+/* $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.uml.diagram.state.ui;
+
+import java.awt.Graphics;
+
+import org.tigris.gef.presentation.Fig;
+
+/**
+ * A selection for a vertex (which can be an orthogonal state).
+ * This acts the same as its superclass unless the vertex is in fact an
+ * orthogonal state in which case extra handles are painted for moving
+ * the region separators.
+ *
+ * @author Bob Tarling
+ */
+public class SelectionVertex extends SelectionState {
+
+    /**
+     * Construct a new SelectionState for the given Fig.
+     *
+     * @param f The given Fig.
+     */
+    public SelectionVertex(Fig f) {
+	super(f);
+    }
+
+    @Override
+    public void paint(Graphics g) {
+        super.paint(g);
+    }
+}

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2734412

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.