JHotDraw 7.3.1

org.jhotdraw.draw
Class ImageFigure

java.lang.Object
  extended by org.jhotdraw.beans.AbstractBean
      extended by org.jhotdraw.draw.AbstractFigure
          extended by org.jhotdraw.draw.AbstractAttributedFigure
              extended by org.jhotdraw.draw.AbstractAttributedDecoratedFigure
                  extended by org.jhotdraw.draw.ImageFigure
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, DecoratedFigure, Figure, ImageHolderFigure, DOMStorable

public class ImageFigure
extends AbstractAttributedDecoratedFigure
implements ImageHolderFigure

An ImageHolderFigure which holds a buffered image.

A DrawingEditor should provide the ImageTool to create an ImageFigure.

Version:
$Id: ImageFigure.java 564 2009-10-10 10:21:01Z rawcoder $
Author:
Werner Randelshofer
See Also:
ImageTool, Serialized Form

Field Summary
 
Fields inherited from class org.jhotdraw.draw.AbstractFigure
changingDepth, listenerList
 
Fields inherited from class org.jhotdraw.beans.AbstractBean
propertySupport
 
Constructor Summary
ImageFigure()
          Creates a new instance.
ImageFigure(double x, double y, double width, double height)
           
 
Method Summary
 ImageFigure clone()
          Returns a clone of the figure, with clones of all aggregated figures, such as children and decorators.
protected  void drawFigure(java.awt.Graphics2D g)
           
protected  void drawFill(java.awt.Graphics2D g)
          This method is called by method draw() to draw the fill area of the figure.
protected  void drawImage(java.awt.Graphics2D g)
           
protected  void drawStroke(java.awt.Graphics2D g)
          This method is called by method draw() to draw the text of the figure .
 boolean figureContains(java.awt.geom.Point2D.Double p)
          Checks if a Point2D.Double is inside the figure.
 Connector findCompatibleConnector(Connector c, boolean isStartConnector)
          Gets a compatible connector.
 Connector findConnector(java.awt.geom.Point2D.Double p, ConnectionFigure prototype)
          Returns the Figures connector for the specified location.
 java.util.Collection<javax.swing.Action> getActions(java.awt.geom.Point2D.Double p)
          Returns a collection of actions which are presented to the user in a popup menu.
 java.awt.geom.Rectangle2D.Double getBounds()
          Returns the untransformed logical bounds of the figure as a Rectangle.
 java.awt.image.BufferedImage getBufferedImage()
          Gets the buffered image.
 java.awt.geom.Rectangle2D.Double getFigureDrawingArea()
           
 byte[] getImageData()
          Gets the image data.
 java.lang.Object getTransformRestoreData()
          Gets data which can be used to restore the transformation of the figure without loss of precision, after a transform has been applied to it.
 void loadImage(java.io.File file)
          Loads an image from a File.
 void loadImage(java.io.InputStream in)
          Loads an image from an Input Stream.
 void read(DOMInput in)
           
 void restoreTransformTo(java.lang.Object geometry)
          Restores the transform of the figure to a previously stored state.
 void setBounds(java.awt.geom.Point2D.Double anchor, java.awt.geom.Point2D.Double lead)
          Sets the logical and untransformed bounds of the figure.
 void setBufferedImage(java.awt.image.BufferedImage image)
          Sets the buffered image.
 void setImage(byte[] imageData, java.awt.image.BufferedImage bufferedImage)
          Sets the image.
 void setImageData(byte[] imageData)
          Sets the image data.
 void transform(java.awt.geom.AffineTransform tx)
          Transforms the figure.
 void write(DOMOutput out)
           
 
Methods inherited from class org.jhotdraw.draw.AbstractAttributedDecoratedFigure
contains, draw, drawDecorator, getDecorator, getDrawingArea, readDecorator, setDecorator, updateDecoratorBounds, writeDecorator
 
Methods inherited from class org.jhotdraw.draw.AbstractAttributedFigure
applyAttributesTo, drawText, get, getAttributeKey, getAttributes, getAttributesRestoreData, getStroke, getStrokeMiterLimitFactor, hasAttribute, isAttributeEnabled, readAttributes, removeAttribute, restoreAttributesTo, set, setAttributeEnabled, setAttributes, writeAttributes
 
Methods inherited from class org.jhotdraw.draw.AbstractFigure
addFigureListener, addNotify, basicClone, canConnect, changed, createHandles, findFigureInside, fireAreaInvalidated, fireAreaInvalidated, fireAreaInvalidated, fireAttributeChanged, fireFigureAdded, fireFigureChanged, fireFigureChanged, fireFigureChanged, fireFigureHandlesChanged, fireFigureRemoved, fireFigureRequestRemove, fireUndoableEditHappened, getChangingDepth, getConnectors, getCursor, getDecomposition, getDrawing, getEndPoint, getFontRenderContext, getLayer, getLock, getPreferredSize, getStartPoint, getTool, getToolTipText, handleDrop, handleMouseClick, includes, invalidate, isChanging, isRemovable, isSelectable, isTransformable, isVisible, remap, removeFigureListener, removeNotify, requestRemove, setBounds, setRemovable, setSelectable, setTransformable, setVisible, toString, validate, willChange
 
Methods inherited from class org.jhotdraw.beans.AbstractBean
addPropertyChangeListener, addPropertyChangeListener, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jhotdraw.draw.Figure
addFigureListener, addNotify, canConnect, changed, contains, createHandles, draw, findFigureInside, get, getAttributes, getAttributesRestoreData, getConnectors, getCursor, getDecomposition, getDrawingArea, getEndPoint, getLayer, getPreferredSize, getStartPoint, getTool, getToolTipText, handleDrop, handleMouseClick, includes, isRemovable, isSelectable, isTransformable, isVisible, remap, removeFigureListener, removeNotify, requestRemove, restoreAttributesTo, set, willChange
 

Constructor Detail

ImageFigure

public ImageFigure()
Creates a new instance.


ImageFigure

public ImageFigure(double x,
                   double y,
                   double width,
                   double height)
Method Detail

drawFigure

protected void drawFigure(java.awt.Graphics2D g)
Overrides:
drawFigure in class AbstractAttributedDecoratedFigure

drawFill

protected void drawFill(java.awt.Graphics2D g)
Description copied from class: AbstractAttributedFigure
This method is called by method draw() to draw the fill area of the figure. AbstractAttributedFigure configures the Graphics2D object with the FILL_COLOR attribute before calling this method. If the FILL_COLOR attribute is null, this method is not called.

Specified by:
drawFill in class AbstractAttributedFigure

drawImage

protected void drawImage(java.awt.Graphics2D g)

drawStroke

protected void drawStroke(java.awt.Graphics2D g)
Description copied from class: AbstractAttributedFigure
This method is called by method draw() to draw the text of the figure . AbstractAttributedFigure configures the Graphics2D object with the TEXT_COLOR attribute before calling this method. If the TEXT_COLOR attribute is null, this method is not called.

Specified by:
drawStroke in class AbstractAttributedFigure

getBounds

public java.awt.geom.Rectangle2D.Double getBounds()
Description copied from interface: Figure
Returns the untransformed logical bounds of the figure as a Rectangle.

The bounds are used by Handle objects for adjusting the figure and for aligning the figure on a grid.

Specified by:
getBounds in interface Figure

getFigureDrawingArea

public java.awt.geom.Rectangle2D.Double getFigureDrawingArea()
Overrides:
getFigureDrawingArea in class AbstractAttributedDecoratedFigure

figureContains

public boolean figureContains(java.awt.geom.Point2D.Double p)
Checks if a Point2D.Double is inside the figure.

Specified by:
figureContains in class AbstractAttributedDecoratedFigure

setBounds

public void setBounds(java.awt.geom.Point2D.Double anchor,
                      java.awt.geom.Point2D.Double lead)
Description copied from interface: Figure
Sets the logical and untransformed bounds of the figure.

This is used by Tool's which create a new Figure and by Tool's which connect a Figure to another Figure.

This is a basic operation which does not fire events. Use the following code sequence, if you need event firing:

 aFigure.willChange();
 aFigure.setBounds(...);
 aFigure.changed();
 

Specified by:
setBounds in interface Figure
Overrides:
setBounds in class AbstractFigure
Parameters:
anchor - the start point of the bounds
lead - the end point of the bounds
See Also:
Figure.getBounds()

transform

public void transform(java.awt.geom.AffineTransform tx)
Transforms the figure.

Specified by:
transform in interface Figure
Parameters:
tx - The transformation.
See Also:
Figure.getTransformRestoreData(), Figure.restoreTransformTo(java.lang.Object)

restoreTransformTo

public void restoreTransformTo(java.lang.Object geometry)
Description copied from interface: Figure
Restores the transform of the figure to a previously stored state.

Specified by:
restoreTransformTo in interface Figure

getTransformRestoreData

public java.lang.Object getTransformRestoreData()
Description copied from interface: Figure
Gets data which can be used to restore the transformation of the figure without loss of precision, after a transform has been applied to it.

Specified by:
getTransformRestoreData in interface Figure
See Also:
Figure.transform(AffineTransform)

getActions

public java.util.Collection<javax.swing.Action> getActions(java.awt.geom.Point2D.Double p)
Description copied from class: AbstractFigure
Returns a collection of actions which are presented to the user in a popup menu.

The collection may contain null entries. These entries are used interpreted as separators in the popup menu.

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

findConnector

public Connector findConnector(java.awt.geom.Point2D.Double p,
                               ConnectionFigure prototype)
Description copied from class: AbstractFigure
Returns the Figures connector for the specified location. By default a ChopBoxConnector is returned.

Specified by:
findConnector in interface Figure
Overrides:
findConnector in class AbstractFigure
Parameters:
p - the location of the connector.
prototype - The prototype used to create a connection or null if unknown. This allows for specific connectors for different connection figures.
See Also:
ChopRectangleConnector

findCompatibleConnector

public Connector findCompatibleConnector(Connector c,
                                         boolean isStartConnector)
Description copied from interface: Figure
Gets a compatible connector. If the provided connector is part of this figure, return the connector. If the provided connector is part of another figure, return a connector with the same semantics for this figure. Return null, if no compatible connector is available.

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

clone

public ImageFigure clone()
Description copied from interface: Figure
Returns a clone of the figure, with clones of all aggregated figures, such as children and decorators. The cloned figure does not clone the list of FigureListeners from its original.

Specified by:
clone in interface Figure
Overrides:
clone in class AbstractAttributedDecoratedFigure

read

public void read(DOMInput in)
          throws java.io.IOException
Specified by:
read in interface DOMStorable
Overrides:
read in class AbstractAttributedDecoratedFigure
Throws:
java.io.IOException

write

public void write(DOMOutput out)
           throws java.io.IOException
Specified by:
write in interface DOMStorable
Overrides:
write in class AbstractAttributedDecoratedFigure
Throws:
java.io.IOException

setImage

public void setImage(byte[] imageData,
                     java.awt.image.BufferedImage bufferedImage)
Sets the image.

Specified by:
setImage in interface ImageHolderFigure
Parameters:
imageData - The image data. If this is null, a buffered image must be provided.
bufferedImage - An image constructed from the imageData. If this is null, imageData must be provided.

setImageData

public void setImageData(byte[] imageData)
Sets the image data. This clears the buffered image.


setBufferedImage

public void setBufferedImage(java.awt.image.BufferedImage image)
Sets the buffered image. This clears the image data.

Specified by:
setBufferedImage in interface ImageHolderFigure

getBufferedImage

public java.awt.image.BufferedImage getBufferedImage()
Gets the buffered image. If necessary, this method creates the buffered image from the image data.

Specified by:
getBufferedImage in interface ImageHolderFigure

getImageData

public byte[] getImageData()
Gets the image data. If necessary, this method creates the image data from the buffered image.

Specified by:
getImageData in interface ImageHolderFigure
Returns:
imageData The image data, or null, if the ImageHolderFigure does not have an image.

loadImage

public void loadImage(java.io.File file)
               throws java.io.IOException
Description copied from interface: ImageHolderFigure
Loads an image from a File. By convention this method is never invoked on the AWT Event Dispatcher Thread.

Specified by:
loadImage in interface ImageHolderFigure
Throws:
java.io.IOException

loadImage

public void loadImage(java.io.InputStream in)
               throws java.io.IOException
Description copied from interface: ImageHolderFigure
Loads an image from an Input Stream. By convention this method is never invoked on the AWT Event Dispatcher Thread.

Specified by:
loadImage in interface ImageHolderFigure
Throws:
java.io.IOException

Copyright 1996-2009 (c) by the authors and contributors of the JHotDraw project.
Some rights reserved.