CH.ifa.draw.standard
Class CompositeFigure

java.lang.Object
  extended by CH.ifa.draw.standard.AbstractFigure
      extended by CH.ifa.draw.standard.CompositeFigure
All Implemented Interfaces:
Figure, FigureChangeListener, Storable, java.io.Serializable, java.lang.Cloneable, java.util.EventListener
Direct Known Subclasses:
GraphicalCompositeFigure, GroupFigure, PertFigure, StandardDrawing

public abstract class CompositeFigure
extends AbstractFigure
implements FigureChangeListener

A Figure that is composed of several figures. A CompositeFigure doesn't define any layout behavior. It is up to subclassers to arrange the contained figures.


Design Patterns

 o Composite
CompositeFigure enables to treat a composition of figures like a single figure.

See Also:
Figure, Serialized Form

Field Summary
protected  java.util.Vector fFigures
          The figures that this figure is composed of
 
Fields inherited from interface CH.ifa.draw.framework.Figure
POPUP_MENU
 
Constructor Summary
protected CompositeFigure()
           
 
Method Summary
 Figure add(Figure figure)
          Adds a figure to the list of figures.
 void addAll(java.util.Vector newFigures)
          Adds a vector of figures.
protected  void basicMoveBy(int x, int y)
          Moves all the given figures by x and y.
 void bringToFront(Figure figure)
          Brings a figure to the front.
 void draw(java.awt.Graphics g)
          Draws all the contained figures
 Figure figureAt(int i)
          Gets a figure at the given index.
 void figureChanged(FigureChangeEvent e)
          Sent when a figure changed
 int figureCount()
          Gets number of child figures.
 void figureInvalidated(FigureChangeEvent e)
          Propagates the figureInvalidated event to my listener.
 void figureRemoved(FigureChangeEvent e)
          Sent when a figure was removed
 void figureRequestRemove(FigureChangeEvent e)
          Propagates the removeFromDrawing request up to the container.
 void figureRequestUpdate(FigureChangeEvent e)
          Propagates the requestUpdate request up to the container.
 FigureEnumeration figures()
          Returns an Enumeration for accessing the contained figures.
 FigureEnumeration figuresReverse()
          Returns an Enumeration for accessing the contained figures in the reverse drawing order.
 Figure findFigure(int x, int y)
          Finds a top level Figure.
 Figure findFigure(java.awt.Rectangle r)
          Finds a top level Figure that intersects the given rectangle.
 Figure findFigure(java.awt.Rectangle r, Figure without)
          Finds a top level Figure that intersects the given rectangle.
 Figure findFigureInside(int x, int y)
          Finds a figure but descends into a figure's children.
 Figure findFigureInsideWithout(int x, int y, Figure without)
          Finds a figure but descends into a figure's children.
 Figure findFigureWithout(int x, int y, Figure without)
          Finds a top level Figure, but supresses the passed in figure.
 boolean includes(Figure figure)
          Checks if the composite figure has the argument as one of its children.
 Figure orphan(Figure figure)
          Removes a figure from the figure list, but doesn't release it.
 void orphanAll(java.util.Vector newFigures)
          Removes a vector of figures from the figure's list without releasing the figures.
 void read(StorableInput dr)
          Reads the contained figures from StorableInput.
 void release()
          Releases the figure and all its children.
 Figure remove(Figure figure)
          Removes a figure from the composite.
 void removeAll()
          Removes all children.
 void removeAll(java.util.Vector figures)
          Removes a vector of figures.
 void replace(Figure figure, Figure replacement)
          Replaces a figure in the drawing without removing it from the drawing.
 void sendToBack(Figure figure)
          Sends a figure to the back of the drawing.
 void write(StorableOutput dw)
          Writes the contained figures to the StorableOutput.
 
Methods inherited from class CH.ifa.draw.standard.AbstractFigure
addFigureChangeListener, addToContainer, basicDisplayBox, canConnect, center, changed, clone, connectedTextLocator, connectionInsets, connectorAt, connectorVisibility, containsPoint, decompose, displayBox, displayBox, displayBox, getAttribute, handles, invalidate, isEmpty, listener, moveBy, removeFigureChangeListener, removeFromContainer, setAttribute, size, willChange
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fFigures

protected java.util.Vector fFigures
The figures that this figure is composed of

See Also:
add(CH.ifa.draw.framework.Figure), remove(CH.ifa.draw.framework.Figure)
Constructor Detail

CompositeFigure

protected CompositeFigure()
Method Detail

add

public Figure add(Figure figure)
Adds a figure to the list of figures. Initializes the the figure's container.


addAll

public void addAll(java.util.Vector newFigures)
Adds a vector of figures.

See Also:
add(CH.ifa.draw.framework.Figure)

remove

public Figure remove(Figure figure)
Removes a figure from the composite.

See Also:
removeAll(java.util.Vector)

removeAll

public void removeAll(java.util.Vector figures)
Removes a vector of figures.

See Also:
remove(CH.ifa.draw.framework.Figure)

removeAll

public void removeAll()
Removes all children.

See Also:
remove(CH.ifa.draw.framework.Figure)

orphan

public Figure orphan(Figure figure)
Removes a figure from the figure list, but doesn't release it. Use this method to temporarily manipulate a figure outside of the drawing.


orphanAll

public void orphanAll(java.util.Vector newFigures)
Removes a vector of figures from the figure's list without releasing the figures.

See Also:
orphan(CH.ifa.draw.framework.Figure)

replace

public void replace(Figure figure,
                    Figure replacement)
Replaces a figure in the drawing without removing it from the drawing.


sendToBack

public void sendToBack(Figure figure)
Sends a figure to the back of the drawing.


bringToFront

public void bringToFront(Figure figure)
Brings a figure to the front.


draw

public void draw(java.awt.Graphics g)
Draws all the contained figures

Specified by:
draw in interface Figure
Parameters:
g - the Graphics to draw into
See Also:
Figure.draw(java.awt.Graphics)

figureAt

public Figure figureAt(int i)
Gets a figure at the given index.


figures

public final FigureEnumeration figures()
Returns an Enumeration for accessing the contained figures. The figures are returned in the drawing order.

Specified by:
figures in interface Figure
Overrides:
figures in class AbstractFigure
See Also:
CompositeFigure

figureCount

public int figureCount()
Gets number of child figures.


figuresReverse

public final FigureEnumeration figuresReverse()
Returns an Enumeration for accessing the contained figures in the reverse drawing order.


findFigure

public Figure findFigure(int x,
                         int y)
Finds a top level Figure. Use this call for hit detection that should not descend into the figure's children.


findFigure

public Figure findFigure(java.awt.Rectangle r)
Finds a top level Figure that intersects the given rectangle.


findFigureWithout

public Figure findFigureWithout(int x,
                                int y,
                                Figure without)
Finds a top level Figure, but supresses the passed in figure. Use this method to ignore a figure that is temporarily inserted into the drawing.

Parameters:
x - the x coordinate
y - the y coordinate
without - the figure to be ignored during the find.

findFigure

public Figure findFigure(java.awt.Rectangle r,
                         Figure without)
Finds a top level Figure that intersects the given rectangle. It supresses the passed in figure. Use this method to ignore a figure that is temporarily inserted into the drawing.


findFigureInside

public Figure findFigureInside(int x,
                               int y)
Finds a figure but descends into a figure's children. Use this method to implement click-through hit detection, that is, you want to detect the inner most figure containing the given point.

Specified by:
findFigureInside in interface Figure
Overrides:
findFigureInside in class AbstractFigure
See Also:
AbstractFigure.containsPoint(int, int)

findFigureInsideWithout

public Figure findFigureInsideWithout(int x,
                                      int y,
                                      Figure without)
Finds a figure but descends into a figure's children. It supresses the passed in figure. Use this method to ignore a figure that is temporarily inserted into the drawing.


includes

public boolean includes(Figure figure)
Checks if the composite figure has the argument as one of its children.

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

basicMoveBy

protected void basicMoveBy(int x,
                           int y)
Moves all the given figures by x and y. Doesn't announce any changes. Subclassers override basicMoveBy. Clients usually call moveBy.

Specified by:
basicMoveBy in class AbstractFigure
See Also:
AbstractFigure.moveBy(int, int)

release

public void release()
Releases the figure and all its children.

Specified by:
release in interface Figure
Overrides:
release in class AbstractFigure
See Also:
Figure.release()

figureInvalidated

public void figureInvalidated(FigureChangeEvent e)
Propagates the figureInvalidated event to my listener.

Specified by:
figureInvalidated in interface FigureChangeListener
See Also:
FigureChangeListener

figureRequestRemove

public void figureRequestRemove(FigureChangeEvent e)
Propagates the removeFromDrawing request up to the container.

Specified by:
figureRequestRemove in interface FigureChangeListener
See Also:
FigureChangeListener

figureRequestUpdate

public void figureRequestUpdate(FigureChangeEvent e)
Propagates the requestUpdate request up to the container.

Specified by:
figureRequestUpdate in interface FigureChangeListener
See Also:
FigureChangeListener

figureChanged

public void figureChanged(FigureChangeEvent e)
Description copied from interface: FigureChangeListener
Sent when a figure changed

Specified by:
figureChanged in interface FigureChangeListener

figureRemoved

public void figureRemoved(FigureChangeEvent e)
Description copied from interface: FigureChangeListener
Sent when a figure was removed

Specified by:
figureRemoved in interface FigureChangeListener

write

public void write(StorableOutput dw)
Writes the contained figures to the StorableOutput.

Specified by:
write in interface Storable
Overrides:
write in class AbstractFigure

read

public void read(StorableInput dr)
          throws java.io.IOException
Reads the contained figures from StorableInput.

Specified by:
read in interface Storable
Overrides:
read in class AbstractFigure
Throws:
java.io.IOException