edu.umd.cs.piccolox.handles
Class PBoundsHandle

java.lang.Object
  extended by edu.umd.cs.piccolo.PNode
      extended by edu.umd.cs.piccolo.nodes.PPath
          extended by edu.umd.cs.piccolox.handles.PHandle
              extended by edu.umd.cs.piccolox.handles.PBoundsHandle
All Implemented Interfaces:
Printable, Serializable, Cloneable

public class PBoundsHandle
extends PHandle

PBoundsHandle a handle for resizing the bounds of another node. If a bounds handle is dragged such that the other node's width or height becomes negative then the each drag handle's locator assciated with that other node is "flipped" so that they are attached to and dragging a different corner of the nodes bounds.

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

Nested Class Summary
 
Nested classes/interfaces inherited from class edu.umd.cs.piccolo.PNode
PNode.PSceneGraphDelegate
 
Field Summary
 
Fields inherited from class edu.umd.cs.piccolox.handles.PHandle
DEFAULT_COLOR, DEFAULT_HANDLE_SHAPE, DEFAULT_HANDLE_SIZE
 
Fields inherited from class edu.umd.cs.piccolo.nodes.PPath
PROPERTY_CODE_PATH, PROPERTY_CODE_STROKE, PROPERTY_CODE_STROKE_PAINT, PROPERTY_PATH, PROPERTY_STROKE, PROPERTY_STROKE_PAINT
 
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
PBoundsHandle(PBoundsLocator locator)
          Creates a bounds handle that will be attached to the provided locator.
 
Method Summary
static void addBoundsHandlesTo(PNode node)
          Adds bounds handles to the corners and edges of the provided node.
static void addStickyBoundsHandlesTo(PNode node, PCamera camera)
          Adds stick handles (always visible regardless of scale since they are attached to the camera) to the node provided.
 void dragHandle(PDimension aLocalDimension, PInputEvent aEvent)
          Is invoked when the handle is being dragged.
 void endHandleDrag(Point2D aLocalPoint, PInputEvent aEvent)
          Call back invoked when the drag is finished.
 void flipHandleIfNeeded(boolean flipX, boolean flipY)
          Flips this bounds around if it needs to be.
 void flipSiblingBoundsHandles(boolean flipX, boolean flipY)
          Moves locators around so that they are still logically positioned.
 Cursor getCursorFor(int side)
          Returns an appropriate handle for the given side of a node.
 PBasicInputEventHandler getHandleCursorEventHandler()
          Return the event handler that is responsible for setting the mouse cursor when it enters/exits this handle.
protected  void installHandleEventHandlers()
          Installs the handlers to this particular bounds handle.
static void removeBoundsHandlesFrom(PNode node)
          Removes all bounds from the node provided.
 void startHandleDrag(Point2D aLocalPoint, PInputEvent aEvent)
          Is invoked when the a drag starts on this handle.
 
Methods inherited from class edu.umd.cs.piccolox.handles.PHandle
getHandleDraggerHandler, getLocator, parentBoundsChanged, relocateHandle, setLocator, setParent
 
Methods inherited from class edu.umd.cs.piccolo.nodes.PPath
append, closePath, createEllipse, createLine, createPolyline, createPolyline, createRectangle, createRoundRectangle, curveTo, endResizeBounds, getPathBoundsWithStroke, getPathReference, getStroke, getStrokePaint, internalUpdateBounds, intersects, lineTo, moveTo, paint, quadTo, reset, setPathTo, setPathToEllipse, setPathToPolyline, setPathToPolyline, setPathToRectangle, setStroke, setStrokePaint, startResizeBounds, updateBoundsFromPath
 
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, 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, 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, setPickable, setPropertyChangeParentMask, setRotation, setScale, setTransform, setTransparency, setVisible, setWidth, setX, setY, signalBoundsChanged, 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
 

Constructor Detail

PBoundsHandle

public PBoundsHandle(PBoundsLocator locator)
Creates a bounds handle that will be attached to the provided locator.

Parameters:
locator - locator used to position the node
Method Detail

addBoundsHandlesTo

public static void addBoundsHandlesTo(PNode node)
Adds bounds handles to the corners and edges of the provided node.

Parameters:
node - node to be extended with bounds handles

addStickyBoundsHandlesTo

public static void addStickyBoundsHandlesTo(PNode node,
                                            PCamera camera)
Adds stick handles (always visible regardless of scale since they are attached to the camera) to the node provided.

Parameters:
node - node being extended with bounds handles
camera - camera onto which handles will appear

removeBoundsHandlesFrom

public static void removeBoundsHandlesFrom(PNode node)
Removes all bounds from the node provided.

Parameters:
node - node having its handles removed from

installHandleEventHandlers

protected void installHandleEventHandlers()
Installs the handlers to this particular bounds handle.

Overrides:
installHandleEventHandlers in class PHandle

getHandleCursorEventHandler

public PBasicInputEventHandler getHandleCursorEventHandler()
Return the event handler that is responsible for setting the mouse cursor when it enters/exits this handle.

Returns:
current handler responsible for changing the mouse cursor

startHandleDrag

public void startHandleDrag(Point2D aLocalPoint,
                            PInputEvent aEvent)
Is invoked when the a drag starts on this handle.

Overrides:
startHandleDrag in class PHandle
Parameters:
aLocalPoint - point in the handle's coordinate system that is pressed
aEvent - event representing the start of the drag

dragHandle

public void dragHandle(PDimension aLocalDimension,
                       PInputEvent aEvent)
Is invoked when the handle is being dragged.

Overrides:
dragHandle in class PHandle
Parameters:
aLocalDimension - dimension representing the magnitude of the handle drag
aEvent - event responsible for the call

endHandleDrag

public void endHandleDrag(Point2D aLocalPoint,
                          PInputEvent aEvent)
Call back invoked when the drag is finished.

Overrides:
endHandleDrag in class PHandle
Parameters:
aLocalPoint - point on the handle where the drag was ended
aEvent - event responsible for the end of the drag

flipSiblingBoundsHandles

public void flipSiblingBoundsHandles(boolean flipX,
                                     boolean flipY)
Moves locators around so that they are still logically positioned. This is needed when a node is resized until its width or height is negative.

Parameters:
flipX - whether to allow flipping along the x direction
flipY - whether to allow flipping along the y direction

flipHandleIfNeeded

public void flipHandleIfNeeded(boolean flipX,
                               boolean flipY)
Flips this bounds around if it needs to be. This is required when a node is resized until either its height or width is negative.

Parameters:
flipX - whether to allow flipping along the x direction
flipY - whether to allow flipping along the y direction

getCursorFor

public Cursor getCursorFor(int side)
Returns an appropriate handle for the given side of a node.

Parameters:
side - side given as SwingConstants values.
Returns:
Appropriate cursor, or null if none can be identified.


Copyright © 1995-2010 Piccolo2D. All Rights Reserved.