org.jhotdraw.draw
Class RoundRectangleFigure

java.lang.Object
  extended by org.jhotdraw.beans.AbstractBean
      extended by org.jhotdraw.draw.AbstractFigure
          extended by org.jhotdraw.draw.AbstractAttributedFigure
              extended by org.jhotdraw.draw.RoundRectangleFigure
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Figure, DOMStorable

public class RoundRectangleFigure
extends AbstractAttributedFigure

A Figure with a rounded rectangular shape.

This figure has two JavaBeans properties arcWidth and arcHeight which specify the corner radius.

This figure creates a RoundRectangleRadiusHandle which allows to interactively change the corner radius.

Version:
$Id: RoundRectangleFigure.java 647 2010-01-24 22:52:59Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Field Summary
static java.lang.String ARC_HEIGHT_PROPERTY
          Identifies the arcHeight JavaBeans property.
static java.lang.String ARC_WIDTH_PROPERTY
          Identifies the arcWidth JavaBeans property.
protected static double DEFAULT_ARC
           
protected  java.awt.geom.RoundRectangle2D.Double roundrect
           
 
Fields inherited from class org.jhotdraw.draw.AbstractFigure
changingDepth, listenerList
 
Fields inherited from class org.jhotdraw.beans.AbstractBean
propertySupport
 
Fields inherited from interface org.jhotdraw.draw.Figure
CONNECTABLE_PROPERTY, REMOVABLE_PROPERTY, SELECTABLE_PROPERTY, TRANSFORMABLE_PROPERTY
 
Constructor Summary
RoundRectangleFigure()
          Creates a new instance.
RoundRectangleFigure(double x, double y, double width, double height)
           
 
Method Summary
 RoundRectangleFigure clone()
          Returns a clone of the figure, with clones of all aggregated figures, such as children and decorators.
 boolean contains(java.awt.geom.Point2D.Double p)
          Checks if a Point2D.Double is inside the figure.
 java.util.Collection<Handle> createHandles(int detailLevel)
          Creates handles used to manipulate the figure.
protected  void drawFill(java.awt.Graphics2D g)
          This method is called by method draw() to draw the fill area of the figure.
protected  void drawStroke(java.awt.Graphics2D g)
          This method is called by method draw() to draw the text of the figure .
 Connector findCompatibleConnector(Connector c, boolean isStartConnector)
          Gets a compatible connector.
 Connector findConnector(java.awt.geom.Point2D.Double p, ConnectionFigure prototype)
          Returns the Figures connector for the specified location.
 double getArcHeight()
          Gets the arc height.
 double getArcWidth()
          Gets the arc width.
 java.awt.geom.Rectangle2D.Double getBounds()
          Returns the untransformed logical bounds of the figure as a Rectangle.
 java.awt.geom.Rectangle2D.Double getDrawingArea()
          Returns the drawing area of the figure as a Rectangle.
 java.lang.Object getTransformRestoreData()
          Gets data which can be used to restore the transformation of the figure without loss of precision, after a transform has been applied to it.
 void read(DOMInput in)
           
 void restoreTransformTo(java.lang.Object geometry)
          Restores the transform of the figure to a previously stored state.
 void setArc(double width, double height)
          Convenience method for setting both the arc width and the arc height.
 void setArcHeight(double newValue)
          Sets the arc height.
 void setArcWidth(double newValue)
          Sets the arc width.
 void setBounds(java.awt.geom.Point2D.Double anchor, java.awt.geom.Point2D.Double lead)
          Sets the logical and untransformed bounds of the figure.
 void transform(java.awt.geom.AffineTransform tx)
          Transforms the figure.
 void write(DOMOutput out)
           
 
Methods inherited from class org.jhotdraw.draw.AbstractAttributedFigure
applyAttributesTo, draw, drawText, get, getAttributeKey, getAttributes, getAttributesRestoreData, getStroke, getStrokeMiterLimitFactor, hasAttribute, isAttributeEnabled, readAttributes, removeAttribute, restoreAttributesTo, set, setAttributeEnabled, setAttributes, writeAttributes
 
Methods inherited from class org.jhotdraw.draw.AbstractFigure
addFigureListener, addNotify, basicClone, changed, findFigureInside, fireAreaInvalidated, fireAreaInvalidated, fireAreaInvalidated, fireAttributeChanged, fireFigureAdded, fireFigureChanged, fireFigureChanged, fireFigureChanged, fireFigureHandlesChanged, fireFigureRemoved, fireFigureRequestRemove, fireUndoableEditHappened, getActions, getChangingDepth, getConnectors, getCursor, getDecomposition, getDrawing, getEndPoint, getFontRenderContext, getLayer, getLock, getPreferredSize, getStartPoint, getTool, getToolTipText, handleDrop, handleMouseClick, includes, invalidate, isChanging, isConnectable, isRemovable, isSelectable, isTransformable, isVisible, remap, removeFigureListener, removeNotify, requestRemove, setBounds, setConnectable, setRemovable, setSelectable, setTransformable, setVisible, toString, validate, willChange
 
Methods inherited from class org.jhotdraw.beans.AbstractBean
addPropertyChangeListener, addPropertyChangeListener, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jhotdraw.draw.Figure
addPropertyChangeListener, removePropertyChangeListener
 

Field Detail

ARC_WIDTH_PROPERTY

public static final java.lang.String ARC_WIDTH_PROPERTY
Identifies the arcWidth JavaBeans property.

See Also:
Constant Field Values

ARC_HEIGHT_PROPERTY

public static final java.lang.String ARC_HEIGHT_PROPERTY
Identifies the arcHeight JavaBeans property.

See Also:
Constant Field Values

roundrect

protected java.awt.geom.RoundRectangle2D.Double roundrect

DEFAULT_ARC

protected static final double DEFAULT_ARC
See Also:
Constant Field Values
Constructor Detail

RoundRectangleFigure

public RoundRectangleFigure()
Creates a new instance.


RoundRectangleFigure

public RoundRectangleFigure(double x,
                            double y,
                            double width,
                            double height)
Method Detail

drawFill

protected void drawFill(java.awt.Graphics2D g)
Description copied from class: AbstractAttributedFigure
This method is called by method draw() to draw the fill area of the figure. AbstractAttributedFigure configures the Graphics2D object with the FILL_COLOR attribute before calling this method. If the FILL_COLOR attribute is null, this method is not called.

Specified by:
drawFill in class AbstractAttributedFigure

drawStroke

protected void drawStroke(java.awt.Graphics2D g)
Description copied from class: AbstractAttributedFigure
This method is called by method draw() to draw the text of the figure . AbstractAttributedFigure configures the Graphics2D object with the TEXT_COLOR attribute before calling this method. If the TEXT_COLOR attribute is null, this method is not called.

Specified by:
drawStroke in class AbstractAttributedFigure

getBounds

public java.awt.geom.Rectangle2D.Double getBounds()
Description copied from interface: Figure
Returns the untransformed logical bounds of the figure as a Rectangle.

The bounds are used by Handle objects for adjusting the figure and for aligning the figure on a grid.


getDrawingArea

public java.awt.geom.Rectangle2D.Double getDrawingArea()
Description copied from interface: Figure
Returns the drawing area of the figure as a Rectangle.

The drawing area is used to inform DrawingView about the area that is needed to draw this figure.

The drawing area needs to be large enough, to take line width, line caps and other decorations into account that exceed the bounds of the Figure.

Specified by:
getDrawingArea in interface Figure
Overrides:
getDrawingArea in class AbstractAttributedFigure

getArcWidth

public double getArcWidth()
Gets the arc width.


getArcHeight

public double getArcHeight()
Gets the arc height.


setArcWidth

public void setArcWidth(double newValue)
Sets the arc width.


setArcHeight

public void setArcHeight(double newValue)
Sets the arc height.


setArc

public void setArc(double width,
                   double height)
Convenience method for setting both the arc width and the arc height.


contains

public boolean contains(java.awt.geom.Point2D.Double p)
Checks if a Point2D.Double is inside the figure.


setBounds

public void setBounds(java.awt.geom.Point2D.Double anchor,
                      java.awt.geom.Point2D.Double lead)
Description copied from interface: Figure
Sets the logical and untransformed bounds of the figure.

This is used by Tool's which create a new Figure and by Tool's which connect a Figure to another Figure.

This is a basic operation which does not fire events. Use the following code sequence, if you need event firing:

 figure.willChange();
 figure.setBounds(...);
 figure.changed();
 

Specified by:
setBounds in interface Figure
Overrides:
setBounds in class AbstractFigure
Parameters:
anchor - the start point of the bounds
lead - the end point of the bounds
See Also:
Figure.getBounds()

transform

public void transform(java.awt.geom.AffineTransform tx)
Transforms the figure.

Parameters:
tx - The transformation.
See Also:
Figure.getTransformRestoreData(), Figure.restoreTransformTo(java.lang.Object)

createHandles

public java.util.Collection<Handle> createHandles(int detailLevel)
Description copied from interface: Figure
Creates handles used to manipulate the figure.

Specified by:
createHandles in interface Figure
Overrides:
createHandles in class AbstractFigure
Parameters:
detailLevel - The detail level of the handles. Usually this is 0 for bounding box handles and 1 for point handles. The value -1 is used by the SelectAreaTracker and the HandleTracker to highlight figures, over which the mouse pointer is hovering.
Returns:
a Collection of handles
See Also:
Handle

restoreTransformTo

public void restoreTransformTo(java.lang.Object geometry)
Description copied from interface: Figure
Restores the transform of the figure to a previously stored state.


getTransformRestoreData

public java.lang.Object getTransformRestoreData()
Description copied from interface: Figure
Gets data which can be used to restore the transformation of the figure without loss of precision, after a transform has been applied to it.

See Also:
Figure.transform(AffineTransform)

findConnector

public Connector findConnector(java.awt.geom.Point2D.Double p,
                               ConnectionFigure prototype)
Description copied from class: AbstractFigure
Returns the Figures connector for the specified location. By default a ChopBoxConnector is returned.

Specified by:
findConnector in interface Figure
Overrides:
findConnector in class AbstractFigure
Parameters:
p - the location of the connector.
prototype - The prototype used to create a connection or null if unknown. This allows for specific connectors for different connection figures.
See Also:
ChopRectangleConnector

findCompatibleConnector

public Connector findCompatibleConnector(Connector c,
                                         boolean isStartConnector)
Description copied from interface: Figure
Gets a compatible connector. If the provided connector is part of this figure, return the connector. If the provided connector is part of another figure, return a connector with the same semantics for this figure. Returns null, if no compatible connector is available.

Specified by:
findCompatibleConnector in interface Figure
Overrides:
findCompatibleConnector in class AbstractFigure

clone

public RoundRectangleFigure clone()
Description copied from interface: Figure
Returns a clone of the figure, with clones of all aggregated figures, such as children and decorators. The cloned figure does not clone the list of FigureListeners from its original.

Specified by:
clone in interface Figure
Overrides:
clone in class AbstractAttributedFigure

read

public void read(DOMInput in)
          throws java.io.IOException
Specified by:
read in interface DOMStorable
Overrides:
read in class AbstractAttributedFigure
Throws:
java.io.IOException

write

public void write(DOMOutput out)
           throws java.io.IOException
Specified by:
write in interface DOMStorable
Overrides:
write in class AbstractAttributedFigure
Throws:
java.io.IOException