edu.umd.cs.piccolox.swt
Class PSWTPath

java.lang.Object
  extended by edu.umd.cs.piccolo.PNode
      extended by edu.umd.cs.piccolox.swt.PSWTPath
All Implemented Interfaces:
java.awt.print.Printable, java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
PSWTHandle

public class PSWTPath
extends edu.umd.cs.piccolo.PNode

PPath is a wrapper around a java.awt.geom.GeneralPath. The setBounds method works by scaling the path to fit into the specified bounds. This normally works well, but if the specified base bounds get too small then it is impossible to expand the path shape again since all its numbers have tended to zero, so application code may need to take this into consideration.

One option that applications have is to call startResizeBounds before starting an interaction that may make the bounds very small, and calling endResizeBounds when this interaction is finished. When this is done PPath will use a copy of the original path to do the resizing so the numbers in the path wont loose resolution.

This class also provides methods for constructing common shapes using a general path.

Version:
1.0
Author:
Jesse Grosjean
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class edu.umd.cs.piccolo.PNode
edu.umd.cs.piccolo.PNode.PSceneGraphDelegate
 
Field Summary
(package private)  edu.umd.cs.piccolo.util.PAffineTransform internalXForm
           
(package private)  java.awt.geom.AffineTransform inverseXForm
           
(package private)  java.awt.Shape origShape
           
static java.lang.String PROPERTY_SHAPE
          The property name that identifies a change of this node's path.
(package private)  java.awt.Shape shape
           
(package private)  double[] shapePts
           
(package private)  boolean updatingBoundsFromPath
           
 
Fields inherited from class edu.umd.cs.piccolo.PNode
FILL_STRATEGY_ASPECT_COVER, FILL_STRATEGY_ASPECT_FIT, FILL_STRATEGY_EXACT_FIT, PROPERTY_BOUNDS, PROPERTY_CHILDREN, PROPERTY_CHILDREN_PICKABLE, PROPERTY_CLIENT_PROPERTIES, PROPERTY_CODE_BOUNDS, PROPERTY_CODE_CHILDREN, PROPERTY_CODE_CHILDREN_PICKABLE, PROPERTY_CODE_CLIENT_PROPERTIES, PROPERTY_CODE_FULL_BOUNDS, PROPERTY_CODE_PAINT, PROPERTY_CODE_PARENT, PROPERTY_CODE_PICKABLE, PROPERTY_CODE_TRANSFORM, PROPERTY_CODE_TRANSPARENCY, PROPERTY_CODE_VISIBLE, PROPERTY_FULL_BOUNDS, PROPERTY_PAINT, PROPERTY_PARENT, PROPERTY_PICKABLE, PROPERTY_TRANSFORM, PROPERTY_TRANSPARENCY, PROPERTY_VISIBLE, SCENE_GRAPH_DELEGATE
 
Fields inherited from interface java.awt.print.Printable
NO_SUCH_PAGE, PAGE_EXISTS
 
Constructor Summary
PSWTPath()
           
PSWTPath(java.awt.Shape aShape)
           
 
Method Summary
 java.awt.Shape cloneShape(java.awt.Shape aShape)
           
static PSWTPath createEllipse(float x, float y, float width, float height)
           
static PSWTPath createPolyline(float[] xp, float[] yp)
           
static PSWTPath createPolyline(java.awt.geom.Point2D[] points)
           
static PSWTPath createRectangle(float x, float y, float width, float height)
           
static PSWTPath createRoundRectangle(float x, float y, float width, float height, float arcWidth, float arcHeight)
           
 java.awt.geom.Point2D getCenter()
           
 java.awt.Paint getStrokePaint()
           
protected  void internalUpdateBounds(double x, double y, double width, double height)
          Set the bounds of this path.
 boolean intersects(java.awt.geom.Rectangle2D aBounds)
           
protected  void paint(edu.umd.cs.piccolo.util.PPaintContext paintContext)
           
 void setPathToEllipse(float x, float y, float width, float height)
           
 void setPathToPolyline(float[] xp, float[] yp)
           
 void setPathToPolyline(java.awt.geom.Point2D[] points)
           
 void setPathToRectangle(float x, float y, float width, float height)
           
 void setPathToRoundRectangle(float x, float y, float width, float height, float arcWidth, float arcHeight)
           
 void setShape(java.awt.Shape aShape)
           
 void setStrokeColor(java.awt.Paint aPaint)
           
 void updateBoundsFromPath()
           
 void updateShapePoints(java.awt.Shape aShape)
           
 
Methods inherited from class edu.umd.cs.piccolo.PNode
addActivity, addAttribute, addChild, addChild, addChildren, addClientProperty, addInputEventListener, addPropertyChangeListener, addPropertyChangeListener, animateToBounds, animateToColor, animateToPositionScaleRotation, animateToRelativePosition, animateToTransform, animateToTransparency, animateTransformToBounds, centerBoundsOnPoint, centerFullBoundsOnPoint, clone, computeFullBounds, endResizeBounds, findIntersectingNodes, fireChildPropertyChange, firePropertyChange, fullIntersects, fullPaint, fullPick, getAllNodes, getAllNodes, getAttribute, getAttribute, getBooleanAttribute, getBounds, getBoundsChanged, getBoundsReference, getBoundsVolatile, getChild, getChildBoundsInvalid, getChildBoundsVolatile, getChildPaintInvalid, getChildrenCount, getChildrenIterator, getChildrenPickable, getChildrenReference, getClientProperties, getClientProperty, getClientPropertyKeysEnumeration, getClientPropertyKeysIterator, getDoubleAttribute, getFullBounds, getFullBoundsInvalid, getFullBoundsReference, getGlobalBounds, getGlobalFullBounds, getGlobalRotation, getGlobalScale, getGlobalToLocalTransform, getGlobalTranslation, getHeight, getInputEventListeners, getIntegerAttribute, getInverseTransform, getListenerList, getLocalToGlobalTransform, getName, getOccluded, getOffset, getPaint, getPaintInvalid, getParent, getPickable, getPropertyChangeParentMask, getRoot, getRotation, getScale, getTransform, getTransformReference, getTransparency, getUnionOfChildrenBounds, getVisible, getWidth, getX, getXOffset, getY, getYOffset, globalToLocal, globalToLocal, globalToLocal, indexOfChild, invalidateFullBounds, invalidateLayout, invalidatePaint, isAncestorOf, isDescendentOf, isDescendentOfRoot, isOpaque, layoutChildren, lerp, localToGlobal, localToGlobal, localToGlobal, localToParent, localToParent, localToParent, moveInBackOf, moveInFrontOf, moveToBack, moveToFront, offset, paintAfterChildren, paramString, parentBoundsChanged, parentToLocal, parentToLocal, parentToLocal, pick, pickAfterChildren, position, print, print, removeAllChildren, removeChild, removeChild, removeChildren, removeFromParent, removeInputEventListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaintFrom, reparent, replaceWith, resetBounds, rotate, rotateAboutPoint, rotateAboutPoint, rotateInPlace, scale, scaleAboutPoint, scaleAboutPoint, setBounds, setBounds, setBoundsChanged, setChildBoundsInvalid, setChildBoundsVolatile, setChildPaintInvalid, setChildrenPickable, setFullBoundsInvalid, setGlobalRotation, setGlobalScale, setGlobalTranslation, setHeight, setName, setOccluded, setOffset, setOffset, setPaint, setPaintInvalid, setParent, setPickable, setPropertyChangeParentMask, setRotation, setScale, setTransform, setTransparency, setVisible, setWidth, setX, setY, signalBoundsChanged, startResizeBounds, toImage, toImage, toImage, toImage, transformBy, translate, validateFullBounds, validateFullPaint
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROPERTY_SHAPE

public static final java.lang.String PROPERTY_SHAPE
The property name that identifies a change of this node's path. In any property change event the new value will be a reference to this node's path, but old value will always be null.

See Also:
Constant Field Values

updatingBoundsFromPath

boolean updatingBoundsFromPath

origShape

java.awt.Shape origShape

shape

java.awt.Shape shape

internalXForm

edu.umd.cs.piccolo.util.PAffineTransform internalXForm

inverseXForm

java.awt.geom.AffineTransform inverseXForm

shapePts

double[] shapePts
Constructor Detail

PSWTPath

public PSWTPath()

PSWTPath

public PSWTPath(java.awt.Shape aShape)
Method Detail

createRectangle

public static PSWTPath createRectangle(float x,
                                       float y,
                                       float width,
                                       float height)

createRoundRectangle

public static PSWTPath createRoundRectangle(float x,
                                            float y,
                                            float width,
                                            float height,
                                            float arcWidth,
                                            float arcHeight)

createEllipse

public static PSWTPath createEllipse(float x,
                                     float y,
                                     float width,
                                     float height)

createPolyline

public static PSWTPath createPolyline(java.awt.geom.Point2D[] points)

createPolyline

public static PSWTPath createPolyline(float[] xp,
                                      float[] yp)

getStrokePaint

public java.awt.Paint getStrokePaint()

setStrokeColor

public void setStrokeColor(java.awt.Paint aPaint)

internalUpdateBounds

protected void internalUpdateBounds(double x,
                                    double y,
                                    double width,
                                    double height)
Set the bounds of this path. This method works by scaling the path to fit into the specified bounds. This normally works well, but if the specified base bounds get too small then it is impossible to expand the path shape again since all its numbers have tended to zero, so application code may need to take this into consideration.

Overrides:
internalUpdateBounds in class edu.umd.cs.piccolo.PNode

intersects

public boolean intersects(java.awt.geom.Rectangle2D aBounds)
Overrides:
intersects in class edu.umd.cs.piccolo.PNode

updateBoundsFromPath

public void updateBoundsFromPath()

paint

protected void paint(edu.umd.cs.piccolo.util.PPaintContext paintContext)
Overrides:
paint in class edu.umd.cs.piccolo.PNode

setShape

public void setShape(java.awt.Shape aShape)

updateShapePoints

public void updateShapePoints(java.awt.Shape aShape)

cloneShape

public java.awt.Shape cloneShape(java.awt.Shape aShape)

setPathToRectangle

public void setPathToRectangle(float x,
                               float y,
                               float width,
                               float height)

setPathToRoundRectangle

public void setPathToRoundRectangle(float x,
                                    float y,
                                    float width,
                                    float height,
                                    float arcWidth,
                                    float arcHeight)

setPathToEllipse

public void setPathToEllipse(float x,
                             float y,
                             float width,
                             float height)

setPathToPolyline

public void setPathToPolyline(java.awt.geom.Point2D[] points)

setPathToPolyline

public void setPathToPolyline(float[] xp,
                              float[] yp)

getCenter

public java.awt.geom.Point2D getCenter()
Returns:
The center of this object (based on its bounds).