JHotDraw 7.4.1

org.jhotdraw.samples.odg.figures
Class ODGPathFigure

java.lang.Object
  extended by org.jhotdraw.beans.AbstractBean
      extended by org.jhotdraw.draw.AbstractFigure
          extended by org.jhotdraw.draw.AbstractCompositeFigure
              extended by org.jhotdraw.draw.AbstractAttributedCompositeFigure
                  extended by org.jhotdraw.samples.odg.figures.ODGPathFigure
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, CompositeFigure, Figure, ODGFigure, DOMStorable

public class ODGPathFigure
extends AbstractAttributedCompositeFigure
implements ODGFigure

ODGPath is a composite Figure which contains one or more ODGBezierFigures as its children.

Version:
$Id: ODGPathFigure.java 613 2010-01-12 10:23:31Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.jhotdraw.draw.AbstractCompositeFigure
AbstractCompositeFigure.EventHandler
 
Field Summary
 
Fields inherited from class org.jhotdraw.draw.AbstractCompositeFigure
cachedBounds, cachedDrawingArea, children, eventHandler, layouter
 
Fields inherited from class org.jhotdraw.draw.AbstractFigure
changingDepth, listenerList
 
Fields inherited from class org.jhotdraw.beans.AbstractBean
propertySupport
 
Fields inherited from interface org.jhotdraw.draw.Figure
CONNECTABLE_PROPERTY, REMOVABLE_PROPERTY, SELECTABLE_PROPERTY, TRANSFORMABLE_PROPERTY
 
Fields inherited from interface org.jhotdraw.draw.CompositeFigure
LAYOUT_INSETS
 
Constructor Summary
ODGPathFigure()
          Creates a new instance.
 
Method Summary
 void add(int index, Figure figure)
          Adds a child to the figure at the specified index.
 ODGPathFigure clone()
          Returns a clone of the figure, with clones of all aggregated figures, such as children and decorators.
 boolean contains(java.awt.geom.Point2D.Double p)
          Checks if a point is contained by the figure.
 java.util.Collection<Handle> createHandles(int detailLevel)
          Creates handles used to manipulate the figure.
 void draw(java.awt.Graphics2D g)
          Draws the figure.
 void drawFigure(java.awt.Graphics2D g)
           
 void drawFill(java.awt.Graphics2D g)
          This method is called by method draw() to draw the fill area of the figure.
 void drawStroke(java.awt.Graphics2D g)
          This method is called by method draw() to draw the text of 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.
 void flattenTransform()
           
 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.
 ODGBezierFigure getChild(int index)
          Returns the child figure at the specified index.
 java.awt.geom.Rectangle2D.Double getDrawingArea()
          Returns the drawing area of the figure as a Rectangle.
protected  java.awt.geom.Path2D.Double getPath()
           
 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.
 boolean handleMouseClick(java.awt.geom.Point2D.Double p, java.awt.event.MouseEvent evt, DrawingView view)
          Handles a mouse click.
 void invalidate()
          Invalidates cached data of the Figure.
 boolean isEmpty()
          Returns true, if this figure is empty for one of the following reasons: A group has no children A path has less than two points An ellipse or a rectangle has a width or a height of 0 A text has no characters
 void read(DOMInput in)
           
 void restoreTransformTo(java.lang.Object geometry)
          Restores the transform of the figure to a previously stored state.
<T> void
set(AttributeKey<T> key, T newValue)
          Sets an attribute of the figure.
protected
<T> void
setAttributeOnChildren(AttributeKey<T> key, T newValue)
           
 void setBounds(java.awt.geom.Point2D.Double anchor, java.awt.geom.Point2D.Double lead)
          Sets the logical and untransformed bounds of the figure.
 void transform(java.awt.geom.AffineTransform tx)
          Transforms the figure.
 void write(DOMOutput out)
           
 
Methods inherited from class org.jhotdraw.draw.AbstractAttributedCompositeFigure
applyAttributesTo, drawChildren, drawText, get, getAttributeKey, getAttributes, getAttributesRestoreData, getFigureDrawBounds, getStroke, getStrokeMiterLimitFactor, hasAttribute, isAttributeEnabled, readAttributes, removeAttribute, restoreAttributesTo, setAttributeEnabled, setAttributes, writeAttributes
 
Methods inherited from class org.jhotdraw.draw.AbstractCompositeFigure
add, addAll, addAll, addCompositeFigureListener, addNotify, basicAdd, basicAdd, basicAddAll, basicRemove, basicRemoveAll, basicRemoveAllChildren, basicRemoveChild, bringToFront, changed, contains, createEventHandler, findChild, findChildIndex, findFigureInside, fireFigureAdded, fireFigureRemoved, getBounds, getChildCount, getChildren, getChildrenFrontToBack, getDecomposition, getLayouter, getPreferredSize, indexOf, layout, remove, removeAll, removeAllChildren, removeChild, removeCompositeFigureListener, removeNotify, sendToBack, setLayouter, validate, willChange
 
Methods inherited from class org.jhotdraw.draw.AbstractFigure
addFigureListener, basicClone, fireAreaInvalidated, fireAreaInvalidated, fireAreaInvalidated, fireAttributeChanged, fireFigureAdded, fireFigureChanged, fireFigureChanged, fireFigureChanged, fireFigureHandlesChanged, fireFigureRemoved, fireFigureRequestRemove, fireUndoableEditHappened, getChangingDepth, getConnectors, getCursor, getDrawing, getEndPoint, getFontRenderContext, getLayer, getLock, getStartPoint, getTool, getToolTipText, handleDrop, includes, isChanging, isConnectable, isRemovable, isSelectable, isTransformable, isVisible, remap, removeFigureListener, requestRemove, setBounds, setConnectable, setRemovable, setSelectable, setTransformable, setVisible, toString
 
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, addPropertyChangeListener, changed, findFigureInside, get, getAttributes, getAttributesRestoreData, getBounds, getConnectors, getCursor, getDecomposition, getEndPoint, getLayer, getPreferredSize, getStartPoint, getTool, getToolTipText, handleDrop, includes, isConnectable, isRemovable, isSelectable, isTransformable, isVisible, remap, removeFigureListener, removeNotify, removePropertyChangeListener, requestRemove, restoreAttributesTo, willChange
 

Constructor Detail

ODGPathFigure

public ODGPathFigure()
Creates a new instance.

Method Detail

draw

public void draw(java.awt.Graphics2D g)
Description copied from interface: Figure
Draws the figure.

Specified by:
draw in interface Figure
Overrides:
draw in class AbstractCompositeFigure
Parameters:
g - The Graphics2D to draw to.

drawFigure

public void drawFigure(java.awt.Graphics2D g)
Overrides:
drawFigure in class AbstractAttributedCompositeFigure

drawFill

public void drawFill(java.awt.Graphics2D g)
Description copied from class: AbstractAttributedCompositeFigure
This method is called by method draw() to draw the fill area of the figure. AttributedFigure 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 AbstractAttributedCompositeFigure

drawStroke

public void drawStroke(java.awt.Graphics2D g)
Description copied from class: AbstractAttributedCompositeFigure
This method is called by method draw() to draw the text of the figure . AttributedFigure 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 AbstractAttributedCompositeFigure

invalidate

public void invalidate()
Description copied from class: AbstractFigure
Invalidates cached data of the Figure. This method must execute fast, because it can be called very often.

Overrides:
invalidate in class AbstractCompositeFigure

getPath

protected java.awt.geom.Path2D.Double getPath()

getDrawingArea

public java.awt.geom.Rectangle2D.Double getDrawingArea()
Description copied from interface: Figure
Returns the drawing area of the figure as a Rectangle.

The drawing area is used to inform DrawingView about the area that is needed to draw this figure.

The drawing area needs to be large enough, to take line width, line caps and other decorations into account that exceed the bounds of the Figure.

Specified by:
getDrawingArea in interface Figure
Overrides:
getDrawingArea in class AbstractCompositeFigure

write

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

read

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

contains

public boolean contains(java.awt.geom.Point2D.Double p)
Description copied from interface: Figure
Checks if a point is contained by the figure.

This is used for hit testing by Tool's.

Specified by:
contains in interface Figure
Overrides:
contains in class AbstractCompositeFigure

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 AbstractCompositeFigure
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)
Description copied from class: AbstractCompositeFigure
Transforms the figure.

Specified by:
transform in interface Figure
Overrides:
transform in class AbstractCompositeFigure
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
Overrides:
restoreTransformTo in class AbstractCompositeFigure

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
Overrides:
getTransformRestoreData in class AbstractCompositeFigure
See Also:
Figure.transform(AffineTransform)

set

public <T> void set(AttributeKey<T> key,
                    T newValue)
Description copied from class: AbstractAttributedCompositeFigure
Sets an attribute of the figure. AttributeKey name and semantics are defined by the class implementing the figure interface.

Specified by:
set in interface Figure
Overrides:
set in class AbstractAttributedCompositeFigure
See Also:
AttributeKey.set(org.jhotdraw.draw.Figure, T)

setAttributeOnChildren

protected <T> void setAttributeOnChildren(AttributeKey<T> key,
                                          T newValue)
Overrides:
setAttributeOnChildren in class AbstractAttributedCompositeFigure

isEmpty

public boolean isEmpty()
Description copied from interface: ODGFigure
Returns true, if this figure is empty for one of the following reasons:

Specified by:
isEmpty in interface ODGFigure

createHandles

public java.util.Collection<Handle> createHandles(int detailLevel)
Description copied from interface: Figure
Creates handles used to manipulate the figure.

Specified by:
createHandles in interface Figure
Overrides:
createHandles in class AbstractCompositeFigure
Parameters:
detailLevel - The detail level of the handles. Usually this is 0 for bounding box handles and 1 for point handles. The value -1 is used by the SelectAreaTracker and the HandleTracker to highlight figures, over which the mouse pointer is hovering.
Returns:
a Collection of handles
See Also:
Handle

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

handleMouseClick

public boolean handleMouseClick(java.awt.geom.Point2D.Double p,
                                java.awt.event.MouseEvent evt,
                                DrawingView view)
Handles a mouse click.

Specified by:
handleMouseClick in interface Figure
Overrides:
handleMouseClick in class AbstractFigure
Parameters:
p - The location of the mouse event.
evt - The mouse event.
view - The drawing view which is the source of the mouse event.
Returns:
Returns true, if the event was consumed.

add

public void add(int index,
                Figure figure)
Description copied from interface: CompositeFigure
Adds a child to the figure at the specified index.

This method calls figureAdded on all registered CompositeFigureListeners.

Specified by:
add in interface CompositeFigure
Overrides:
add in class AbstractCompositeFigure

getChild

public ODGBezierFigure getChild(int index)
Description copied from interface: CompositeFigure
Returns the child figure at the specified index.

This is a convenience method for calling getChildren().get(index);.

Specified by:
getChild in interface CompositeFigure
Overrides:
getChild in class AbstractCompositeFigure

clone

public ODGPathFigure 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 AbstractAttributedCompositeFigure

flattenTransform

public void flattenTransform()

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