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