JHotDraw 6.0b1

org.jhotdraw.framework
Interface Figure

All Superinterfaces:
java.lang.Cloneable, java.io.Serializable, Storable
All Known Subinterfaces:
ConnectionFigure, GeometricFigure, Layoutable
All Known Implementing Classes:
AbstractFigure, AnimationDecorator, AttributeFigure, BorderDecorator, BouncingDrawing, ComponentFigure, CompositeFigure, DecoratorFigure, DiamondFigure, DiamondFigureGeometricAdapter, ElbowConnection, EllipseFigure, EllipseFigureGeometricAdapter, GraphicalCompositeFigure, GroupFigure, HTMLTextAreaFigure, ImageFigure, LineConnection, LineFigure, MyEllipseFigure, MyFigure, NodeFigure, NodeFigure, NullFigure, NumberTextFigure, PertDependency, PertFigure, PolygonFigure, PolygonFigureGeometricAdapter, PolyLineFigure, RectangleFigure, RoundRectangleFigure, RoundRectangleGeometricAdapter, StandardDrawing, TextAreaFigure, TextFigure, TriangleFigure, TriangleFigureGeometricAdapter

public interface Figure
extends Storable, java.lang.Cloneable, java.io.Serializable

The interface of a graphical figure. A figure knows its display box and can draw itself. A figure can be composed of several figures. To interact and manipulate with a figure it can provide Handles and Connectors.

A figure has a set of handles to manipulate its shape or attributes. A figure has one or more connectors that define how to locate a connection point.

Figures can have an open ended set of attributes. An attribute is identified by a string.

Default implementations for the Figure interface are provided by AbstractFigure.

Figures can have dependent figures. The existence od dependent figures depend on another figure. This is the case for figures such as ConnectedTextFigures and LineDecoration. Thus, they are "externally" dependent on a figure in contrast to (internally) contained figures. This means, "normal" figures (figures that are not containers) can still have dependent figures. Dependent figures are especially important if the figure which the depend on is deleted because they should be removed as well (cascading delete).

See Also:
Handle, Connector, AbstractFigure

Method Summary
 void addDependendFigure(Figure newDependendFigure)
          Add a dependent figure.
 void addFigureChangeListener(FigureChangeListener l)
          Adds a listener for this figure.
 void addToContainer(FigureChangeListener c)
          Sets the Figure's container and registers the container as a figure change listener.
 void basicDisplayBox(java.awt.Point origin, java.awt.Point corner)
          Changes the display box of a figure.
 boolean canConnect()
          Checks if this figure can be connected
 java.awt.Point center()
          Gets the figure's center
 void changed()
          Informes that a figure has changed its display box.
 java.lang.Object clone()
          Returns a Clone of this figure
 Locator connectedTextLocator(Figure text)
          Returns the locator used to located connected text.
 java.awt.Insets connectionInsets()
          Returns the connection inset.
 Connector connectorAt(int x, int y)
          Gets a connector for this figure at the given location.
 void connectorVisibility(boolean isVisible, ConnectionFigure connection)
          Sets whether the connectors should be visible.
 boolean containsPoint(int x, int y)
          Checks if a point is inside the figure.
 FigureEnumeration decompose()
          Decomposes a figure into its parts.
 java.awt.Rectangle displayBox()
          Gets the display box of a figure
 void displayBox(java.awt.Point origin, java.awt.Point corner)
          Changes the display box of a figure.
 void displayBox(java.awt.Rectangle r)
          Changes the display box of a figure.
 void draw(java.awt.Graphics g)
          Draws the figure.
 FigureEnumeration figures()
          Returns an Enumeration of the figures contained in this figure
 Figure findFigureInside(int x, int y)
          Returns the figure that contains the given point.
 java.lang.Object getAttribute(FigureAttributeConstant attributeConstant)
          Returns the named attribute or null if a a figure doesn't have an attribute.
 java.lang.Object getAttribute(java.lang.String name)
          Deprecated. use getAttribute(FigureAttributeConstant) instead
 Figure getDecoratedFigure()
          Get the underlying figure in case the figure has been decorated.
 FigureEnumeration getDependendFigures()
          Get an enumeration of all dependent figures.
 TextHolder getTextHolder()
          Some figures have the ability to hold text.
 int getZValue()
          Gets the z value (back-to-front ordering) of this figure.
 HandleEnumeration handles()
          Returns the handles used to manipulate the figure.
 boolean includes(Figure figure)
          Checks whether the given figure is contained in this figure.
 void invalidate()
          Invalidates the figure.
 boolean isEmpty()
          Checks if the Figure should be considered as empty.
 FigureChangeListener listener()
          Gets the Figure's listeners.
 void moveBy(int dx, int dy)
          Moves the Figure to a new location.
 void release()
          Releases a figure's resources.
 void removeDependendFigure(Figure oldDependendFigure)
          Remove a dependent figure.
 void removeFigureChangeListener(FigureChangeListener l)
          Removes a listener for this figure.
 void removeFromContainer(FigureChangeListener c)
          Removes a figure from the given container and unregisters it as a change listener.
 void setAttribute(FigureAttributeConstant attributeConstant, java.lang.Object value)
          Sets the named attribute to the new value
 void setAttribute(java.lang.String name, java.lang.Object value)
          Deprecated. use setAttribute(FigureAttributeConstant, Object) instead
 void setZValue(int z)
          Sets the z value (back-to-front ordering) of this figure.
 java.awt.Dimension size()
          Gets the size of the figure
 void visit(FigureVisitor visitor)
           
 void willChange()
          Informes that a figure is about to change such that its display box is affected.
 
Methods inherited from interface org.jhotdraw.util.Storable
read, write
 

Method Detail

moveBy

void moveBy(int dx,
            int dy)
Moves the Figure to a new location.

Parameters:
dx - the x delta
dy - the y delta

basicDisplayBox

void basicDisplayBox(java.awt.Point origin,
                     java.awt.Point corner)
Changes the display box of a figure. This method is always implemented in figure subclasses. It only changes the displaybox and does not announce any changes. It is usually not called by the client. Clients typically call displayBox to change the display box.

Parameters:
origin - the new origin
corner - the new corner
See Also:
displayBox(java.awt.Point, java.awt.Point)

displayBox

void displayBox(java.awt.Point origin,
                java.awt.Point corner)
Changes the display box of a figure. Clients usually invoke this method. It changes the display box and announces the corresponding changes.

Parameters:
origin - the new origin
corner - the new corner
See Also:
displayBox(java.awt.Point, java.awt.Point)

displayBox

java.awt.Rectangle displayBox()
Gets the display box of a figure

See Also:
basicDisplayBox(java.awt.Point, java.awt.Point)

draw

void draw(java.awt.Graphics g)
Draws the figure.

Parameters:
g - the Graphics to draw into

handles

HandleEnumeration handles()
Returns the handles used to manipulate the figure. Handles is a Factory Method for creating handle objects.

Returns:
an type-safe iterator of handles
See Also:
Handle

size

java.awt.Dimension size()
Gets the size of the figure


center

java.awt.Point center()
Gets the figure's center


isEmpty

boolean isEmpty()
Checks if the Figure should be considered as empty.


figures

FigureEnumeration figures()
Returns an Enumeration of the figures contained in this figure


findFigureInside

Figure findFigureInside(int x,
                        int y)
Returns the figure that contains the given point.


containsPoint

boolean containsPoint(int x,
                      int y)
Checks if a point is inside the figure.


clone

java.lang.Object clone()
Returns a Clone of this figure


displayBox

void displayBox(java.awt.Rectangle r)
Changes the display box of a figure. This is a convenience method. Implementors should only have to override basicDisplayBox

See Also:
displayBox(java.awt.Point, java.awt.Point)

includes

boolean includes(Figure figure)
Checks whether the given figure is contained in this figure.


decompose

FigureEnumeration decompose()
Decomposes a figure into its parts. A figure is considered as a part of itself.


addToContainer

void addToContainer(FigureChangeListener c)
Sets the Figure's container and registers the container as a figure change listener. A figure's container can be any kind of FigureChangeListener. A figure is not restricted to have a single container.


removeFromContainer

void removeFromContainer(FigureChangeListener c)
Removes a figure from the given container and unregisters it as a change listener.


addDependendFigure

void addDependendFigure(Figure newDependendFigure)
Add a dependent figure.


removeDependendFigure

void removeDependendFigure(Figure oldDependendFigure)
Remove a dependent figure.


getDependendFigures

FigureEnumeration getDependendFigures()
Get an enumeration of all dependent figures.


listener

FigureChangeListener listener()
Gets the Figure's listeners.


addFigureChangeListener

void addFigureChangeListener(FigureChangeListener l)
Adds a listener for this figure.


removeFigureChangeListener

void removeFigureChangeListener(FigureChangeListener l)
Removes a listener for this figure.


release

void release()
Releases a figure's resources. Release is called when a figure is removed from a drawing. Informs the listeners that the figure is removed by calling figureRemoved.


invalidate

void invalidate()
Invalidates the figure. This method informs its listeners that its current display box is invalid and should be refreshed.


willChange

void willChange()
Informes that a figure is about to change such that its display box is affected. Here is an example of how it is used together with changed()
 public void move(int x, int y) {
      willChange();
      // change the figure's location
      changed();
  }
 

See Also:
invalidate(), changed()

changed

void changed()
Informes that a figure has changed its display box. This method also triggers an update call for its registered observers.

See Also:
invalidate(), willChange()

canConnect

boolean canConnect()
Checks if this figure can be connected


connectorAt

Connector connectorAt(int x,
                      int y)
Gets a connector for this figure at the given location. A figure can have different connectors at different locations.


connectorVisibility

void connectorVisibility(boolean isVisible,
                         ConnectionFigure connection)
Sets whether the connectors should be visible. Connectors can be optionally visible. Implement this method and react on isVisible to turn the connectors on or off.


connectionInsets

java.awt.Insets connectionInsets()
Returns the connection inset. This is only a hint that connectors can use to determine the connection location. The inset defines the area where the display box of a figure should not be connected.


connectedTextLocator

Locator connectedTextLocator(Figure text)
Returns the locator used to located connected text.


getAttribute

java.lang.Object getAttribute(java.lang.String name)
Deprecated. use getAttribute(FigureAttributeConstant) instead

Returns the named attribute or null if a a figure doesn't have an attribute. All figures support the attribute names FillColor and FrameColor


getAttribute

java.lang.Object getAttribute(FigureAttributeConstant attributeConstant)
Returns the named attribute or null if a a figure doesn't have an attribute. All figures support the attribute names FillColor and FrameColor


setAttribute

void setAttribute(java.lang.String name,
                  java.lang.Object value)
Deprecated. use setAttribute(FigureAttributeConstant, Object) instead

Sets the named attribute to the new value


setAttribute

void setAttribute(FigureAttributeConstant attributeConstant,
                  java.lang.Object value)
Sets the named attribute to the new value


getZValue

int getZValue()
Gets the z value (back-to-front ordering) of this figure. Z values are not guaranteed to not skip numbers.


setZValue

void setZValue(int z)
Sets the z value (back-to-front ordering) of this figure. Z values are not guaranteed to not skip numbers.


visit

void visit(FigureVisitor visitor)

getTextHolder

TextHolder getTextHolder()
Some figures have the ability to hold text. This method returns the adjunctant TextHolder.

Returns:

getDecoratedFigure

Figure getDecoratedFigure()
Get the underlying figure in case the figure has been decorated. If the figure has not been decorated the figure itself is returned. The DecoratorFigure does not release the the decorated figure but just returns it (in contrast to org.jhotdraw.standard.DecoratorFigure.peelDecoration).

Returns:
underlying, "real" without DecoratorFigure
See Also:
DecoratorFigure

JHotDraw 6.0b1