Class DrawingPanel

All Implemented Interfaces:
ActionListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, OSPRuntime.Disposable, Renderable
Direct Known Subclasses:
InteractivePanel, TTrack.TextLineLabel

public class DrawingPanel extends JPanel implements OSPRuntime.Disposable, 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 xmax<xmin then the coordinate scale increases from left to right. If ymax>ymin then the coordinate scale increases from bottom to top. If ymax<ymin then the coordinate scale increases from top to bottom.
Version:
1.0
Author:
Wolfgang Christian, Joshua Gould
See Also:
  • Field Details

    • messagesAsJLabels

      public static final boolean messagesAsJLabels
      See Also:
    • RECORD_PAINT_TIMES

      protected static boolean RECORD_PAINT_TIMES
    • currentTime

      protected long currentTime
    • BOTTOM_LEFT

      @Deprecated public static final int BOTTOM_LEFT
      Deprecated.
      See Also:
    • BOTTOM_RIGHT

      @Deprecated public static final int BOTTOM_RIGHT
      Deprecated.
      See Also:
    • TOP_RIGHT

      @Deprecated public static final int TOP_RIGHT
      Deprecated.
      See Also:
    • TOP_LEFT

      @Deprecated public static final int TOP_LEFT
      Deprecated.
      See Also:
    • isInteractive

      public boolean isInteractive
    • isDisposed

      protected boolean isDisposed
    • popupmenu

      protected JPopupMenu popupmenu
    • propertiesItem

      protected JMenuItem propertiesItem
      the menu items for the box
    • autoscaleItem

      protected JMenuItem autoscaleItem
      the menu items for the box
    • scaleItem

      protected JMenuItem scaleItem
      the menu items for the box
    • zoomInItem

      protected JMenuItem zoomInItem
      the menu items for the box
    • zoomOutItem

      protected JMenuItem zoomOutItem
      the menu items for the box
    • snapshotItem

      protected JMenuItem snapshotItem
      the menu items for the box
    • 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
    • lastWidth

      protected int lastWidth
    • lastHeight

      protected int lastHeight
    • bgColor

      protected 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 AffineTransform pixelTransform
    • pixelMatrix

      protected double[] pixelMatrix
    • drawableList

      protected ArrayList<Drawable> drawableList
    • offscreenImage

      protected BufferedImage offscreenImage
    • workingImage

      protected BufferedImage workingImage
    • messages

      protected MessageDrawable messages
    • scientificFormat

      protected DecimalFormat scientificFormat
    • decimalFormat

      protected DecimalFormat decimalFormat
    • mouseController

      protected MouseInputAdapter mouseController
    • showCoordinates

      protected boolean showCoordinates
    • optionController

      protected MouseInputAdapter optionController
    • zoomBox

      protected DrawingPanel.ZoomBox zoomBox
    • enableZoom

      protected boolean enableZoom
    • fixedScale

      protected boolean fixedScale
    • customInspector

      protected Window customInspector
    • dimensionSetter

      protected Dimensioned dimensionSetter
    • viewRect

      protected Rectangle viewRect
    • coordinateStrBuilder

      protected CoordinateStringBuilder coordinateStrBuilder
    • refreshDelay

      protected int refreshDelay
    • refreshTimer

      protected Timer refreshTimer
    • vidCap

      protected VideoTool vidCap
    • imageRatio

      protected double imageRatio
    • xLeftMarginPercentage

      protected double xLeftMarginPercentage
    • xRightMarginPercentage

      protected double xRightMarginPercentage
    • yTopMarginPercentage

      protected double yTopMarginPercentage
    • yBottomMarginPercentage

      protected double yBottomMarginPercentage
    • logScaleX

      protected boolean logScaleX
    • logScaleY

      protected boolean logScaleY
    • zoomDelay

      protected int zoomDelay
    • zoomCount

      protected int zoomCount
    • zoomTimer

      protected Timer zoomTimer
    • dxmin

      protected double dxmin
    • dxmax

      protected double dxmax
    • dymin

      protected double dymin
    • dymax

      protected double dymax
    • guiChangeListener

      protected PropertyChangeListener guiChangeListener
    • paintDrawables

      protected boolean paintDrawables
    • displayCoordsOnMouseMoved

      public boolean displayCoordsOnMouseMoved
  • Constructor Details

    • DrawingPanel

      public DrawingPanel()
      DrawingPanel constructor.
  • Method Details

    • getGlassPane

      public JPanel getGlassPane()
    • dispose

      public void dispose()
      Specified by:
      dispose in interface OSPRuntime.Disposable
    • setMouseListeners

      protected void setMouseListeners()
    • addMessageLabel

      public void addMessageLabel(JLabel l)
    • setFontLevel

      protected void setFontLevel(int level)
      Sets the font level.
      Parameters:
      level - the level
    • setFontFactor

      public void setFontFactor(double factor)
      Sets the font factor.
      Parameters:
      factor - the factor
    • refreshGUI

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

      protected void refreshDecimalSeparators()
      Refreshes the decimal separators.
    • buildPopupMenu

      protected void buildPopupMenu()
      Builds the default popup menu for this panel.
    • getSnapshotItem

      protected JMenuItem getSnapshotItem(ActionListener listener)
    • 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(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(ActionEvent evt)
      Performs the action for the refresh timer by rendering (redrawing) the panel.
      Specified by:
      actionPerformed in interface 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 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 BufferedImage render(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 JComponent
    • getHeight

      public int getHeight()
      Overrides:
      getHeight in class 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.
    • isValidImage

      protected boolean isValidImage()
    • paint

      public void paint(Graphics g)
      Overrides:
      paint in class JComponent
    • setPaintDrawables

      public void setPaintDrawables(boolean b)
      A method to allow bypassing of paintEverything()
      Parameters:
      b -
    • paintComponent

      public void paintComponent(Graphics g)
      Paints this component.
      Overrides:
      paintComponent in class JComponent
      Parameters:
      g -
    • getViewRect

      protected Rectangle getViewRect()
      Gets the clipping rectangle within a scroll pane viewport.
      Returns:
      the clipping rectangle
    • findViewRect

      public 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(Graphics g)
      Paints before the panel iterates through its list of Drawables.
      Parameters:
      g - Graphics
    • paintLast

      protected void paintLast(Graphics g)
      Paints after the panel iterates through its list of Drawables.
      Parameters:
      g - Graphics
    • paintEverything

      protected void paintEverything(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 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(Rectangle r)
      Overrides:
      setBounds in class 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 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 JPopupMenu getPopupMenu()
      Gets the popup menu.
    • setPopupMenu

      public void setPopupMenu(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(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 Rectangle2D getScale()
      Gets the scale that will be used when the panel is drawn.
      Returns:
      Rectangle2D
    • getMeasure

      public Rectangle2D getMeasure()
      Gets the rectangle that bounds all measurable objects.
      Returns:
      Rectangle2D
    • getPixelTransform

      public AffineTransform getPixelTransform()
      Gets the affine transformation that converts from world to pixel coordinates.
      Returns:
      the affine transformation -- NOT A CLONE!
    • getPixelTransform

      public AffineTransform getPixelTransform(AffineTransform tr)
    • 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(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(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(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(Graphics g, ArrayList<Drawable> tempList)
      Paints all the drawable objects in the panel.
      Parameters:
      g -
    • 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(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(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

      public <T extends Drawable> void removeDrawables(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:
    • 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 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
    • getDrawablesNoClone

      public ArrayList<Drawable> getDrawablesNoClone()
    • getDrawables

      public <T extends Drawable> ArrayList<T> getDrawables(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:
    • getFirstDrawable

      public <T extends Drawable> T getFirstDrawable(Class<T> type)
    • getDrawablesExcept

      public <T extends Drawable> ArrayList<T> getDrawablesExcept(Class<T> type, Drawable except)
    • getObjectOfClass

      public <T extends Drawable> ArrayList<T> getObjectOfClass(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, which may be null to include all types
      Returns:
      the list
      See Also:
    • getDrawablesExcept

      public ArrayList<Drawable> getDrawablesExcept(Class<?> type)
    • getDrawables

      protected <T extends Drawable> ArrayList<T> getDrawables(Class<T> type, boolean allowSubtypes, Drawable except, ArrayList<T> ret)
    • 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(String msg)
      Shows a message in a yellow text box in the lower right hand corner.
      Parameters:
      msg -
    • setMessage

      public boolean setMessage(String msg, int location)
      Shows a message in a yellow text box. Check for the last message being the same at this location. location 0=bottom left location 1=bottom right location 2=top right location 3=top left
      Parameters:
      msg -
      location -
      Returns:
      true if the message changed; false if display was skipped
    • 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(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
    • repaint

      public void repaint(int x, int y, int w, int h)
      Overrides:
      repaint in class Component
    • repaint

      public void repaint()
      Overrides:
      repaint in class Component
    • repaintIfNecessary

      public void repaintIfNecessary()
    • isShowCoordinates

      public boolean isShowCoordinates()
      Returns true if mouse coordinates are displayed
      Returns:
      true if mouse coordinates are displayed
    • displayCoordinates

      public void displayCoordinates(MouseEvent e)
    • repaintForZoom

      public void repaintForZoom()
    • getLoader

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

      public Shape transformPath(GeneralPath s)
    • transformShape

      public Shape transformShape(Shape s)
    • dref

      public DrawingPanel dref(Object o)
    • firePropertyChange

      protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)
      Overrides:
      firePropertyChange in class Component
    • receiveToolReply

      public void receiveToolReply(Job job)