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.