edu.neu.ccs
Class XRect

java.lang.Object
  extended byjava.awt.geom.RectangularShape
      extended byjava.awt.geom.Rectangle2D
          extended byjava.awt.geom.Rectangle2D.Double
              extended byedu.neu.ccs.XRect
All Implemented Interfaces:
Cloneable, JPTConstants, Serializable, Shape, Stringable, SwingConstants
Direct Known Subclasses:
XSquare

public class XRect
extends Rectangle2D.Double
implements Serializable, Stringable, JPTConstants

Class XRect extends Rectangle2D.Double in order to provide a much shorter name that does not explicitly refer to an inner class, to add error checking that prevents the width and height from being set to negative values, and to support Stringable.

Since:
2.4.0
Version:
2.4.0
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class java.awt.geom.Rectangle2D
Rectangle2D.Double, Rectangle2D.Float
 
Field Summary
private static String[] BLANK
          The data array with blank names "", "", "", "".
protected  SwingPropertyChangeSupport changeAdapter
          Helper object for property change API.
static String standardMessage
          The standard error message for fromStringData.
private static String[] X1Y1X2Y2
          The data array with names "x1", "y1", "x2", "y2".
private static String[] XYRS
          The data array with names "xc", "yc", "r", "s".
private static String[] XYWH
          The data array with names "x", "y", "w", "h".
 
Fields inherited from class java.awt.geom.Rectangle2D.Double
height, width, x, y
 
Fields inherited from class java.awt.geom.Rectangle2D
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP
 
Fields inherited from interface edu.neu.ccs.util.JPTConstants
ABOVE, ALIGNMENT, BELOW, BOTTOM_LEFT, BOTTOM_RIGHT, DEFAULT, FONT, INPUT_PROPERTIES, MANDATORY, OPTIONAL, ORIENTATION, TOP_LEFT, TOP_RIGHT, VALUE
 
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Constructor Summary
XRect()
          Constructs a new XRect initialized to location (0, 0) and size (0, 0).
XRect(double r, double s)
          Constructs a new XRect initialized to center (0, 0) and with the given radii: r = half-width and s = half-height.
XRect(double x, double y, double w, double h)
          Constructs and initializes a XRect from the specified double coordinates.
XRect(Rectangle2D rect)
          Constructs and initializes a XRect from the specified Rectangle2D object.
 
Method Summary
 void addPropertyChangeListener(PropertyChangeListener listener)
          Registers the given object to listen for property change events generated by this object.
 void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
          Registers the given object to listen for property change events generated by this object with the given property name.
 XRect createIntersectionRect(Rectangle2D rect)
          Mimics the inherited method createIntersection but makes the return type XRect.
 XRect createUnionRect(Rectangle2D rect)
          Mimics the inherited method createUnion but makes the return type XRect.
 void fromStringData(String data)
          Defines the data state for this XRect object from a String representation of the data state.
 void move(double dx, double dy)
          Moves the rectangle by a translation using the data in the point specified by coordinates.
 void move(Point2D p)
          Moves the rectangle by a translation using the data in the point.
 void removePropertyChangeListener(PropertyChangeListener listener)
          Deregisters the given object from listening for property change events generated by this object.
 void removePropertyChangeListener(String propertyName, PropertyChangeListener listener)
          Deregisters the given object from listening for property change events generated by this object with the given property name.
 void setFrame(double x, double y, double w, double h)
          Overrides the corresponding inherited method to use the method setXYWH.
 void setFrame(Point2D point, Dimension2D dimension)
          Overrides the corresponding inherited method to use the method setXYWH.
 void setFrame(Rectangle2D rect)
          Overrides the corresponding inherited method to use the method setXYWH.
 void setRect(double x, double y, double w, double h)
          Overrides the corresponding inherited method to use the method setXYWH.
 void setRect(Rectangle2D rect)
          Overrides the corresponding inherited method to use the method setXYWH.
 void setX1Y1X2Y2(double x1, double y1, double x2, double y2)
          Sets the parameters of the XRect with error checking using the coordinates of any pair of opposite corners.
 void setXYRS(double x, double y, double r, double s)
          Sets the parameters of the XRect with error checking using the center (x,y) and the inner radii: r = half-width and s = half-height.
 void setXYWH(double x, double y, double w, double h)
          Sets the parameters of the XRect with error checking.
 String toString()
          Returns a human readable String representing the data state of this XRect as an annotated string.
 String toStringAsX1Y1X2Y2()
          Returns a human readable String representing the data state of this XRect as an annotated string.
 String toStringAsXYRS()
          Returns a human readable String representing the data state of this XRect as an annotated string.
 String toStringData()
          Returns a human readable String representing the data state of this XRect as a simple string.
 
Methods inherited from class java.awt.geom.Rectangle2D.Double
createIntersection, createUnion, getBounds2D, getHeight, getWidth, getX, getY, isEmpty, outcode
 
Methods inherited from class java.awt.geom.Rectangle2D
add, add, add, contains, contains, equals, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, union
 
Methods inherited from class java.awt.geom.RectangularShape
clone, contains, contains, getBounds, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

BLANK

private static String[] BLANK
The data array with blank names "", "", "", "".


XYWH

private static String[] XYWH
The data array with names "x", "y", "w", "h".


XYRS

private static String[] XYRS
The data array with names "xc", "yc", "r", "s".


X1Y1X2Y2

private static String[] X1Y1X2Y2
The data array with names "x1", "y1", "x2", "y2".


standardMessage

public static final String standardMessage
The standard error message for fromStringData.

See Also:
Constant Field Values

changeAdapter

protected SwingPropertyChangeSupport changeAdapter
Helper object for property change API.

Constructor Detail

XRect

public XRect()
Constructs a new XRect initialized to location (0, 0) and size (0, 0).


XRect

public XRect(double x,
             double y,
             double w,
             double h)
Constructs and initializes a XRect from the specified double coordinates. Calls setXYWH.

Parameters:
x - the proposed top-left x-coordinate
y - the proposed top-left y-coordinate
w - the proposed width
h - the proposed height

XRect

public XRect(Rectangle2D rect)

Constructs and initializes a XRect from the specified Rectangle2D object. Calls setXYWH.

Initializes to location (0, 0) and size (0, 0) if the given rect is null.

Parameters:
rect - the Rectangle2D object to copy

XRect

public XRect(double r,
             double s)

Constructs a new XRect initialized to center (0, 0) and with the given radii: r = half-width and s = half-height. Calls setXYRS

Parameters:
r - the proposed x-radius or half-width
s - the proposed y-radius or half-height
Method Detail

toString

public String toString()

Returns a human readable String representing the data state of this XRect as an annotated string.

XRect[x=...;y=...;w=...;h=...]

where the dots stand for the x,y corner data and the w,h dimension data.


toStringAsXYRS

public String toStringAsXYRS()

Returns a human readable String representing the data state of this XRect as an annotated string.

XRect[xc=...;yc=...;r=...;s=...]

where the dots stand for the xc,yc center data and the r,s radius data.


toStringAsX1Y1X2Y2

public String toStringAsX1Y1X2Y2()

Returns a human readable String representing the data state of this XRect as an annotated string.

XRect[x1=...;y1=...;x2=...;y2=...]

where the dots stand for the x1,y1,x2,y2 corner data.


toStringData

public String toStringData()

Returns a human readable String representing the data state of this XRect as a simple string.

[...;...;...;...]

where the dots stand for the x,y corner data and the w,h dimension data.

Specified by:
toStringData in interface Stringable
See Also:
Stringable.fromStringData(String)

fromStringData

public void fromStringData(String data)
                    throws ParseException

Defines the data state for this XRect object from a String representation of the data state.

Fires property change VALUE.

Specified by:
fromStringData in interface Stringable
Parameters:
data - String representation of the data state
Throws:
ParseException - if the data is malformed
See Also:
Stringable.toStringData()

setXYWH

public void setXYWH(double x,
                    double y,
                    double w,
                    double h)

Sets the parameters of the XRect with error checking.

If the width w is negative, then w is replaced by its absolute value and then x is replaced by (x - w).

If the height h is negative, then h is replaced by its absolute value and then y is replaced by (y - h).

This method guarantees that the internal width and height are always greater than or equal to zero.

Fires property change VALUE.

Parameters:
x - the proposed top-left x-coordinate
y - the proposed top-left y-coordinate
w - the proposed width
h - the proposed height

setXYRS

public void setXYRS(double x,
                    double y,
                    double r,
                    double s)

Sets the parameters of the XRect with error checking using the center (x,y) and the inner radii: r = half-width and s = half-height.

If the radius r is negative, then r is replaced by its absolute value.

If the radius s is negative, then s is replaced by its absolute value.

This method guarantees that the internal width and height are always greater than or equal to zero.

Fires property change VALUE.

Parameters:
x - the proposed center x-coordinate
y - the proposed center y-coordinate
r - the proposed x-radius or half-width
s - the proposed y-radius or half-height

setX1Y1X2Y2

public void setX1Y1X2Y2(double x1,
                        double y1,
                        double x2,
                        double y2)

Sets the parameters of the XRect with error checking using the coordinates of any pair of opposite corners.

Fires property change VALUE.

Parameters:
x1 - the x-coordinate of one corner
y1 - the y-coordinate of one corner
x2 - the x-coordinate of the opposite corner
y2 - the y-coordinate of the opposite corner

setFrame

public void setFrame(double x,
                     double y,
                     double w,
                     double h)

Overrides the corresponding inherited method to use the method setXYWH.

Fires property change VALUE.

Parameters:
x - the proposed top-left x-coordinate
y - the proposed top-left y-coordinate
w - the proposed width
h - the proposed height

setFrame

public void setFrame(Rectangle2D rect)

Overrides the corresponding inherited method to use the method setXYWH.

Does nothing if the given rect is null.

Fires property change VALUE.

Parameters:
rect - the Rectangle2D object to copy

setFrame

public void setFrame(Point2D point,
                     Dimension2D dimension)

Overrides the corresponding inherited method to use the method setXYWH.

Does nothing if the given point or dimension is null.

Fires property change VALUE.

Parameters:
point - the top-left corner
dimension - the dimension with the width and height

setRect

public void setRect(double x,
                    double y,
                    double w,
                    double h)

Overrides the corresponding inherited method to use the method setXYWH.

Fires property change VALUE.

Parameters:
x - the proposed top-left x-coordinate
y - the proposed top-left y-coordinate
w - the proposed width
h - the proposed height

setRect

public void setRect(Rectangle2D rect)

Overrides the corresponding inherited method to use the method setXYWH.

Does nothing if the given rect is null.

Fires property change VALUE.

Parameters:
rect - the Rectangle2D object to copy

move

public void move(double dx,
                 double dy)

Moves the rectangle by a translation using the data in the point specified by coordinates.

Parameters:
dx - the x-coordinate of the translation
dy - the y-coordinate of the translation

move

public void move(Point2D p)

Moves the rectangle by a translation using the data in the point.

Parameters:
p - the translation vector

createIntersectionRect

public XRect createIntersectionRect(Rectangle2D rect)

Mimics the inherited method createIntersection but makes the return type XRect.

Parameters:
rect - the rectangle to intersect with this rectangle
Returns:
returns the largest rectangle contained within r and this rectangle

createUnionRect

public XRect createUnionRect(Rectangle2D rect)

Mimics the inherited method createUnion but makes the return type XRect.

Parameters:
rect - the rectangle to union with this rectangle
Returns:
returns the smallest rectangle that contains r and this rectangle

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
Registers the given object to listen for property change events generated by this object.

Parameters:
listener - the listener to be registered

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName,
                                      PropertyChangeListener listener)
Registers the given object to listen for property change events generated by this object with the given property name.

Parameters:
propertyName - the name of the desired property
listener - the listener to be registered

removePropertyChangeListener

public void removePropertyChangeListener(PropertyChangeListener listener)
Deregisters the given object from listening for property change events generated by this object.

Parameters:
listener - the listener to be deregistered

removePropertyChangeListener

public void removePropertyChangeListener(String propertyName,
                                         PropertyChangeListener listener)
Deregisters the given object from listening for property change events generated by this object with the given property name.

Parameters:
propertyName - the name of the desired property
listener - the listener to be deregistered