com.orsoncharts.graphics3d.swing

## Class Panel3D

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JPanel
        - - com.orsoncharts.graphics3d.swing.Panel3D

- All Implemented Interfaces:
    java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible
  Direct Known Subclasses:
    Chart3DPanel

      public class Panel3D
      extends javax.swing.JPanel
      implements java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.MouseWheelListener

  A panel that displays a set of 3D objects from a particular viewing point. The view point is maintained by the `Drawable3D` but the panel provides convenience methods to get/set it.
  NOTE: This class is serializable, but the serialization format is subject to change in future releases and should not be relied upon for persisting instances of this class.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### 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

    - ### Fields inherited from class javax.swing.JComponent

      `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

      `accessibleContext, 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

    Constructors
    Constructor and Description
    `Panel3D(Drawable3D drawable)` Creates a new panel with the specified `Drawable3D` to display.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Drawable3D` | `getDrawable()` Returns the `Drawable3D` object that is displayed in this panel.
    `protected java.awt.Point` | `getLastClickPoint()` Returns the last click point (possibly `null`).
    `double` | `getMargin()` Returns the margin, expressed as a percentage, that controls the amount of space to leave around the edges of the 3D content when the `zoomToFit()` method is called.
    `double` | `getMaxViewingDistanceMultiplier()` Returns the multiplier for the maximum viewing distance (a multiple of the minimum viewing distance).
    `double` | `getMinViewingDistance()` Returns the minimum viewing distance.
    `double` | `getPanIncrement()` Returns the angle delta for each pan left or right.
    `protected RenderingInfo` | `getRenderingInfo()` Returns the rendering info from the previous call to draw().
    `double` | `getRollIncrement()` Returns the angle delta for each roll operation.
    `double` | `getRotateIncrement()` Returns the angle delta for each rotate up or down.
    `ViewPoint3D` | `getViewPoint()` Returns the view point that is maintained by the `Drawable3D` instance on display.
    `void` | `mouseClicked(java.awt.event.MouseEvent e)`
    `void` | `mouseDragged(java.awt.event.MouseEvent e)`
    `void` | `mouseEntered(java.awt.event.MouseEvent e)`
    `void` | `mouseExited(java.awt.event.MouseEvent e)`
    `void` | `mouseMoved(java.awt.event.MouseEvent e)`
    `void` | `mousePressed(java.awt.event.MouseEvent e)`
    `void` | `mouseReleased(java.awt.event.MouseEvent e)`
    `void` | `mouseWheelMoved(java.awt.event.MouseWheelEvent mwe)` Receives notification of a mouse wheel movement and responds by moving the viewpoint in or out (zooming).
    `void` | `paintComponent(java.awt.Graphics g)` Paints the panel by asking the drawable to render a 2D projection of the objects it is managing.
    `void` | `panLeftRight(double angle)` Rotates the view point around from left to right by the specified angle and repaints the 3D scene.
    `void` | `registerForTooltips()` Registers this component with the tool tip manager.
    `void` | `setMargin(double margin)` Sets the margin that controls the amount of space to leave around the edges of the 3D content when the `zoomToFit()` method is called.
    `void` | `setMaxViewingDistanceMultiplier(double multiplier)` Sets the multiplier used to calculate the maximum viewing distance.
    `void` | `setPanIncrement(double panIncrement)` Sets the standard increment for panning left and right (a rotation specified in radians).
    `void` | `setRollIncrement(double rollIncrement)` Sets the roll increment in radians.
    `void` | `setRotateIncrement(double rotateIncrement)` Sets the vertical (up and down) rotation increment (in radians).
    `void` | `setViewPoint(ViewPoint3D vp)` Sets a new view point and repaints the panel.
    `void` | `unregisterForTooltips()` Unregisters this component with the tool tip manager.
    `void` | `zoomToFit()` Adjusts the viewing distance so that the chart fits the current panel size.
    `void` | `zoomToFit(java.awt.geom.Dimension2D size)` Adjusts the viewing distance so that the chart fits the specified size.

    - ### 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, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, 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, setVisible, 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, 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, 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, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Panel3D

          public Panel3D(Drawable3D drawable)

      Creates a new panel with the specified `Drawable3D` to display.
      Parameters:
        `drawable` - the content to display (`null` not permitted).

  - ### Method Detail

    - #### getDrawable

          public Drawable3D getDrawable()

      Returns the `Drawable3D` object that is displayed in this panel. This is specified via the panel constructor and there is no setter method to change it.
      Returns:
        The `Drawable3D` object (never `null`).

    - #### getMargin

          public double getMargin()

      Returns the margin, expressed as a percentage, that controls the amount of space to leave around the edges of the 3D content when the `zoomToFit()` method is called. The default value is `0.25` (25 percent).
      Returns:
        The margin.

    - #### setMargin

          public void setMargin(double margin)

      Sets the margin that controls the amount of space to leave around the edges of the 3D content when the `zoomToFit()` method is called.
      Parameters:
        `margin` - the margin (as a percentage, where 0.25 = 25 percent).

    - #### getMinViewingDistance

          public double getMinViewingDistance()

      Returns the minimum viewing distance. Zooming by mouse wheel or other means will not move the viewing point closer than this. The value is computed in the constructor from the dimensions of the drawable object.
      Returns:
        The minimum viewing distance.

    - #### getMaxViewingDistanceMultiplier

          public double getMaxViewingDistanceMultiplier()

      Returns the multiplier for the maximum viewing distance (a multiple of the minimum viewing distance). The default value is `8.0`.
      Returns:
        The multiplier.
      Since:
        1.3

    - #### setMaxViewingDistanceMultiplier

          public void setMaxViewingDistanceMultiplier(double multiplier)

      Sets the multiplier used to calculate the maximum viewing distance.
      Parameters:
        `multiplier` - the new multiplier.
      Since:
        1.3

    - #### getPanIncrement

          public double getPanIncrement()

      Returns the angle delta for each pan left or right. The default value is `Math.PI / 60`.
      Returns:
        The angle delta (in radians).

    - #### setPanIncrement

          public void setPanIncrement(double panIncrement)

      Sets the standard increment for panning left and right (a rotation specified in radians).
      Parameters:
        `panIncrement` - the increment (in radians).

    - #### getRotateIncrement

          public double getRotateIncrement()

      Returns the angle delta for each rotate up or down. The default value is `Math.PI / 60`.
      Returns:
        The angle delta (in radians).

    - #### setRotateIncrement

          public void setRotateIncrement(double rotateIncrement)

      Sets the vertical (up and down) rotation increment (in radians).
      Parameters:
        `rotateIncrement` - the increment (in radians).

    - #### getRollIncrement

          public double getRollIncrement()

      Returns the angle delta for each roll operation. The default value is `Math.PI / 60`.
      Returns:
        The angle delta (in radians).

    - #### setRollIncrement

          public void setRollIncrement(double rollIncrement)

      Sets the roll increment in radians.
      Parameters:
        `rollIncrement` - the increment (in radians).

    - #### getViewPoint

          public ViewPoint3D getViewPoint()

      Returns the view point that is maintained by the `Drawable3D` instance on display.
      Returns:
        The view point (never `null`).

    - #### setViewPoint

          public void setViewPoint(ViewPoint3D vp)

      Sets a new view point and repaints the panel.
      Parameters:
        `vp` - the view point (`null` not permitted).

    - #### getLastClickPoint

          protected java.awt.Point getLastClickPoint()

      Returns the last click point (possibly `null`).
      Returns:
        The last click point (possibly `null`).

    - #### getRenderingInfo

          protected RenderingInfo getRenderingInfo()

      Returns the rendering info from the previous call to draw().
      Returns:
        The rendering info (possibly `null`).

    - #### panLeftRight

          public void panLeftRight(double angle)

      Rotates the view point around from left to right by the specified angle and repaints the 3D scene. The direction relative to the world coordinates depends on the orientation of the view point.
      Parameters:
        `angle` - the angle of rotation (in radians).

    - #### zoomToFit

          public void zoomToFit()

      Adjusts the viewing distance so that the chart fits the current panel size. A margin is left (see `getMargin()` around the edges to leave room for labels etc.

    - #### zoomToFit

          public void zoomToFit(java.awt.geom.Dimension2D size)

      Adjusts the viewing distance so that the chart fits the specified size. A margin is left (see `getMargin()` around the edges to leave room for labels etc.
      Parameters:
        `size` - the target size (`null` not permitted).

    - #### paintComponent

          public void paintComponent(java.awt.Graphics g)

      Paints the panel by asking the drawable to render a 2D projection of the objects it is managing.
      Overrides:
        `paintComponent` in class `javax.swing.JComponent`
      Parameters:
        `g` - the graphics target (`null` not permitted, assumed to be an instance of `Graphics2D`).

    - #### registerForTooltips

          public void registerForTooltips()

      Registers this component with the tool tip manager.
      Since:
        1.3

    - #### unregisterForTooltips

          public void unregisterForTooltips()

      Unregisters this component with the tool tip manager.
      Since:
        1.3

    - #### mouseClicked

          public void mouseClicked(java.awt.event.MouseEvent e)

      Specified by:
        `mouseClicked` in interface `java.awt.event.MouseListener`

    - #### mouseEntered

          public void mouseEntered(java.awt.event.MouseEvent e)

      Specified by:
        `mouseEntered` in interface `java.awt.event.MouseListener`

    - #### mouseExited

          public void mouseExited(java.awt.event.MouseEvent e)

      Specified by:
        `mouseExited` in interface `java.awt.event.MouseListener`

    - #### mousePressed

          public void mousePressed(java.awt.event.MouseEvent e)

      Specified by:
        `mousePressed` in interface `java.awt.event.MouseListener`

    - #### mouseReleased

          public void mouseReleased(java.awt.event.MouseEvent e)

      Specified by:
        `mouseReleased` in interface `java.awt.event.MouseListener`

    - #### mouseDragged

          public void mouseDragged(java.awt.event.MouseEvent e)

      Specified by:
        `mouseDragged` in interface `java.awt.event.MouseMotionListener`

    - #### mouseMoved

          public void mouseMoved(java.awt.event.MouseEvent e)

      Specified by:
        `mouseMoved` in interface `java.awt.event.MouseMotionListener`

    - #### mouseWheelMoved

          public void mouseWheelMoved(java.awt.event.MouseWheelEvent mwe)

      Receives notification of a mouse wheel movement and responds by moving the viewpoint in or out (zooming).
      Specified by:
        `mouseWheelMoved` in interface `java.awt.event.MouseWheelListener`
      Parameters:
        `mwe` - the mouse wheel event.