org.opensourcephysics.display
Class InteractivePanel

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
                      extended by org.opensourcephysics.display.InteractivePanel
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, InteractiveMouseHandler, Renderable
Direct Known Subclasses:
PlottingPanel, VideoPanel

public class InteractivePanel
extends DrawingPanel
implements InteractiveMouseHandler

InteractivePanel is a drawing panel that invokes the handleMouseAction method in Interactive objects.

Version:
1.0
Author:
Wolfgang Christian, Francisco Esquembre
See Also:
Serialized Form

Nested Class Summary
protected  class InteractivePanel.IADMouseController
          The inner class that will handle all mouse related events.
 
Nested classes/interfaces inherited from class org.opensourcephysics.display.DrawingPanel
DrawingPanel.ZoomBox
 
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 containsInteractive
           
protected  InteractiveMouseHandler interactive
           
static int MOUSE_CLICKED
           
static int MOUSE_DRAGGED
           
static int MOUSE_ENTERED
           
static int MOUSE_EXITED
           
static int MOUSE_MOVED
           
static int MOUSE_PRESSED
           
static int MOUSE_RELEASED
           
protected  int mouseAction
           
protected  java.awt.event.MouseEvent mouseEvent
           
 
Fields inherited from class org.opensourcephysics.display.DrawingPanel
adjustableGutter, antialiasShapeOn, antialiasTextOn, autoscaleItem, autoscaleMargin, autoscaleX, autoscaleXMax, autoscaleXMin, autoscaleY, autoscaleYMax, autoscaleYMin, bgColor, blMessageBox, BOTTOM_LEFT, BOTTOM_RIGHT, bottomGutter, bottomGutterPreferred, brMessageBox, clipAtGutter, coordinateStrBuilder, customInspector, decimalFormat, dimensionSetter, drawableList, enableZoom, fixedPixelPerUnit, fixedScale, glassPanel, glassPanelLayout, height, leftGutter, leftGutterPreferred, mouseController, offscreenImage, optionController, pixelMatrix, pixelTransform, popupmenu, propertiesItem, rightGutter, rightGutterPreferred, scaleItem, scientificFormat, showCoordinates, snapshotItem, squareAspect, tlMessageBox, TOP_LEFT, TOP_RIGHT, topGutter, topGutterPreferred, trMessageBox, viewRect, width, workingImage, xceil, xfloor, xLeftMarginPercentage, xmax, xmaxPreferred, xmin, xminPreferred, xPixPerUnit, xRightMarginPercentage, yBottomMarginPercentage, yceil, yfloor, ymax, ymaxPreferred, ymin, yminPreferred, yPixPerUnit, yTopMarginPercentage, zoomBox, zoomInItem, 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
InteractivePanel()
          Constructs an InteractivePanel with an internal handler.
InteractivePanel(InteractiveMouseHandler in)
          Constructs an InteractivePanel with the given handler.
 
Method Summary
 void addDrawable(Drawable drawable)
          Adds a drawable object to the drawable list.
 void clear()
          Removes all drawable objects from the drawable list.
 Interactive getCurrentDraggable()
          Get the Interactive object that is currently being dragged.
 Interactive getInteractive()
          Gets the interactive object that was accessed by the last mouse event.
 int getMouseAction()
          Gets the last mouse action.
 int getMouseButton()
          Gets the mouse button of the last mouse event.
 int getMouseClickCount()
          Gets the click count of the last mouse event.
 int getMouseIntX()
          Gets the x pixel coordinate of the last mouse event.
 int getMouseIntY()
          Gets the y pixel coordinate of the last mouse event.
 double getMouseX()
          Gets the x world coordinate of the last mouse event.
 double getMouseY()
          Gets the y world coordinate of the last moust event
 void handleMouseAction(InteractivePanel panel, java.awt.event.MouseEvent evt)
          Handles mouse actions by dragging the current interactive drawable object.
 void saveMouseEvent(int type, java.awt.event.MouseEvent evt)
          Saves the last mouse event.
protected  void scaleX(java.util.ArrayList<Drawable> tempList)
          Sets the x 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 setInteractiveMouseHandler(InteractiveMouseHandler handler)
          Sets the interactive mouse handler.
 void setShowCoordinates(boolean show)
          Shows the coordinates in the text box in the lower left hand corner.
 
Methods inherited from class org.opensourcephysics.display.DrawingPanel
actionPerformed, addDrawableAtIndex, addDrawables, buildPopupmenu, checkWorkingImage, computeGutters, enableInspector, findViewRect, getAspectRatio, getBottomGutter, getCoordinateStringBuilder, getDimensionSetter, getDrawables, getDrawables, getGlassPanel, getGutters, getHeight, getImageRatio, getLeftGutter, getLoader, getMaxPixPerUnit, getMeasure, getObjectOfClass, getPixelMatrix, getPixelTransform, getPopupMenu, getPreferredXMax, getPreferredXMin, getPreferredYMax, getPreferredYMin, getRightGutter, getScale, getTopGutter, getVideoTool, getViewRect, getWidth, getXMax, getXMin, getXPixPerUnit, getYMax, getYMin, getYPixPerUnit, getZoomBox, hasInspector, hideInspector, invalidateImage, isAdjustableGutter, isAntialiasShapeOn, isAntialiasTextOn, isAutoscaleX, isAutoscaleXMax, isAutoscaleXMin, isAutoscaleY, isAutoscaleYMax, isAutoscaleYMin, isBuffered, isClipAtGutter, isFixedScale, isIconified, isLogScaleX, isLogScaleY, isPointInside, isSquareAspect, isValidImage, isZoom, limitAutoscaleX, limitAutoscaleY, measure, paint, paintComponent, paintDrawableList, paintEverything, paintFirst, paintLast, pixToX, pixToY, project, recomputeTransform, refreshGUI, removeDrawable, removeDrawables, removeObjectsOfClass, removeOptionController, render, render, replaceDrawable, resetGutters, scale, scale, scaleX, scaleY, setAdjustableGutter, setAntialiasShapeOn, setAntialiasTextOn, setAutoscaleMargin, setAutoscaleX, setAutoscaleY, setBounds, setBounds, setBuffered, setClipAtGutter, setCoordinateStringBuilder, setCustomInspector, setFixedScale, setFontLevel, setGutters, setGutters, setIgnoreRepaint, setMessage, setMessage, setMouseCursor, setPixelScale, setPixelsPerUnit, setPopupMenu, setPreferredGutters, setPreferredMinMax, setPreferredMinMax, setPreferredMinMaxX, setPreferredMinMaxY, setSquareAspect, setVideoTool, setVisible, setXLeftMarginPercentage, setXMarginPercentage, setXMarginPercentage, setXRightMarginPercentage, setYBottomMarginPercentage, setYMarginPercentage, setYMarginPercentage, setYTopMarginPercentage, setZoom, showInspector, snapshot, xToGraphics, xToPix, yToGraphics, yToPix, zoomIn, zoomOut
 
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

MOUSE_PRESSED

public static final int MOUSE_PRESSED
See Also:
Constant Field Values

MOUSE_RELEASED

public static final int MOUSE_RELEASED
See Also:
Constant Field Values

MOUSE_DRAGGED

public static final int MOUSE_DRAGGED
See Also:
Constant Field Values

MOUSE_CLICKED

public static final int MOUSE_CLICKED
See Also:
Constant Field Values

MOUSE_ENTERED

public static final int MOUSE_ENTERED
See Also:
Constant Field Values

MOUSE_EXITED

public static final int MOUSE_EXITED
See Also:
Constant Field Values

MOUSE_MOVED

public static final int MOUSE_MOVED
See Also:
Constant Field Values

containsInteractive

protected boolean containsInteractive

mouseAction

protected int mouseAction

mouseEvent

protected java.awt.event.MouseEvent mouseEvent

interactive

protected InteractiveMouseHandler interactive
Constructor Detail

InteractivePanel

public InteractivePanel(InteractiveMouseHandler in)
Constructs an InteractivePanel with the given handler.

Parameters:
in - InteractiveMouseHandler

InteractivePanel

public InteractivePanel()
Constructs an InteractivePanel with an internal handler.

Method Detail

addDrawable

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

Overrides:
addDrawable in class DrawingPanel
Parameters:
drawable -

clear

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

Overrides:
clear in class DrawingPanel

scaleX

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

Overrides:
scaleX in class DrawingPanel

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.

Overrides:
scaleY in class DrawingPanel

setInteractiveMouseHandler

public void setInteractiveMouseHandler(InteractiveMouseHandler handler)
Sets the interactive mouse handler. The interactive mouse handler is notified whenever a mouse action occurs.

Parameters:
handler - the mouse handler

handleMouseAction

public void handleMouseAction(InteractivePanel panel,
                              java.awt.event.MouseEvent evt)
Handles mouse actions by dragging the current interactive drawable object.

Specified by:
handleMouseAction in interface InteractiveMouseHandler
Parameters:
panel -
evt -

getCurrentDraggable

public Interactive getCurrentDraggable()
Get the Interactive object that is currently being dragged.

Returns:
Interactive

getInteractive

public Interactive getInteractive()
Gets the interactive object that was accessed by the last mouse event.

Returns:
Interactive

setShowCoordinates

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

Overrides:
setShowCoordinates in class DrawingPanel
Parameters:
show -

getMouseButton

public int getMouseButton()
Gets the mouse button of the last mouse event.

Returns:
int

getMouseClickCount

public int getMouseClickCount()
Gets the click count of the last mouse event.

Returns:
int

getMouseAction

public int getMouseAction()
Gets the last mouse action.

Returns:
int

getMouseIntX

public int getMouseIntX()
Gets the x pixel coordinate of the last mouse event.

Returns:
pixel

getMouseIntY

public int getMouseIntY()
Gets the y pixel coordinate of the last mouse event.

Returns:
pixel

getMouseX

public double getMouseX()
Gets the x world coordinate of the last mouse event.

Returns:
coordiante

getMouseY

public double getMouseY()
Gets the y world coordinate of the last moust event

Returns:
coordinate

saveMouseEvent

public void saveMouseEvent(int type,
                           java.awt.event.MouseEvent evt)
Saves the last mouse event.

Parameters:
type -
evt -