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

Reply via email to