org.opensourcephysics.display
Class DrawingPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.opensourcephysics.display.DrawingPanel
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, Renderable
Direct Known Subclasses:
InteractivePanel

public class DrawingPanel
extends javax.swing.JPanel
implements java.awt.event.ActionListener, Renderable

DrawingPanel renders drawable objects on its canvas. DrawingPanel provides drawable objects with methods that transform from world coordinates to pixel coordinates. World coordinates are defined by xmin, xmax, ymin, and ymax. These values are recalculated on-the-fly from preferred values if the aspect ratio is unity; otherwise, preferred values are used. If xmax>xmin then the coordinate scale increases from right to left. If xmaxymin then the coordinate scale increases from bottom to top. If ymax

Version:
1.0
Author:
Wolfgang Christian, Joshua Gould
See Also:
Serialized Form

Nested Class Summary
 class DrawingPanel.ZoomBox
          ZoomBox creates an on-screen rectangle using XORMode for fast redrawing.
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.BaselineResizeBehavior
 
Field Summary
static int BOTTOM_LEFT
          Message box location
static int BOTTOM_RIGHT
          Message box location
static int TOP_LEFT
          Message box location
static int TOP_RIGHT
          Message box location
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DrawingPanel()
          DrawingPanel constructor.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent evt)
          Performs the action for the refresh timer by rendering (redrawing) the panel.
 void addDrawable(Drawable drawable)
          Adds a drawable object to the drawable list.
 void addDrawableAtIndex(int index, Drawable drawable)
          Adds a drawable object to the drawable list at the given index.
 void addDrawables(java.util.Collection<Drawable> drawables)
          Adds a collection of drawable objects to the drawable list.
 void addOptionController()
          Removes the option controller.
 void clear()
          Removes all drawable objects from the drawable list.
 void enableInspector(boolean isEnabled)
          Enables the popup inspector option.
 double getAspectRatio()
          Gets the ratio of pixels per unit in the x and y directions.
 int getBottomGutter()
          Gets the bottom gutter of this DrawingPanel.
 CoordinateStringBuilder getCoordinateStringBuilder()
          Gets the CoordinateStringBuilder that converts mouse events into a string showing world coordinates.
 Dimensioned getDimensionSetter()
          Gets the object that sets the gutters for this panel.
 java.util.ArrayList<Drawable> getDrawables()
          Gets the cloned list of Drawable objects.
<T extends Drawable>
java.util.ArrayList<T>
getDrawables(java.lang.Class<T> type)
          Gets Drawable objects of an assignable type.
 javax.swing.JPanel getGlassPanel()
          Gets the glass panel.
 int[] getGutters()
          Gets the gutters.
 int getHeight()
           
 double getImageRatio()
          Gets the ratio of the drawing image to the panel.
 int getLeftGutter()
          Gets the left gutter of this DrawingPanel.
static XML.ObjectLoader getLoader()
          Returns an XML.ObjectLoader to save and load object data.
 double getMaxPixPerUnit()
          Gets the larger of x or y pixels per world unit.
 java.awt.geom.Rectangle2D getMeasure()
          Gets the rectangle that bounds all measurable objects.
<T extends Drawable>
java.util.ArrayList<T>
getObjectOfClass(java.lang.Class<T> type)
          Gets objects of a specific class from the drawables list.
 double[] getPixelMatrix()
          Retrieves the 6 specifiable values in the pixel transformation matrix and places them into an array of double precisions values.
 java.awt.geom.AffineTransform getPixelTransform()
          Gets the affine transformation that converts from world to pixel coordinates.
 javax.swing.JPopupMenu getPopupMenu()
          Gets the popup menu.
 double getPreferredXMax()
          Gets the preferred x world coordinate for the right-hand side of the drawing area.
 double getPreferredXMin()
          Gets the preferred x world coordinate for the left-hand side of the drawing area.
 double getPreferredYMax()
          Gets the preferred y world coordinate for the top of the drawing area.
 double getPreferredYMin()
          Gets the preferred y world coordinate for the bottom of the drawing area.
 int getRightGutter()
          Gets the right gutter of this DrawingPanel.
 java.awt.geom.Rectangle2D getScale()
          Gets the scale that will be used when the panel is drawn.
 int getTopGutter()
          Gets the bottom gutter of this DrawingPanel.
 VideoTool getVideoTool()
          Gets the video capture tool.
 int getWidth()
           
 double getXMax()
          Gets the x world coordinate for the right-hand side of the drawing area.
 double getXMin()
          Gets the x world coordinate for the left-hand side of the drawing area.
 double getXPixPerUnit()
          Gets the number of pixels per world unit in the x direction.
 double getYMax()
          Gets the y world coordinate for the top of the drawing area.
 double getYMin()
          Gets the y world coordinate for the bottom of the drawing area.
 double getYPixPerUnit()
          Gets the number of pixels per world unit in the y direction.
 DrawingPanel.ZoomBox getZoomBox()
          Returns the internal ZoomBox object
 boolean hasInspector()
          Determines if the user can examine and change the scale at run-time by right-clicking.
 void hideInspector()
          Hides the drawing panel properties inspector.
 void invalidateImage()
          Invalidate the offscreen image so that it is rendered during the next repaint operation if buffering is enabled.
 boolean isAdjustableGutter()
          Gets the adjustableGutter flag.
 boolean isAntialiasShapeOn()
          Gets flag for shape antialiasing.
 boolean isAntialiasTextOn()
          Gets flag for text antialiasing.
 boolean isAutoscaleX()
          Determines if the x axis autoscale property is true.
 boolean isAutoscaleXMax()
          Determines if the horizontal maximum value is autoscaled.
 boolean isAutoscaleXMin()
          Determines if the horizontal minimum value is autoscaled.
 boolean isAutoscaleY()
          Determines if the y axis autoscale property is true.
 boolean isAutoscaleYMax()
          Determines if the vertical maximum value is autoscaled.
 boolean isAutoscaleYMin()
          Determines if the vertical minimum value is autoscaled.
 boolean isBuffered()
           
 boolean isClipAtGutter()
          Gets the clip at gutter flag.
 boolean isFixedScale()
          Determines if the scale is fixed.
 boolean isIconified()
          Gets the iconified flag from the top level frame.
 boolean isLogScaleX()
          Gets the logScaleX value.
 boolean isLogScaleY()
          Gets the logScaleY value.
 boolean isPointInside(double x, double y)
          Determines if the x and y point is inside.
 boolean isSquareAspect()
          Determines if the number of pixels per unit is the same for both x and y.
 boolean isZoom()
          Determines if the user can change scale by dragging the mouse.
 boolean isZoomEvent(java.awt.event.MouseEvent e)
          Returns true if an event starts or ends a zoom operation.
 void limitAutoscaleX(double floor, double ceil)
          Limits the xmin and xmax values during autoscaling so that the mininimum value will be no greater than the floor and the maximum value will be no smaller than the ceil.
 void limitAutoscaleY(double floor, double ceil)
          Limits ymin and ymax values during autoscaling so that the mininimum value will be no greater than the floor and the maximum value will be no smaller than the ceil.
 void measure()
          Sets the scale based on the max and min values of all measurable objects.
 void paint(java.awt.Graphics g)
           
 void paintComponent(java.awt.Graphics g)
          Paints this component.
 double pixToX(int pix)
          Converts pixel to x world units.
 double pixToY(int pix)
          Converts pixel to x world units.
 double[] project(double[] coordinate, double[] pixel)
          Projects a 2D or 3D world coordinate to a pixel coordinate.
 void recomputeTransform()
          Recomputes the pixel transforamtion based on the current minimum and maximum values and the gutters.
 void removeDrawable(Drawable drawable)
          Removes a drawable object from the drawable list.
<T extends Drawable>
void
removeDrawables(java.lang.Class<T> c)
          Removes all objects assignable to the given class from the drawable list.
<T extends Drawable>
void
removeObjectsOfClass(java.lang.Class<T> c)
          Removes all objects of the given class from the drawable list.
 void removeOptionController()
          Removes the option controller.
 java.awt.image.BufferedImage render()
          Paints all drawables onto an offscreen image buffer and copies this image onto the screen.
 java.awt.image.BufferedImage render(java.awt.image.BufferedImage image)
          Paints all drawables onto an image.
 void replaceDrawable(Drawable oldDrawable, Drawable newDrawable)
          Replaces a drawable object with another drawable.
 void resetGutters()
          Resets the gutters to their preferred values.
 void scale()
          Sets axis scales if autoscale is true using the max and min values of the measurable objects.
 void setAdjustableGutter(boolean adjustable)
          Sets adjustable gutters.
 void setAntialiasShapeOn(boolean on)
          Set flag for shape antialiasing.
 void setAntialiasTextOn(boolean on)
          Set flag for text antialiasing.
 void setAutoscaleMargin(double _autoscaleMargin)
          Sets the size of the margin during an autoscale operation.
 void setAutoscaleX(boolean autoscale)
          Autoscale the x axis using min and max values.
 void setAutoscaleY(boolean autoscale)
          Autoscale the y axis using min and max values.
 void setBounds(int x, int y, int width, int height)
          Moves and resizes this component.
 void setBounds(java.awt.Rectangle r)
           
 void setBuffered(boolean _buffered)
          Sets the buffered image option.
 void setClipAtGutter(boolean clip)
          Sets the panel to exclude the gutter from the drawing.
 void setCoordinateStringBuilder(CoordinateStringBuilder builder)
          Sets the CoordinateStringBuilder that converts mouse events into a string showing world coordinates.
 void setCustomInspector(java.awt.Window w)
          Sets a custom properties inspector window.
 void setFixedScale(boolean fixed)
          Sets the fixed scale property.
 void setGutters(int[] gutters)
          Sets the gutters using the given array.
 void setGutters(int left, int top, int right, int bottom)
          Sets gutters around the drawing area.
 void setIgnoreRepaint(boolean ignoreRepaint)
           
 void setMessage(java.lang.String msg)
          Shows a message in a yellow text box in the lower right hand corner.
 void setMessage(java.lang.String msg, int location)
          Shows a message in a yellow text box.
 void setMouseCursor(java.awt.Cursor cursor)
          Sets the mouse cursor.
 void setPixelScale()
          Calculates min and max values and the affine transformation based on the current size of the panel and the squareAspect boolean.
 void setPixelsPerUnit(boolean enable, double xPixPerUnit, double yPixPerUnit)
          Sets the scale using pixels per unit.
 void setPopupMenu(javax.swing.JPopupMenu menu)
          Sets the popup menu.
 void setPreferredGutters(int left, int top, int right, int bottom)
          Sets preferred gutters around the drawing area.
 void setPreferredMinMax(double xmin, double xmax, double ymin, double ymax)
          Sets the preferred scale in the vertical and horizontal direction.
 void setPreferredMinMax(double xmin, double xmax, double ymin, double ymax, boolean invalidateImage)
          Sets the preferred scale in the vertical and horizontal direction.
 void setPreferredMinMaxX(double xmin, double xmax)
          Sets the preferred scale in the horizontal direction.
 void setPreferredMinMaxY(double ymin, double ymax)
          Sets the preferred scale in the vertical direction.
 void setShowCoordinates(boolean show)
          Show the coordinates in the text box in the lower left hand corner.
 void setSquareAspect(boolean val)
          Sets the aspect ratio for horizontal to vertical to unity when true<\code>.
 void setVideoTool(VideoTool videoCap)
          Sets the video tool.
 void setVisible(boolean vis)
          Makes the component visible or invisible.
 void setXLeftMarginPercentage(double _percentage)
          Sets the extra percentage on the X left margin during an autoscale operation.
 void setXMarginPercentage(double _percentage)
          Sets the extra percentage on the X left and right margins during an autoscale operation.
 void setXMarginPercentage(double _leftPercentage, double _rightPercentage)
          Sets the extra percentage on the X left and right margins during an autoscale operation.
 void setXRightMarginPercentage(double _percentage)
          Sets the extra percentage on the X left margin during an autoscale operation.
 void setYBottomMarginPercentage(double _percentage)
          Sets the extra percentage on the X left margin during an autoscale operation.
 void setYMarginPercentage(double _percentage)
          Sets the extra percentage on the Y top and bottom margin during an autoscale operation.
 void setYMarginPercentage(double _bottomPercentage, double _topPercentage)
          Sets the extra percentage on the Y top and bottom margin during an autoscale operation.
 void setYTopMarginPercentage(double _percentage)
          Sets the extra percentage on the Y top margin during an autoscale operation.
 void setZoom(boolean _enableZoom)
          Sets the zoom option to allow the user to change scale by dragging the mouse.
 void showInspector()
          Shows the drawing panel properties inspector.
 void snapshot()
          Creates a snapshot using an image of the content.
 void validateImage()
          Validate the offscreen image to insure that the render method will execute.
 float xToGraphics(double x)
          Converts x from world to graphics device units.
 int xToPix(double x)
          Converts x from world to pixel units.
 float yToGraphics(double y)
          Converts y from world to graphics device units.
 int yToPix(double y)
          Converts y from world to pixel units.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BOTTOM_LEFT

public static final int BOTTOM_LEFT
Message box location

See Also:
Constant Field Values

BOTTOM_RIGHT

public static final int BOTTOM_RIGHT
Message box location

See Also:
Constant Field Values

TOP_RIGHT

public static final int TOP_RIGHT
Message box location

See Also:
Constant Field Values

TOP_LEFT

public static final int TOP_LEFT
Message box location

See Also:
Constant Field Values
Constructor Detail

DrawingPanel

public DrawingPanel()
DrawingPanel constructor.

Method Detail

setAutoscaleMargin

public void setAutoscaleMargin(double _autoscaleMargin)
Sets the size of the margin during an autoscale operation.

Parameters:
_autoscaleMargin -

setXMarginPercentage

public void setXMarginPercentage(double _percentage)
Sets the extra percentage on the X left and right margins during an autoscale operation.

Parameters:
_percentage -

setXMarginPercentage

public void setXMarginPercentage(double _leftPercentage,
                                 double _rightPercentage)
Sets the extra percentage on the X left and right margins during an autoscale operation.

Parameters:
_percentage -

setXLeftMarginPercentage

public void setXLeftMarginPercentage(double _percentage)
Sets the extra percentage on the X left margin during an autoscale operation.

Parameters:
_percentage -

setXRightMarginPercentage

public void setXRightMarginPercentage(double _percentage)
Sets the extra percentage on the X left margin during an autoscale operation.

Parameters:
_percentage -

setYMarginPercentage

public void setYMarginPercentage(double _percentage)
Sets the extra percentage on the Y top and bottom margin during an autoscale operation.

Parameters:
_percentage -

setYMarginPercentage

public void setYMarginPercentage(double _bottomPercentage,
                                 double _topPercentage)
Sets the extra percentage on the Y top and bottom margin during an autoscale operation.

Parameters:
_percentage -

setYTopMarginPercentage

public void setYTopMarginPercentage(double _percentage)
Sets the extra percentage on the Y top margin during an autoscale operation.

Parameters:
_percentage -

setYBottomMarginPercentage

public void setYBottomMarginPercentage(double _percentage)
Sets the extra percentage on the X left margin during an autoscale operation.

Parameters:
_percentage -

setClipAtGutter

public void setClipAtGutter(boolean clip)
Sets the panel to exclude the gutter from the drawing.

Parameters:
clip - true<\code> to clip; false<\code> otherwise

isClipAtGutter

public boolean isClipAtGutter()
Gets the clip at gutter flag.

Returns:
true<\code> if drawing is clipped at the gutter; false<\code> otherwise

setAdjustableGutter

public void setAdjustableGutter(boolean adjustable)
Sets adjustable gutters. Axes are allowed to adjust the gutter size.

Parameters:
fixed - true<\code> if gutters remain constant

isAdjustableGutter

public boolean isAdjustableGutter()
Gets the adjustableGutter flag. Adjustable gutters change as the panel is resized.

Returns:
true<\code> if gutters are adjustable

setMouseCursor

public void setMouseCursor(java.awt.Cursor cursor)
Sets the mouse cursor.

Parameters:
cursor -

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
Performs the action for the refresh timer by rendering (redrawing) the panel.

Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
evt -

isIconified

public boolean isIconified()
Gets the iconified flag from the top level frame.

Returns:
boolean true if frame is iconified; false otherwise

render

public java.awt.image.BufferedImage render()
Paints all drawables onto an offscreen image buffer and copies this image onto the screen.

Specified by:
render in interface Renderable
Returns:
the image buffer

render

public java.awt.image.BufferedImage render(java.awt.image.BufferedImage image)
Paints all drawables onto an image.

Specified by:
render in interface Renderable
Parameters:
image -
Returns:
the image buffer

getWidth

public int getWidth()
Overrides:
getWidth in class javax.swing.JComponent

getHeight

public int getHeight()
Overrides:
getHeight in class javax.swing.JComponent

getImageRatio

public double getImageRatio()
Gets the ratio of the drawing image to the panel.

Returns:
double

invalidateImage

public void invalidateImage()
Invalidate the offscreen image so that it is rendered during the next repaint operation if buffering is enabled.


validateImage

public void validateImage()
Validate the offscreen image to insure that the render method will execute.


paint

public void paint(java.awt.Graphics g)
Overrides:
paint in class javax.swing.JComponent

paintComponent

public void paintComponent(java.awt.Graphics g)
Paints this component.

Overrides:
paintComponent in class javax.swing.JComponent
Parameters:
g -

setAutoscaleX

public void setAutoscaleX(boolean autoscale)
Autoscale the x axis using min and max values. from measurable objects.

Parameters:
autoscale -

isAutoscaleX

public boolean isAutoscaleX()
Determines if the x axis autoscale property is true.

Returns:
true<\code> if autoscaled.

isAutoscaleXMax

public boolean isAutoscaleXMax()
Determines if the horizontal maximum value is autoscaled.

Returns:
true<\code> if xmax is autoscaled.

isAutoscaleXMin

public boolean isAutoscaleXMin()
Determines if the horizontal minimum value is autoscaled.

Returns:
true<\code> if xmin is autoscaled.

setAutoscaleY

public void setAutoscaleY(boolean autoscale)
Autoscale the y axis using min and max values. from measurable objects.

Parameters:
autoscale -

isAutoscaleY

public boolean isAutoscaleY()
Determines if the y axis autoscale property is true.

Returns:
true<\code> if autoscaled.

isAutoscaleYMax

public boolean isAutoscaleYMax()
Determines if the vertical maximum value is autoscaled.

Returns:
true<\code> if ymax is autoscaled.

isAutoscaleYMin

public boolean isAutoscaleYMin()
Determines if the vertical minimum value is autoscaled.

Returns:
true<\code> if ymin is autoscaled.

isLogScaleX

public boolean isLogScaleX()
Gets the logScaleX value.

Returns:
boolean

isLogScaleY

public boolean isLogScaleY()
Gets the logScaleY value.

Returns:
boolean

setBounds

public void setBounds(int x,
                      int y,
                      int width,
                      int height)
Moves and resizes this component. The new location of the top-left corner is specified by x and y, and the new size is specified by width and height.

Overrides:
setBounds in class java.awt.Component
Parameters:
x - The new x-coordinate of this component.
y - The new y-coordinate of this component.
width - The new width of this component.
height - The new height of this component.

setBounds

public void setBounds(java.awt.Rectangle r)
Overrides:
setBounds in class java.awt.Component

setBuffered

public void setBuffered(boolean _buffered)
Sets the buffered image option. Buffered panels copy the offscreen image into the panel during a repaint unless the image has been invalidated. Use the render() method to draw the image immediately.

Parameters:
_buffered -

isBuffered

public boolean isBuffered()

setVisible

public void setVisible(boolean vis)
Makes the component visible or invisible. Overrides JComponent.setVisible.

Overrides:
setVisible in class javax.swing.JComponent
Parameters:
vis - true to make the component visible; false to make it invisible

limitAutoscaleX

public void limitAutoscaleX(double floor,
                            double ceil)
Limits the xmin and xmax values during autoscaling so that the mininimum value will be no greater than the floor and the maximum value will be no smaller than the ceil. Setting a floor or ceil value to Double.NaN<\code> will disable that limit.

Parameters:
floor - the xfloor value
ceil - the xceil value

limitAutoscaleY

public void limitAutoscaleY(double floor,
                            double ceil)
Limits ymin and ymax values during autoscaling so that the mininimum value will be no greater than the floor and the maximum value will be no smaller than the ceil. Setting a floor or ceil value to Double.NaN<\code> will disable that limit.

Parameters:
floor - the yfloor value
ceil - the yceil value

setPixelsPerUnit

public void setPixelsPerUnit(boolean enable,
                             double xPixPerUnit,
                             double yPixPerUnit)
Sets the scale using pixels per unit.

Parameters:
enable - boolean enable fixed pixels per unit
xPixPerUnit - double
yPixPerUnit - double

setPreferredMinMax

public void setPreferredMinMax(double xmin,
                               double xmax,
                               double ymin,
                               double ymax,
                               boolean invalidateImage)
Sets the preferred scale in the vertical and horizontal direction.

Parameters:
xmin -
xmax -
ymin -
ymax -
invalidateImage - invalidates image if min/max have changed

setPreferredMinMax

public void setPreferredMinMax(double xmin,
                               double xmax,
                               double ymin,
                               double ymax)
Sets the preferred scale in the vertical and horizontal direction.

Parameters:
xmin -
xmax -
ymin -
ymax -

setPreferredMinMaxX

public void setPreferredMinMaxX(double xmin,
                                double xmax)
Sets the preferred scale in the horizontal direction.

Parameters:
xmin - the minimum value
xmax - the maximum value

setPreferredMinMaxY

public void setPreferredMinMaxY(double ymin,
                                double ymax)
Sets the preferred scale in the vertical direction.

Parameters:
ymin -
ymax -

setSquareAspect

public void setSquareAspect(boolean val)
Sets the aspect ratio for horizontal to vertical to unity when true<\code>.

Parameters:
val -

isSquareAspect

public boolean isSquareAspect()
Determines if the number of pixels per unit is the same for both x and y.

Returns:
true<\code> if squareAspect

setAntialiasTextOn

public void setAntialiasTextOn(boolean on)
Set flag for text antialiasing.


isAntialiasTextOn

public boolean isAntialiasTextOn()
Gets flag for text antialiasing.


setAntialiasShapeOn

public void setAntialiasShapeOn(boolean on)
Set flag for shape antialiasing.


isAntialiasShapeOn

public boolean isAntialiasShapeOn()
Gets flag for shape antialiasing.


isPointInside

public boolean isPointInside(double x,
                             double y)
Determines if the x and y point is inside.

Parameters:
x - the coordinate in world units
y - the coordinate in world units
Returns:
true<\code> if point is inside; false<\code> otherwise

isFixedScale

public boolean isFixedScale()
Determines if the scale is fixed.

Returns:
true<\code> if scale is fixed

setFixedScale

public void setFixedScale(boolean fixed)
Sets the fixed scale property. If fixed, the user cannot change the scale.

Parameters:
fixed - true<\code> to prevent user changes to scale

isZoom

public boolean isZoom()
Determines if the user can change scale by dragging the mouse.

Returns:
true<\code> if zoom is enabled and scale is not fixed

setZoom

public void setZoom(boolean _enableZoom)
Sets the zoom option to allow the user to change scale by dragging the mouse.

Parameters:
_enableZoom - true<\code> if zoom is enabled

getZoomBox

public DrawingPanel.ZoomBox getZoomBox()
Returns the internal ZoomBox object

Returns:
ZoomBox

snapshot

public void snapshot()
Creates a snapshot using an image of the content.


hasInspector

public boolean hasInspector()
Determines if the user can examine and change the scale at run-time by right-clicking.

Returns:
true<\code> if inspector is enabled

enableInspector

public void enableInspector(boolean isEnabled)
Enables the popup inspector option. The default inspector shows a popup menu by right-clicking.

Parameters:
isEnabled - true<\code> if the inspector option is enabled; false<\code> otherwise

getPopupMenu

public javax.swing.JPopupMenu getPopupMenu()
Gets the popup menu.


setPopupMenu

public void setPopupMenu(javax.swing.JPopupMenu menu)
Sets the popup menu.


showInspector

public void showInspector()
Shows the drawing panel properties inspector.


hideInspector

public void hideInspector()
Hides the drawing panel properties inspector.


setCustomInspector

public void setCustomInspector(java.awt.Window w)
Sets a custom properties inspector window.

Parameters:
w - the new inspector window

setVideoTool

public void setVideoTool(VideoTool videoCap)
Sets the video tool. May be set to null.

Parameters:
videoCap - the video capture tool

getVideoTool

public VideoTool getVideoTool()
Gets the video capture tool. May be null.

Returns:
the video capture tool

getAspectRatio

public double getAspectRatio()
Gets the ratio of pixels per unit in the x and y directions.

Returns:
the aspect ratio

getXPixPerUnit

public double getXPixPerUnit()
Gets the number of pixels per world unit in the x direction.

Returns:
pixels per unit

getYPixPerUnit

public double getYPixPerUnit()
Gets the number of pixels per world unit in the y direction. Y pixels per unit is positive if y increases from bottom to top.

Returns:
pixels per unit

getMaxPixPerUnit

public double getMaxPixPerUnit()
Gets the larger of x or y pixels per world unit.

Returns:
pixels per unit

getXMin

public double getXMin()
Gets the x world coordinate for the left-hand side of the drawing area.

Returns:
xmin

getPreferredXMin

public double getPreferredXMin()
Gets the preferred x world coordinate for the left-hand side of the drawing area.

Returns:
xmin

getXMax

public double getXMax()
Gets the x world coordinate for the right-hand side of the drawing area.

Returns:
xmax

getPreferredXMax

public double getPreferredXMax()
Gets the preferred x world coordinate for the right-hand side of the drawing area.

Returns:
xmin

getYMax

public double getYMax()
Gets the y world coordinate for the top of the drawing area.

Returns:
ymax

getPreferredYMax

public double getPreferredYMax()
Gets the preferred y world coordinate for the top of the drawing area.

Returns:
xmin

getYMin

public double getYMin()
Gets the y world coordinate for the bottom of the drawing area.

Returns:
ymin

getPreferredYMin

public double getPreferredYMin()
Gets the preferred y world coordinate for the bottom of the drawing area.

Returns:
xmin

getCoordinateStringBuilder

public CoordinateStringBuilder getCoordinateStringBuilder()
Gets the CoordinateStringBuilder that converts mouse events into a string showing world coordinates.

Returns:
CoordinateStringBuilder

setCoordinateStringBuilder

public void setCoordinateStringBuilder(CoordinateStringBuilder builder)
Sets the CoordinateStringBuilder that converts mouse events into a string showing world coordinates.


getScale

public java.awt.geom.Rectangle2D getScale()
Gets the scale that will be used when the panel is drawn.

Returns:
Rectangle2D

getMeasure

public java.awt.geom.Rectangle2D getMeasure()
Gets the rectangle that bounds all measurable objects.

Returns:
Rectangle2D

getPixelTransform

public java.awt.geom.AffineTransform getPixelTransform()
Gets the affine transformation that converts from world to pixel coordinates.

Returns:
the affine transformation

getPixelMatrix

public double[] getPixelMatrix()
Retrieves the 6 specifiable values in the pixel transformation matrix and places them into an array of double precisions values. The values are stored in the array as { m00 m10 m01 m11 m02 m12 }.

Returns:
the transformation matrix

setPixelScale

public void setPixelScale()
Calculates min and max values and the affine transformation based on the current size of the panel and the squareAspect boolean.


recomputeTransform

public void recomputeTransform()
Recomputes the pixel transforamtion based on the current minimum and maximum values and the gutters.


project

public double[] project(double[] coordinate,
                        double[] pixel)
Projects a 2D or 3D world coordinate to a pixel coordinate. An (x, y) point will project to (xpix, ypix). An (x, y, z) point will project to (xpix, ypix). An (x, y, delta_x, delta_y) point will project to (xpix, ypix, delta_xpix, delta_ypix). An (x, y, z, delta_x, delta_y, delta_z) point will project to (xpix, ypix, delta_xpix, delta_ypix).

Parameters:
coordinate -
pixel -
Returns:
pixel

pixToX

public double pixToX(int pix)
Converts pixel to x world units.

Parameters:
pix -
Returns:
x panel units

xToPix

public int xToPix(double x)
Converts x from world to pixel units.

Parameters:
x -
Returns:
the pixel value of the x coordinate

xToGraphics

public float xToGraphics(double x)
Converts x from world to graphics device units.

Parameters:
x -
Returns:
the graphics device value of the x coordinate

pixToY

public double pixToY(int pix)
Converts pixel to x world units.

Parameters:
pix -
Returns:
x panel units

yToPix

public int yToPix(double y)
Converts y from world to pixel units.

Parameters:
y -
Returns:
the pixel value of the y coordinate

yToGraphics

public float yToGraphics(double y)
Converts y from world to graphics device units.

Parameters:
y -
Returns:
the graphics device value of the x coordinate

scale

public void scale()
Sets axis scales if autoscale is true using the max and min values of the measurable objects.


measure

public void measure()
Sets the scale based on the max and min values of all measurable objects. Autoscale flags are not respected.


getGlassPanel

public javax.swing.JPanel getGlassPanel()
Gets the glass panel. The glass panel is a trasparent panel that contians the messages boxes and other compotnents.

Returns:
JPanel

setIgnoreRepaint

public void setIgnoreRepaint(boolean ignoreRepaint)
Overrides:
setIgnoreRepaint in class java.awt.Component

getDimensionSetter

public Dimensioned getDimensionSetter()
Gets the object that sets the gutters for this panel.

Returns:
Dimensioned

addDrawable

public void addDrawable(Drawable drawable)
Adds a drawable object to the drawable list.

Parameters:
drawable -

addDrawables

public void addDrawables(java.util.Collection<Drawable> drawables)
Adds a collection of drawable objects to the drawable list.

Parameters:
drawables -

addDrawableAtIndex

public void addDrawableAtIndex(int index,
                               Drawable drawable)
Adds a drawable object to the drawable list at the given index.

Parameters:
drawable -

replaceDrawable

public void replaceDrawable(Drawable oldDrawable,
                            Drawable newDrawable)
Replaces a drawable object with another drawable.

Parameters:
oldDrawable - Drawable
newDrawable - Drawable

removeDrawable

public void removeDrawable(Drawable drawable)
Removes a drawable object from the drawable list.

Parameters:
drawable -

removeObjectsOfClass

public <T extends Drawable> void removeObjectsOfClass(java.lang.Class<T> c)
Removes all objects of the given class from the drawable list. Assignable subclasses are NOT removed. Interfaces CANNOT be specified.

Parameters:
c - the class
See Also:
removeDrawables(Class c)

removeDrawables

public <T extends Drawable> void removeDrawables(java.lang.Class<T> c)
Removes all objects assignable to the given class from the drawable list. Interfaces can be specified.

Parameters:
c - the class
See Also:
removeObjectsOfClass(Class c)

removeOptionController

public void removeOptionController()
Removes the option controller. The option controller may interfere with other mouse actions


addOptionController

public void addOptionController()
Removes the option controller. The option controller may interfere with other mouse actions


clear

public void clear()
Removes all drawable objects from the drawable list.


getDrawables

public java.util.ArrayList<Drawable> getDrawables()
Gets the cloned list of Drawable objects. This is a shallow clone. The same objects will be in both the drawable list and the cloned list.

Returns:
cloned list

getDrawables

public <T extends Drawable> java.util.ArrayList<T> getDrawables(java.lang.Class<T> type)
Gets Drawable objects of an assignable type. The list contains objects that are assignable from the class or interface. Returns a shallow clone. The same objects will be in the drawable list and the cloned list.

Parameters:
type - the type of Drawable object
Returns:
the cloned list
See Also:
getObjectOfClass(Class c)

getObjectOfClass

public <T extends Drawable> java.util.ArrayList<T> getObjectOfClass(java.lang.Class<T> type)
Gets objects of a specific class from the drawables list. Assignable subclasses are NOT returned. Interfaces CANNOT be specified. The same objects will be in the drawable list and the cloned list.

Parameters:
type - the class of the object
Returns:
the list
See Also:
getDrawables(Class c)

getGutters

public int[] getGutters()
Gets the gutters.


setGutters

public void setGutters(int[] gutters)
Sets the gutters using the given array.

Parameters:
gutters - int[]

setGutters

public void setGutters(int left,
                       int top,
                       int right,
                       int bottom)
Sets gutters around the drawing area.

Parameters:
left -
top -
right -
bottom -

setPreferredGutters

public void setPreferredGutters(int left,
                                int top,
                                int right,
                                int bottom)
Sets preferred gutters around the drawing area.

Parameters:
left -
top -
right -
bottom -

resetGutters

public void resetGutters()
Resets the gutters to their preferred values.


getBottomGutter

public int getBottomGutter()
Gets the bottom gutter of this DrawingPanel.

Returns:
bottom gutter

getTopGutter

public int getTopGutter()
Gets the bottom gutter of this DrawingPanel.

Returns:
right gutter

getLeftGutter

public int getLeftGutter()
Gets the left gutter of this DrawingPanel.

Returns:
left gutter

getRightGutter

public int getRightGutter()
Gets the right gutter of this DrawingPanel.

Returns:
right gutter

setMessage

public void setMessage(java.lang.String msg)
Shows a message in a yellow text box in the lower right hand corner.

Parameters:
msg -

setMessage

public void setMessage(java.lang.String msg,
                       int location)
Shows a message in a yellow text box. location 0=bottom left location 1=bottom right location 2=top right location 3=top left

Parameters:
msg -
location -

setShowCoordinates

public void setShowCoordinates(boolean show)
Show the coordinates in the text box in the lower left hand corner.

Parameters:
show -

isZoomEvent

public boolean isZoomEvent(java.awt.event.MouseEvent e)
Returns true if an event starts or ends a zoom operation. Used by OptionController. Method added by D Brown 04 Nov 2011.

Parameters:
e - a mouse event
Returns:
true if a zoom event

getLoader

public static XML.ObjectLoader getLoader()
Returns an XML.ObjectLoader to save and load object data.

Returns:
the XML.ObjectLoader