diva.canvas.toolbox
Class IconFigure

java.lang.Object
  extended by diva.canvas.AbstractFigure
      extended by diva.canvas.toolbox.IconFigure
All Implemented Interfaces:
CanvasComponent, Figure, VisibleComponent, UserObjectContainer

public class IconFigure
extends AbstractFigure

An IconFigure is a figure that contains a main background figure, a PaintedObject to decorate that figure, a label, and an arbitrary number of attached Terminal objects.

Version:
$Id: IconFigure.java 41477 2006-03-29 00:03:58Z cxh $
Author:
John Reekie

Field Summary
private  Figure _background
          The background figure
private  java.awt.Composite _composite
          The composite of this icon and all its stuff
private  PaintedObject _graphic
          The "graphic" object
private  LabelFigure _label
          The icon's label
private  java.util.ArrayList _sites
          The sites to which the terminals attach
private  java.util.ArrayList _terminals
          The terminals of this icon
private  java.awt.geom.AffineTransform _transform
          The transform that is applied to the background and the graphic
 
Constructor Summary
IconFigure(Figure f)
          Create a new icon figure using the given figure as the "background" figure.
IconFigure(Figure f, PaintedObject g)
          Create a new icon figure using the given figure as the "background" figure and the given Painted object as its "graphic."
IconFigure(Figure f, PaintedObject g, java.lang.String label)
          Create a new icon figure using the given figure as the "background" figure, the given Painted object as its "graphic," and the given string as a displayed label.
IconFigure(Figure f, java.lang.String label)
          Create a new icon figure using the given figure as the "background" figure and with the given label.
 
Method Summary
 void addTerminal(Terminal t, int side, double offset)
          Add the given terminal, on the given side and with the given offset, to the icon.
 Figure getBackground()
          Get the background figure of the icon.
 java.awt.geom.Rectangle2D getBounds()
          Get the bounding box of this icon, including the terminals.
 java.awt.Composite getComposite()
          Get the composite of this icon, or null if it doesn't have one.
 PaintedObject getGraphic()
          Get the painted object that is drawn over the top of the icon as its "graphic."
 java.awt.Shape getShape()
          Get the shape of this figure.
 Terminal getTerminal(int index)
          Get the terminal at the given index
 boolean intersects(java.awt.geom.Rectangle2D r)
          Test if this figure intersects the given rectangle.
 void paint(java.awt.Graphics2D g)
          Paint the icon.
 void setComposite(java.awt.Composite c)
          Set the color composition operator of this figure.
 void setLabel(java.lang.String s)
          Set the label of this figure.
 java.util.Iterator terminals()
          Get an iterator over the terminals of this figure.
 void transform(java.awt.geom.AffineTransform at)
          Transform the figure with the supplied transform.
 void translate(double x, double y)
          Translate the figure the given distance.
 
Methods inherited from class diva.canvas.AbstractFigure
contains, getInteractor, getLayer, getOrigin, getParent, getToolTipText, getTransformContext, getUserObject, hit, isVisible, paint, repaint, repaint, setInteractor, setParent, setToolTipText, setUserObject, setVisible
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_composite

private java.awt.Composite _composite
The composite of this icon and all its stuff


_background

private Figure _background
The background figure


_transform

private java.awt.geom.AffineTransform _transform
The transform that is applied to the background and the graphic


_graphic

private PaintedObject _graphic
The "graphic" object


_terminals

private java.util.ArrayList _terminals
The terminals of this icon


_sites

private java.util.ArrayList _sites
The sites to which the terminals attach


_label

private LabelFigure _label
The icon's label

Constructor Detail

IconFigure

public IconFigure(Figure f)
Create a new icon figure using the given figure as the "background" figure.


IconFigure

public IconFigure(Figure f,
                  PaintedObject g)
Create a new icon figure using the given figure as the "background" figure and the given Painted object as its "graphic."


IconFigure

public IconFigure(Figure f,
                  java.lang.String label)
Create a new icon figure using the given figure as the "background" figure and with the given label.


IconFigure

public IconFigure(Figure f,
                  PaintedObject g,
                  java.lang.String label)
Create a new icon figure using the given figure as the "background" figure, the given Painted object as its "graphic," and the given string as a displayed label.

Method Detail

addTerminal

public void addTerminal(Terminal t,
                        int side,
                        double offset)
Add the given terminal, on the given side and with the given offset, to the icon. A BoundsSite will be created and the terminal attached to it. See the BoundsSite class for a description if the side and offset arguments.


getBackground

public Figure getBackground()
Get the background figure of the icon.


getBounds

public java.awt.geom.Rectangle2D getBounds()
Get the bounding box of this icon, including the terminals. The bounds of the painted objects on top of the icon is not included in the calculation, as its expensive to compute and whoever created the icon is assumed to check that the painted objects are within bounds at creation time.

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

getGraphic

public PaintedObject getGraphic()
Get the painted object that is drawn over the top of the icon as its "graphic."


getComposite

public java.awt.Composite getComposite()
Get the composite of this icon, or null if it doesn't have one.


getShape

public java.awt.Shape getShape()
Get the shape of this figure. This is the shape of the background figure.

Specified by:
getShape in interface Figure
Specified by:
getShape in class AbstractFigure

getTerminal

public Terminal getTerminal(int index)
Get the terminal at the given index


intersects

public boolean intersects(java.awt.geom.Rectangle2D r)
Test if this figure intersects the given rectangle.

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

paint

public void paint(java.awt.Graphics2D g)
Paint the icon.

Specified by:
paint in interface VisibleComponent
Specified by:
paint in class AbstractFigure

setComposite

public void setComposite(java.awt.Composite c)
Set the color composition operator of this figure. If the composite is set to null, then the composite will not be changed when the figure is painted -- provided that all other objects in the system are well-behaved, this means that icons will be opaque. The default composite value is null.


setLabel

public void setLabel(java.lang.String s)
Set the label of this figure.


terminals

public java.util.Iterator terminals()
Get an iterator over the terminals of this figure.


transform

public void transform(java.awt.geom.AffineTransform at)
Transform the figure with the supplied transform. This method transforms the background figure and the graphic, but not the label or the terminals.

Specified by:
transform in interface Figure
Specified by:
transform in class AbstractFigure

translate

public void translate(double x,
                      double y)
Translate the figure the given distance.

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