org.opensourcephysics.display3d.simple3d
Class DrawingPanel3D

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.display3d.simple3d.DrawingPanel3D
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.awt.print.Printable, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, Renderable, DrawingPanel3D, InteractionSource

public class DrawingPanel3D
extends javax.swing.JPanel
implements Renderable, DrawingPanel3D, java.awt.print.Printable, java.awt.event.ActionListener

Title: DrawingPanel3D

Description: The simple3D implementation of a DrawingPanel3D.

Interaction: The panel has only one target, the panel itself. If enabled, the panel issues MOUSE_ENTER, MOUSE_EXIT, MOUSE_MOVED, and MOUSE_DRAGGED InteractionEvents with target=null. When the ALT key is held, the panel also issues MOUSE_PRESSED, MOUSE_DRAGGED (again), and MOUSE_RELEASED InteractionEvents. In this second case, the getInfo() method of the event returns a double[3] with the coordinates of the point selected.

Even if the panel is disabled, the panel can be panned, zoomed and (in 3D modes) rotated and the elements in it can be enabled.

The interaction capabilities are not XML serialized.

Copyright: Open Source Physics project

Version:
June 2005
Author:
Francisco Esquembre
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
 
Nested classes/interfaces inherited from interface org.opensourcephysics.display3d.core.DrawingPanel3D
DrawingPanel3D.Loader
 
Field Summary
protected  TextPanel blMessageBox
           
protected  TextPanel brMessageBox
           
protected  org.opensourcephysics.display3d.simple3d.DrawingPanel3D.GlassPanel glassPanel
           
protected  OSPLayout glassPanelLayout
           
protected  TextPanel tlMessageBox
           
protected  TextPanel trMessageBox
           
protected  VideoTool vidCap
          The video capture tool for this panel.
protected  java.awt.Rectangle viewRect
           
 
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 org.opensourcephysics.display3d.core.DrawingPanel3D
AMBIENT_LIGHT, BACKGROUND, BOTTOM_LEFT, BOTTOM_RIGHT, DIRECTIONAL_LIGHT, MODE_XYZ, MODE_XZY, MODE_YXZ, MODE_YZX, MODE_ZXY, MODE_ZYX, POINT_LIGHT, SPOT_LIGHT, TARGET_PANEL, TOP_LEFT, TOP_RIGHT
 
Fields inherited from interface java.awt.print.Printable
NO_SUCH_PAGE, PAGE_EXISTS
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DrawingPanel3D()
          Constructor DrawingPanel3D
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent evt)
          Performs an action for the update timer by rendering a new background image
 void addElement(Element element)
          Adds an Element to this DrawingPanel3D.
 void addInteractionListener(InteractionListener listener)
          Adds the specified interaction listener to receive interaction events to any of its targets from this source.
 int getAxesMode()
          Returns the axes mode
 java.lang.String getBackgroundImage()
          Returns the background image
 Camera getCamera()
          Provides the Camera object used to project the scene in 3D modes.
 java.awt.Component getComponent()
          Getting the pointer to the real JPanel in it
 java.util.List<Element> getElements()
          Gets the (cloned) list of Elements.
 InteractionTarget getInteractionTarget(int target)
          Gives access to one of the targets of this source.
static XML.ObjectLoader getLoader()
          Returns an XML.ObjectLoader to save and load object data.
 double getPreferredMaxX()
          Gets the preferred maximum in the X coordinate
 double getPreferredMaxY()
          Gets the preferred maximum in the Y coordinate
 double getPreferredMaxZ()
          Gets the preferred maximum in the Z coordinate
 double getPreferredMinX()
          Gets the preferred minimum in the X coordinate
 double getPreferredMinY()
          Gets the preferred minimum in the Y coordinate
 double getPreferredMinZ()
          Gets the preferred minimum in the Z coordinate
 double getScaleFactorX()
          Gets the scale factor in the X axis
 double getScaleFactorY()
          Gets the scale factor in the Y axis
 double getScaleFactorZ()
          Gets the scale factor in the Z axis
 VideoTool getVideoTool()
          Gets the video capture tool.
 VisualizationHints getVisualizationHints()
          Provides the list of visualization hints that the panel uses to display the 3D scene
 void invalidate()
          Invalidates this component.
 boolean isSquareAspect()
          Whether the panel tries to keep a square aspect.
 void paintComponent(java.awt.Graphics g)
          Paints the component by copying the offscreen image into the graphics context.
 int print(java.awt.Graphics g, java.awt.print.PageFormat pageFormat, int pageIndex)
           
 void removeAllElements()
          Removes all Elements from this DrawingPanel3D
 void removeElement(Element element)
          Removes an Element from this DrawingPanel3D
 void removeInteractionListener(InteractionListener listener)
          Removes the specified interaction listener
 java.awt.image.BufferedImage render()
          Renders a representation of the object onscreen.
 java.awt.image.BufferedImage render(java.awt.image.BufferedImage image)
          Renders a representation of the object onto an image.
 void setAxesMode(int mode)
          Sets the axes mode
 void setBackgroundImage(java.lang.String _imageFile)
          Sets the background image
 void setIgnoreRepaint(boolean ignoreRepaint)
           
 void setLightEnabled(boolean _state, int nlight)
          Enable disable a light
 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 setPreferredMinMax(double minX, double maxX, double minY, double maxY, double minZ, double maxZ)
          Sets the preferred extrema for the panel.
 void setScaleFactor(double factorX, double factorY, double factorZ)
          Sets the scale factor of the scene in X,Y,Z axis.
 void setSquareAspect(boolean square)
          Whether the panel should try to keep a square aspect.
 void setVideoTool(VideoTool videoCap)
          Sets the video capture tool.
 void zoomToFit()
          Sets the preferred min and max in each dimension so that all elements currently in the panel are visible.
 
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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, 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, setBounds, setBounds, 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
 
Methods inherited from interface org.opensourcephysics.display3d.core.DrawingPanel3D
repaint
 

Field Detail

trMessageBox

protected TextPanel trMessageBox

tlMessageBox

protected TextPanel tlMessageBox

brMessageBox

protected TextPanel brMessageBox

blMessageBox

protected TextPanel blMessageBox

glassPanel

protected org.opensourcephysics.display3d.simple3d.DrawingPanel3D.GlassPanel glassPanel

glassPanelLayout

protected OSPLayout glassPanelLayout

viewRect

protected java.awt.Rectangle viewRect

vidCap

protected VideoTool vidCap
The video capture tool for this panel.

Constructor Detail

DrawingPanel3D

public DrawingPanel3D()
Constructor DrawingPanel3D

Method Detail

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
Performs an action for the update timer by rendering a new background image

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

setIgnoreRepaint

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

paintComponent

public void paintComponent(java.awt.Graphics g)
Paints the component by copying the offscreen image into the graphics context.

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

invalidate

public void invalidate()
Invalidates this component. This component and all parents above it are marked as needing to be laid out. This method can be called often, so it needs to execute quickly.

Overrides:
invalidate in class java.awt.Container
Since:
JDK1.0
See Also:
Container.validate(), Container.doLayout(), LayoutManager

render

public java.awt.image.BufferedImage render(java.awt.image.BufferedImage image)
Description copied from interface: Renderable
Renders a representation of the object onto an image.

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

render

public java.awt.image.BufferedImage render()
Description copied from interface: Renderable
Renders a representation of the object onscreen.

Specified by:
render in interface Renderable
Specified by:
render in interface DrawingPanel3D
Returns:
BufferedImage the generated image

getComponent

public java.awt.Component getComponent()
Description copied from interface: DrawingPanel3D
Getting the pointer to the real JPanel in it

Specified by:
getComponent in interface DrawingPanel3D
Returns:
JFrame

setBackgroundImage

public void setBackgroundImage(java.lang.String _imageFile)
Description copied from interface: DrawingPanel3D
Sets the background image

Specified by:
setBackgroundImage in interface DrawingPanel3D

getBackgroundImage

public java.lang.String getBackgroundImage()
Description copied from interface: DrawingPanel3D
Returns the background image

Specified by:
getBackgroundImage in interface DrawingPanel3D

setPreferredMinMax

public void setPreferredMinMax(double minX,
                               double maxX,
                               double minY,
                               double maxY,
                               double minZ,
                               double maxZ)
Description copied from interface: DrawingPanel3D
Sets the preferred extrema for the panel. This resets the camera of the panel to its default.

Specified by:
setPreferredMinMax in interface DrawingPanel3D
Parameters:
minX - double
maxX - double
minY - double
maxY - double
minZ - double
maxZ - double
See Also:
Camera

getPreferredMinX

public final double getPreferredMinX()
Description copied from interface: DrawingPanel3D
Gets the preferred minimum in the X coordinate

Specified by:
getPreferredMinX in interface DrawingPanel3D
Returns:
double

getPreferredMaxX

public final double getPreferredMaxX()
Description copied from interface: DrawingPanel3D
Gets the preferred maximum in the X coordinate

Specified by:
getPreferredMaxX in interface DrawingPanel3D
Returns:
double

getPreferredMinY

public final double getPreferredMinY()
Description copied from interface: DrawingPanel3D
Gets the preferred minimum in the Y coordinate

Specified by:
getPreferredMinY in interface DrawingPanel3D
Returns:
double

getPreferredMaxY

public final double getPreferredMaxY()
Description copied from interface: DrawingPanel3D
Gets the preferred maximum in the Y coordinate

Specified by:
getPreferredMaxY in interface DrawingPanel3D
Returns:
double

getPreferredMinZ

public final double getPreferredMinZ()
Description copied from interface: DrawingPanel3D
Gets the preferred minimum in the Z coordinate

Specified by:
getPreferredMinZ in interface DrawingPanel3D
Returns:
double

getPreferredMaxZ

public final double getPreferredMaxZ()
Description copied from interface: DrawingPanel3D
Gets the preferred maximum in the Z coordinate

Specified by:
getPreferredMaxZ in interface DrawingPanel3D
Returns:
double

zoomToFit

public void zoomToFit()
Description copied from interface: DrawingPanel3D
Sets the preferred min and max in each dimension so that all elements currently in the panel are visible.

Specified by:
zoomToFit in interface DrawingPanel3D

setSquareAspect

public void setSquareAspect(boolean square)
Description copied from interface: DrawingPanel3D
Whether the panel should try to keep a square aspect. Default value is true.

Specified by:
setSquareAspect in interface DrawingPanel3D
Parameters:
square - boolean

isSquareAspect

public boolean isSquareAspect()
Description copied from interface: DrawingPanel3D
Whether the panel tries to keep a square aspect.

Specified by:
isSquareAspect in interface DrawingPanel3D
Returns:
boolean

getVisualizationHints

public VisualizationHints getVisualizationHints()
Description copied from interface: DrawingPanel3D
Provides the list of visualization hints that the panel uses to display the 3D scene

Specified by:
getVisualizationHints in interface DrawingPanel3D
Returns:
VisualizationHints
See Also:
VisualizationHints

getCamera

public Camera getCamera()
Description copied from interface: DrawingPanel3D
Provides the Camera object used to project the scene in 3D modes.

Specified by:
getCamera in interface DrawingPanel3D
Returns:
Camera
See Also:
Camera

getVideoTool

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

Specified by:
getVideoTool in interface DrawingPanel3D
Returns:
the video capture tool

setVideoTool

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

Specified by:
setVideoTool in interface DrawingPanel3D
Parameters:
videoCap - the video capture tool

addElement

public void addElement(Element element)
Description copied from interface: DrawingPanel3D
Adds an Element to this DrawingPanel3D.

Specified by:
addElement in interface DrawingPanel3D
Parameters:
element - Element
See Also:
Element

removeElement

public void removeElement(Element element)
Description copied from interface: DrawingPanel3D
Removes an Element from this DrawingPanel3D

Specified by:
removeElement in interface DrawingPanel3D
Parameters:
element - Element
See Also:
Element

removeAllElements

public void removeAllElements()
Description copied from interface: DrawingPanel3D
Removes all Elements from this DrawingPanel3D

Specified by:
removeAllElements in interface DrawingPanel3D
See Also:
Element

getElements

public java.util.List<Element> getElements()
Description copied from interface: DrawingPanel3D
Gets the (cloned) list of Elements. (Should be synchronized.)

Specified by:
getElements in interface DrawingPanel3D
Returns:
cloned list

setScaleFactor

public void setScaleFactor(double factorX,
                           double factorY,
                           double factorZ)
Description copied from interface: DrawingPanel3D
Sets the scale factor of the scene in X,Y,Z axis.

Specified by:
setScaleFactor in interface DrawingPanel3D
Parameters:
factorX - double
factorY - double
factorZ - double

getScaleFactorX

public double getScaleFactorX()
Description copied from interface: DrawingPanel3D
Gets the scale factor in the X axis

Specified by:
getScaleFactorX in interface DrawingPanel3D
Returns:
double

getScaleFactorY

public double getScaleFactorY()
Description copied from interface: DrawingPanel3D
Gets the scale factor in the Y axis

Specified by:
getScaleFactorY in interface DrawingPanel3D
Returns:
double

getScaleFactorZ

public double getScaleFactorZ()
Description copied from interface: DrawingPanel3D
Gets the scale factor in the Z axis

Specified by:
getScaleFactorZ in interface DrawingPanel3D
Returns:
double

setAxesMode

public void setAxesMode(int mode)
Description copied from interface: DrawingPanel3D
Sets the axes mode

Specified by:
setAxesMode in interface DrawingPanel3D
Parameters:
mode - int

getAxesMode

public int getAxesMode()
Description copied from interface: DrawingPanel3D
Returns the axes mode

Specified by:
getAxesMode in interface DrawingPanel3D

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. The location must be one of the following:

Parameters:
msg -
location -

getInteractionTarget

public InteractionTarget getInteractionTarget(int target)
Description copied from interface: InteractionSource
Gives access to one of the targets of this source. Sources should document the list of their available targets.

Specified by:
getInteractionTarget in interface InteractionSource
Parameters:
target - An integer number that identifies the target in the source.
Returns:
InteractionTarget

addInteractionListener

public void addInteractionListener(InteractionListener listener)
Description copied from interface: InteractionSource
Adds the specified interaction listener to receive interaction events to any of its targets from this source.

Specified by:
addInteractionListener in interface InteractionSource
Parameters:
listener - An object that implements the InteractionListener interface
See Also:
InteractionListener

removeInteractionListener

public void removeInteractionListener(InteractionListener listener)
Description copied from interface: InteractionSource
Removes the specified interaction listener

Specified by:
removeInteractionListener in interface InteractionSource
See Also:
InteractionListener

print

public int print(java.awt.Graphics g,
                 java.awt.print.PageFormat pageFormat,
                 int pageIndex)
          throws java.awt.print.PrinterException
Specified by:
print in interface java.awt.print.Printable
Throws:
java.awt.print.PrinterException

setLightEnabled

public void setLightEnabled(boolean _state,
                            int nlight)
Description copied from interface: DrawingPanel3D
Enable disable a light

Specified by:
setLightEnabled in interface DrawingPanel3D

getLoader

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

Returns:
the XML.ObjectLoader