org.jscience.swing.spinner
Class TimerControlPanel

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.jscience.swing.spinner.TimerControlPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class TimerControlPanel
extends javax.swing.JPanel

A TimerControlPanel is useful whenever you want to control value sequences by an easy-to-use UI. The following image shows that UI:

TimerControlPanel UI

This JPanel contains three JButtons for several user definable actions:

left directed arrow button repeated actions, e.g.: run backward through a sequence
right directed arrow button repeated actions, e.g.: run forward through a sequence
stop/reset button an action, e.g.: reset to a default value

If the timer is running (because the user clicked on one of the arrow buttons), stop/reset button will change to stop/break button. A click on it will stop the timer at the current value.

Use a TimerControlPanel

To combine the timer functionality with data, you need three or five several Action objects and create a TimerControlPanel with them. These user specific Action objects specify what to do if somebody clicks on a certain button in a certain way. Three Action objects present actions regarding to

Two more Action objects are optional and present actions regarding to The following listings show both, TimerControlPanel specific and user specific actions. The second table is irrelevant if the constructor expecting the left mouse click Actions only is used.

left mouse click TimerControlPanel specific action User specific action
left directed arrow button The timer starts running if the user action for the button is enabled.
The button becomes disabled.
The method actionPerformed(ActionEvent) of the user's Action object will be repeatedly called by the timer.
The ActionEvent's ActionCommand will be TIMER_CMD.
right directed arrow button The timer starts running if the user action for the button is enabled.
The button becomes disabled.
The method actionPerformed(ActionEvent) of the user's Action object will be repeatedly called by the timer.
The ActionEvent's ActionCommand will be TIMER_CMD.
stop/reset button no action The method actionPerformed(ActionEvent) of the user's Action object will be called.
The ActionEvent's ActionCommand will be RESET_CMD.
stop/break button The timer stops. no action

right mouse click TimerControlPanel specific action User specific action
left directed arrow button The timer stops if running. The method actionPerformed(ActionEvent) of the user's Action object will be called.
The ActionEvent's ActionCommand will be RIGHT_MOUSE_CLICK_CMD.
right directed arrow button The timer stops if running. The method actionPerformed(ActionEvent) of the user's Action object will be called.
The ActionEvent's ActionCommand will be RIGHT_MOUSE_CLICK_CMD.

See source of TimerControlPanelExample for a very simple implementation. Download TimerControlPanelExample.java for testing.
See SpinnerTimerControl for a more complex example.

The enabled state of the directed Buttons is for timer actions only (left mouse clicks). A right mouse click also works if the buttons are disabled.

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
static java.lang.String RESET_CMD
          Command string of an ActionEvent given to the method actionPerformed(ActionEvent) of the user specific action reset (see constructor).
static java.lang.String RIGHT_MOUSE_CLICK_CMD
          Command string of an ActionEvent given to the method actionPerformed(ActionEvent) of the user specific actions rightClickOnForward and rightClickOnBackward (see constructor).
static java.lang.String TIMER_CMD
          Command string of an ActionEvent given to the method actionPerformed(ActionEvent) of the user specific actions forward and backward (see constructor).
 
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
TimerControlPanel(javax.swing.Action forward, javax.swing.Action backward, javax.swing.Action reset)
          Creates a new TimerControlPanel with the specified user Action objects.
TimerControlPanel(javax.swing.Action forward, javax.swing.Action backward, javax.swing.Action reset, javax.swing.Action rightClickOnForward, javax.swing.Action rightClickOnBackward)
          Creates a new TimerControlPanel with the specified user Action objects.
 
Method Summary
 SharableTimer getTimer()
           
 int getTimerDelay()
          Returns the delay in msec between two timer events.
 boolean isCoalesce()
          Returns the coalesce state the internal SharableTimer is using.
 void setCoalesce(boolean b)
          Sets the coalesce state for the internal SharableTimer.
 void setTimer(SharableTimer newTimer)
           
 void setTimerDelay(int newDelay)
          Sets a new delay in msec between two timer events.
 void updateUI()
           
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI
 
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, paintComponent, 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, 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, setIgnoreRepaint, 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

TIMER_CMD

public static final java.lang.String TIMER_CMD
Command string of an ActionEvent given to the method actionPerformed(ActionEvent) of the user specific actions forward and backward (see constructor).

See Also:
Constant Field Values

RESET_CMD

public static final java.lang.String RESET_CMD
Command string of an ActionEvent given to the method actionPerformed(ActionEvent) of the user specific action reset (see constructor).

See Also:
Constant Field Values

RIGHT_MOUSE_CLICK_CMD

public static final java.lang.String RIGHT_MOUSE_CLICK_CMD
Command string of an ActionEvent given to the method actionPerformed(ActionEvent) of the user specific actions rightClickOnForward and rightClickOnBackward (see constructor).

See Also:
Constant Field Values
Constructor Detail

TimerControlPanel

public TimerControlPanel(javax.swing.Action forward,
                         javax.swing.Action backward,
                         javax.swing.Action reset)
Creates a new TimerControlPanel with the specified user Action objects. See class documentation for details.

Parameters:
forward - User specific action listening to clicks on right directed arrow button
backward - User specific action listening to clicks on left directed arrow button
reset - User specific action listening to clicks on stop/reset button

TimerControlPanel

public TimerControlPanel(javax.swing.Action forward,
                         javax.swing.Action backward,
                         javax.swing.Action reset,
                         javax.swing.Action rightClickOnForward,
                         javax.swing.Action rightClickOnBackward)
Creates a new TimerControlPanel with the specified user Action objects. See class documentation for details.

Parameters:
forward - User specific action listening to clicks on right directed arrow button
backward - User specific action listening to clicks on left directed arrow button
reset - User specific action listening to clicks on stop/reset button
rightClickOnForward - User specific action listening to a right mouse click on right directed arrow button
rightClickOnBackward - User specific action listening to a right mouse click on left directed arrow button
Method Detail

setTimerDelay

public void setTimerDelay(int newDelay)
Sets a new delay in msec between two timer events.

Parameters:
newDelay - The new delay between two timer events.

getTimerDelay

public int getTimerDelay()
Returns the delay in msec between two timer events.

Returns:
the delay in msec between two timer events.

getTimer

public SharableTimer getTimer()

setTimer

public void setTimer(SharableTimer newTimer)

updateUI

public void updateUI()
Overrides:
updateUI in class javax.swing.JPanel

isCoalesce

public boolean isCoalesce()
Returns the coalesce state the internal SharableTimer is using. The default is true.

Returns:
the coalesce state the internal Timer is using.
See Also:
SharableTimer.start(int,ActionListener[],boolean), Timer.isCoalesce()

setCoalesce

public void setCoalesce(boolean b)
Sets the coalesce state for the internal SharableTimer. If the Timer will be started, the coalesce state will be given to it.

Parameters:
b - the new coalesce state for the internal Timer
See Also:
SharableTimer.start(int,ActionListener[],boolean), Timer.setCoalesce(boolean)