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.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  boolean adjustableGutter
           
protected  boolean antialiasShapeOn
           
protected  boolean antialiasTextOn
           
protected  javax.swing.JMenuItem autoscaleItem
           
protected  double autoscaleMargin
           
protected  boolean autoscaleX
           
protected  boolean autoscaleXMax
           
protected  boolean autoscaleXMin
           
protected  boolean autoscaleY
           
protected  boolean autoscaleYMax
           
protected  boolean autoscaleYMin
           
protected  java.awt.Color bgColor
           
protected  TextPanel blMessageBox
           
static int BOTTOM_LEFT
          Message box location
static int BOTTOM_RIGHT
          Message box location
protected  int bottomGutter
           
protected  int bottomGutterPreferred
           
protected  TextPanel brMessageBox
           
protected  boolean clipAtGutter
           
protected  CoordinateStringBuilder coordinateStrBuilder
           
protected  java.awt.Window customInspector
           
protected  java.text.DecimalFormat decimalFormat
           
protected  Dimensioned dimensionSetter
           
protected  java.util.ArrayList<Drawable> drawableList
           
protected  boolean enableZoom
           
protected  boolean fixedPixelPerUnit
           
protected  boolean fixedScale
           
protected  org.opensourcephysics.display.DrawingPanel.GlassPanel glassPanel
           
protected  OSPLayout glassPanelLayout
           
protected  int height
           
protected  int leftGutter
           
protected  int leftGutterPreferred
           
protected  javax.swing.event.MouseInputAdapter mouseController
           
protected  java.awt.image.BufferedImage offscreenImage
           
protected  javax.swing.event.MouseInputAdapter optionController
           
protected  double[] pixelMatrix
           
protected  java.awt.geom.AffineTransform pixelTransform
           
protected  javax.swing.JPopupMenu popupmenu
           
protected  javax.swing.JMenuItem propertiesItem
           
protected  int rightGutter
           
protected  int rightGutterPreferred
           
protected  javax.swing.JMenuItem scaleItem
           
protected  java.text.DecimalFormat scientificFormat
           
protected  boolean showCoordinates
           
protected  javax.swing.JMenuItem snapshotItem
           
protected  boolean squareAspect
           
protected  TextPanel tlMessageBox
           
static int TOP_LEFT
          Message box location
static int TOP_RIGHT
          Message box location
protected  int topGutter
           
protected  int topGutterPreferred
           
protected  TextPanel trMessageBox
           
protected  java.awt.Rectangle viewRect
           
protected  int width
           
protected  java.awt.image.BufferedImage workingImage
           
protected  double xceil
           
protected  double xfloor
           
protected  double xLeftMarginPercentage
           
protected  double xmax
           
protected  double xmaxPreferred
           
protected  double xmin
           
protected  double xminPreferred
           
protected  double xPixPerUnit
           
protected  double xRightMarginPercentage
           
protected  double yBottomMarginPercentage
           
protected  double yceil
           
protected  double yfloor
           
protected  double ymax
           
protected  double ymaxPreferred
           
protected  double ymin
           
protected  double yminPreferred
           
protected  double yPixPerUnit
           
protected  double yTopMarginPercentage
           
protected  DrawingPanel.ZoomBox zoomBox
           
protected  javax.swing.JMenuItem zoomInItem
           
protected  javax.swing.JMenuItem zoomOutItem
           
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, 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.
protected  void buildPopupmenu()
          Builds the default popup menu for this panel.
protected  boolean checkWorkingImage()
          Checks the image to see if the working image has the correct Dimension.
 void clear()
          Removes all drawable objects from the drawable list.
protected  void computeGutters()
          Computes the size of the gutters.
 void enableInspector(boolean isEnabled)
          Enables the popup inspector option.
protected  java.awt.Rectangle findViewRect()
          Finds the clipping rectangle if this panel is within a scroll pane viewport.
 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.
protected  java.awt.Rectangle getViewRect()
          Gets the clipping rectangle within a scroll pane viewport.
 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.
protected  boolean isValidImage()
           
 boolean isZoom()
          Determines if the user can change scale by dragging the mouse.
 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.
protected  void paintDrawableList(java.awt.Graphics g, java.util.ArrayList<Drawable> tempList)
          Paints all the drawable objects in the panel.
protected  void paintEverything(java.awt.Graphics g)
          Paints everything inside this component.
protected  void paintFirst(java.awt.Graphics g)
          Paints before the panel iterates through its list of Drawables.
protected  void paintLast(java.awt.Graphics g)
          Paints after the panel iterates through its list of Drawables.
 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.
protected  void refreshGUI()
          Refreshes the user interface in response to display changes such as Language.
 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.
protected  void scale(java.util.ArrayList<Drawable> tempList)
          Sets axis scales if autoscale is true using the max and min values of the objects in the given list.
protected  void scaleX()
          Sets the x axis scale based on the max and min values of all measurable objects.
protected  void scaleX(java.util.ArrayList<Drawable> tempList)
          Sets the x axis scale based on the max and/or min values of all measurable objects.
protected  void scaleY()
          Sets the y axis scale based on the max and min values of all measurable objects.
protected  void scaleY(java.util.ArrayList<Drawable> tempList)
          Sets the y axis scale based on the max and min values of all 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.
protected  void setFontLevel(int level)
          Sets the font level.
 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.
 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.
protected  void zoomIn()
          Zooms in to the current zoom box.
protected  void zoomOut()
          Zooms out by a factor of two.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, 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, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, 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, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, 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, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, 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, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, 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
clone, equals, finalize, 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

popupmenu

protected javax.swing.JPopupMenu popupmenu

propertiesItem

protected javax.swing.JMenuItem propertiesItem

autoscaleItem

protected javax.swing.JMenuItem autoscaleItem

scaleItem

protected javax.swing.JMenuItem scaleItem

zoomInItem

protected javax.swing.JMenuItem zoomInItem

zoomOutItem

protected javax.swing.JMenuItem zoomOutItem

snapshotItem

protected javax.swing.JMenuItem snapshotItem

leftGutter

protected int leftGutter

topGutter

protected int topGutter

rightGutter

protected int rightGutter

bottomGutter

protected int bottomGutter

leftGutterPreferred

protected int leftGutterPreferred

topGutterPreferred

protected int topGutterPreferred

rightGutterPreferred

protected int rightGutterPreferred

bottomGutterPreferred

protected int bottomGutterPreferred

clipAtGutter

protected boolean clipAtGutter

adjustableGutter

protected boolean adjustableGutter

width

protected int width

height

protected int height

bgColor

protected java.awt.Color bgColor

antialiasTextOn

protected boolean antialiasTextOn

antialiasShapeOn

protected boolean antialiasShapeOn

squareAspect

protected boolean squareAspect

autoscaleX

protected boolean autoscaleX

autoscaleY

protected boolean autoscaleY

autoscaleXMin

protected boolean autoscaleXMin

autoscaleXMax

protected boolean autoscaleXMax

autoscaleYMin

protected boolean autoscaleYMin

autoscaleYMax

protected boolean autoscaleYMax

autoscaleMargin

protected double autoscaleMargin

xminPreferred

protected double xminPreferred

xmaxPreferred

protected double xmaxPreferred

yminPreferred

protected double yminPreferred

ymaxPreferred

protected double ymaxPreferred

xfloor

protected double xfloor

xceil

protected double xceil

yfloor

protected double yfloor

yceil

protected double yceil

xmin

protected double xmin

xmax

protected double xmax

ymin

protected double ymin

ymax

protected double ymax

fixedPixelPerUnit

protected boolean fixedPixelPerUnit

xPixPerUnit

protected double xPixPerUnit

yPixPerUnit

protected double yPixPerUnit

pixelTransform

protected java.awt.geom.AffineTransform pixelTransform

pixelMatrix

protected double[] pixelMatrix

drawableList

protected java.util.ArrayList<Drawable> drawableList

offscreenImage

protected java.awt.image.BufferedImage offscreenImage

workingImage

protected java.awt.image.BufferedImage workingImage

trMessageBox

protected TextPanel trMessageBox

tlMessageBox

protected TextPanel tlMessageBox

brMessageBox

protected TextPanel brMessageBox

blMessageBox

protected TextPanel blMessageBox

scientificFormat

protected java.text.DecimalFormat scientificFormat

decimalFormat

protected java.text.DecimalFormat decimalFormat

mouseController

protected javax.swing.event.MouseInputAdapter mouseController

showCoordinates

protected boolean showCoordinates

optionController

protected javax.swing.event.MouseInputAdapter optionController

zoomBox

protected DrawingPanel.ZoomBox zoomBox

enableZoom

protected boolean enableZoom

fixedScale

protected boolean fixedScale

customInspector

protected java.awt.Window customInspector

dimensionSetter

protected Dimensioned dimensionSetter

viewRect

protected java.awt.Rectangle viewRect

coordinateStrBuilder

protected CoordinateStringBuilder coordinateStrBuilder

glassPanel

protected org.opensourcephysics.display.DrawingPanel.GlassPanel glassPanel

glassPanelLayout

protected OSPLayout glassPanelLayout

xLeftMarginPercentage

protected double xLeftMarginPercentage

xRightMarginPercentage

protected double xRightMarginPercentage

yTopMarginPercentage

protected double yTopMarginPercentage

yBottomMarginPercentage

protected double yBottomMarginPercentage
Constructor Detail

DrawingPanel

public DrawingPanel()
DrawingPanel constructor.

Method Detail

refreshGUI

protected void refreshGUI()
Refreshes the user interface in response to display changes such as Language.


setFontLevel

protected void setFontLevel(int level)
Sets the font level.

Parameters:
level - the level

buildPopupmenu

protected void buildPopupmenu()
Builds the default popup menu for this panel.


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 -

checkWorkingImage

protected boolean checkWorkingImage()
Checks the image to see if the working image has the correct Dimension. Checking is done in the event dispatch thread.

Returns:
true <\code> if the offscreen image matches the panel; false <\code> otherwise

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.


isValidImage

protected boolean isValidImage()

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 -

getViewRect

protected java.awt.Rectangle getViewRect()
Gets the clipping rectangle within a scroll pane viewport.

Returns:
the clipping rectangle

findViewRect

protected java.awt.Rectangle findViewRect()
Finds the clipping rectangle if this panel is within a scroll pane viewport.


computeGutters

protected void computeGutters()
Computes the size of the gutters. Objects, such as axes, can perform this method by implementing the Dimensioned interface.


paintFirst

protected void paintFirst(java.awt.Graphics g)
Paints before the panel iterates through its list of Drawables.

Parameters:
g - Graphics

paintLast

protected void paintLast(java.awt.Graphics g)
Paints after the panel iterates through its list of Drawables.

Parameters:
g - Graphics

paintEverything

protected void paintEverything(java.awt.Graphics g)
Paints everything inside this component.

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

zoomOut

protected void zoomOut()
Zooms out by a factor of two.


getZoomBox

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

Returns:
ZoomBox

zoomIn

protected void zoomIn()
Zooms in to the current zoom box.


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.


scale

protected void scale(java.util.ArrayList<Drawable> tempList)
Sets axis scales if autoscale is true using the max and min values of the objects in the given list.


measure

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


scaleX

protected void scaleX()
Sets the x axis scale based on the max and min values of all measurable objects. Autoscale flag is not respected.


scaleX

protected void scaleX(java.util.ArrayList<Drawable> tempList)
Sets the x axis scale based on the max and/or min values of all measurable objects. Autoscale flag is not respected.


scaleY

protected void scaleY()
Sets the y axis scale based on the max and min values of all measurable objects. Autoscale flag is not respected.


scaleY

protected void scaleY(java.util.ArrayList<Drawable> tempList)
Sets the y axis scale based on the max and min values of all measurable objects. Autoscale flag is not respected.


paintDrawableList

protected void paintDrawableList(java.awt.Graphics g,
                                 java.util.ArrayList<Drawable> tempList)
Paints all the drawable objects in the panel.

Parameters:
g -

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 ac


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 -

getLoader

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

Returns:
the XML.ObjectLoader