edu.neu.ccs
Class XOval

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

public class XOval
extends Ellipse2D.Double
implements Serializable, Stringable, JPTConstants

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

Since:
2.4.0
Version:
2.4.0
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class java.awt.geom.Ellipse2D
Ellipse2D.Double, Ellipse2D.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.Ellipse2D.Double
height, width, x, y
 
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
XOval()
          Constructs a new XOval initialized to location (0, 0) and size (0, 0).
XOval(double r, double s)
          Constructs a new XOval initialized to center (0, 0) and with the given radii: r = half-width and s = half-height.
XOval(double x, double y, double w, double h)
          Constructs and initializes an XOval from the specified double coordinates.
XOval(Ellipse2D oval)
          Constructs and initializes a XOval from the specified Ellipse2D object.
XOval(Rectangle2D rect)
          Constructs and initializes an XOval 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.
 void fromStringData(String data)
          Defines the data state for this XOval object from a String representation of the data state.
 void move(double dx, double dy)
          Moves the oval by a translation using the data in the point specified by coordinates.
 void move(Point2D p)
          Moves the oval 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 setOval(Ellipse2D oval)
          Sets the data of this oval from the given oval.
 void setX1Y1X2Y2(double x1, double y1, double x2, double y2)
          Sets the parameters of the XOval with error checking using the coordinates of any pair of opposite corners of the frame.
 void setXYRS(double x, double y, double r, double s)
          Sets the parameters of the XOval 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 XOval with error checking.
 String toString()
          Returns a human readable String representing the data state of this XOval as an annotated string.
 String toStringAsX1Y1X2Y2()
          Returns a human readable String representing the data state of this XOval as an annotated string.
 String toStringAsXYRS()
          Returns a human readable String representing the data state of this XOval as an annotated string.
 String toStringData()
          Returns a human readable String representing the data state of this XOval as a simple string.
 
Methods inherited from class java.awt.geom.Ellipse2D.Double
getBounds2D, getHeight, getWidth, getX, getY, isEmpty
 
Methods inherited from class java.awt.geom.Ellipse2D
contains, contains, getPathIterator, intersects
 
Methods inherited from class java.awt.geom.RectangularShape
clone, contains, contains, getBounds, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, getPathIterator, intersects, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, 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

XOval

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


XOval

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

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

XOval

public XOval(double r,
             double s)

Constructs a new XOval 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

XOval

public XOval(Rectangle2D rect)

Constructs and initializes an XOval 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 use for the frame

XOval

public XOval(Ellipse2D oval)

Constructs and initializes a XOval from the specified Ellipse2D object. Calls setXYWH.

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

Parameters:
oval - the Ellipse2D object to copy
Method Detail

toString

public String toString()

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

XOval[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 XOval as an annotated string.

XOval[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 XOval as an annotated string.

XOval[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 XOval 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 XOval 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 XOval 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 of the frame
y - the proposed top-left y-coordinate of the frame
w - the proposed width of the frame
h - the proposed height of the frame

setXYRS

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

Sets the parameters of the XOval 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 XOval with error checking using the coordinates of any pair of opposite corners of the frame.

Fires property change VALUE.

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

setOval

public void setOval(Ellipse2D oval)

Sets the data of this oval from the given oval.

Does nothing if the given oval is null.

Fires property change VALUE.

Parameters:
oval - the Ellipse2D object to copy

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

move

public void move(double dx,
                 double dy)

Moves the oval 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 oval by a translation using the data in the point.

Parameters:
p - the translation vector

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