svn commit: r19265 - trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2011-04-20 14:14:14-0700
New Revision: 19265

Modified:
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/BaseDisplayState.java
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/DiagramElement.java
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigNotation.java
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/RRectDisplayState.java

Log:
When resizing node keep the name in the middle

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/BaseDisplayState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/BaseDisplayState.java?view=diff&pathrev=19265&r1=19264&r2=19265
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/BaseDisplayState.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/BaseDisplayState.java	2011-04-20 14:14:14-0700
@@ -14,14 +14,18 @@
 package org.argouml.activity2.diagram;
 
 import java.awt.Color;
+import java.awt.Dimension;
 import java.awt.Rectangle;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 
 import org.argouml.notation2.NotationType;
 import org.argouml.uml.diagram.DiagramSettings;
 import org.tigris.gef.presentation.Fig;
 import org.tigris.gef.presentation.FigGroup;
 
-abstract class BaseDisplayState extends FigGroup implements StereotypeDisplayer, NameDisplayer {
+abstract class BaseDisplayState extends FigGroup
+        implements StereotypeDisplayer, NameDisplayer, PropertyChangeListener {
 
     private final DiagramElement bigPort;
     private final DiagramElement nameDisplay;
@@ -40,6 +44,7 @@
         bigPort = createBigPort(rect, lineColor, fillColor);
         addFig((Fig) bigPort);
         addFig((Fig) getNameDisplay());
+        ((Fig) nameDisplay).addPropertyChangeListener(this);
     }
     
     public DiagramElement getStereotypeDisplay() {
@@ -58,4 +63,40 @@
     DiagramElement getPort() {
         return bigPort;
     }
+    
+    /**
+     * Default implementation makes sure the model element name is
+     * displayed in the centre of the node.
+     * TODO: We need stereotypes displayed above this.
+     */
+    @Override
+    protected void setBoundsImpl(
+            final int x,
+            final int y,
+            final int w,
+            final int h) {
+
+        final Rectangle oldBounds = getBounds();
+        
+        getPort().setBounds(new Rectangle(x, y, w, h));
+        
+        final Dimension nameDim = getNameDisplay().getMinimumSize();
+        final int nameWidth = nameDim.width;
+        final int nameHeight = nameDim.height;
+        
+        final int nx = x + (w - nameWidth) /2;
+        final int ny = y + (h - nameHeight) /2;
+        getNameDisplay().setLocation(nx, ny);
+        calcBounds();
+        firePropChange("bounds", oldBounds, getBounds());
+    }
+
+    public void propertyChange(PropertyChangeEvent pce) {
+        if (pce.getSource() == getNameDisplay() && pce.getPropertyName().equals("bounds")) {
+            calcBounds();
+        }
+        super.propertyChange(pce);
+    }
+    
+    
 }

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/DiagramElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/DiagramElement.java?view=diff&pathrev=19265&r1=19264&r2=19265
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/DiagramElement.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/DiagramElement.java	2011-04-20 14:14:14-0700
@@ -1,8 +1,12 @@
 package org.argouml.activity2.diagram;
 
 import java.awt.Dimension;
+import java.awt.Rectangle;
 
 interface DiagramElement extends org.argouml.uml.diagram.DiagramElement {
 
     Dimension getMinimumSize();
+    Rectangle getBounds();
+    void setBounds(Rectangle rect);
+    void setLocation(int x, int y);
 }

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigNotation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigNotation.java?view=diff&pathrev=19265&r1=19264&r2=19265
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigNotation.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/FigNotation.java	2011-04-20 14:14:14-0700
@@ -70,8 +70,9 @@
         
 //        int w = getFontMetrics().stringWidth(getText());
 //        int h = getFontMetrics().getHeight();
-        int w = 0;
-        int h = getFont().getSize();
+        
+        int w = getFontMetrics().stringWidth(getText());
+        int h = getFontMetrics().getHeight();
         
         final int minWidth = 
             w
@@ -103,6 +104,9 @@
         this.setUnderline(event.isUnderlined());
         this.setBold(event.isBold());
         this.setItalic(event.isItalic());
+        if (getMinimumSize().width > getWidth()) {
+            setWidth(getMinimumSize().width);
+        }
         this.damage();
     }
 }

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/RRectDisplayState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/RRectDisplayState.java?view=diff&pathrev=19265&r1=19264&r2=19265
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/RRectDisplayState.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/RRectDisplayState.java	2011-04-20 14:14:14-0700
@@ -17,6 +17,7 @@
 import java.awt.Dimension;
 import java.awt.Rectangle;
 
+import org.argouml.uml.diagram.DiagramAppearance;
 import org.argouml.uml.diagram.DiagramSettings;
 import org.tigris.gef.presentation.FigRRect;
 
@@ -28,6 +29,7 @@
             implements StereotypeDisplayer, NameDisplayer {
 
     private static final int PADDING = 8;
+    private static int RADIUS = 16;
     
     public RRectDisplayState(
             final Rectangle rect,
@@ -44,14 +46,14 @@
         
         final Dimension nameDim = getNameDisplay().getMinimumSize();
         int width = nameDim.width;
-        int height = nameDim.width;
+        int height = nameDim.height;
         if (getStereotypeDisplay() != null) {
             final Dimension stereoDim = getStereotypeDisplay().getMinimumSize();
             width += Math.max(stereoDim.width, nameDim.width);
             height += (stereoDim.height - 2);
         }
         
-        int w = width + PADDING * 2;
+        int w = width + RADIUS * 2;
         /* The stereoDim has height=2, even if it is empty, 
          * hence the -2 below: */
         final int h = height + PADDING;
@@ -73,6 +75,7 @@
                 final Color lineColor, 
                 final Color fillColor) {
             super(x, y, w, h, lineColor, fillColor);
+            this.setCornerRadius(RADIUS);
         }
     }    
 }

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

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.