de.sciss.gui
Class PrefNumberField

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.text.JTextComponent
                  extended by javax.swing.JTextField
                      extended by javax.swing.JFormattedTextField
                          extended by de.sciss.gui.NumberField
                              extended by de.sciss.gui.PrefNumberField
All Implemented Interfaces:
DynamicListening, EventManager.Processor, LaterInvocationManager.Listener, PreferenceEntrySync, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, java.util.prefs.PreferenceChangeListener, javax.accessibility.Accessible, javax.swing.Scrollable, javax.swing.SwingConstants

public class PrefNumberField
extends NumberField
implements DynamicListening, java.util.prefs.PreferenceChangeListener, LaterInvocationManager.Listener, PreferenceEntrySync

Equips a NumberField with preference storing / recalling capabilities. We decided not to override setNumber(). Thus, there are two ways to alter the gadget state, either by invoking the setNumberAndDispatch() method (DON'T USE setNumber() because it doesn't fire events) or by changing the associated preferences. When a preference change occurs, the setNumberAndDispatch() method is called, allowing clients to add NumberListeners to the gadget in case they don't want to deal with preferences. However, when possible it is recommended to use PreferenceChangeListener mechanisms.

Version:
0.28, 17-Apr-07
Author:
Hanns Holger Rutz
See Also:
PreferenceChangeListener, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFormattedTextField
javax.swing.JFormattedTextField.AbstractFormatter, javax.swing.JFormattedTextField.AbstractFormatterFactory
 
Nested classes/interfaces inherited from class javax.swing.JTextField
javax.swing.JTextField.AccessibleJTextField
 
Nested classes/interfaces inherited from class javax.swing.text.JTextComponent
javax.swing.text.JTextComponent.AccessibleJTextComponent, javax.swing.text.JTextComponent.KeyBinding
 
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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  boolean writePrefs
           
 
Fields inherited from class de.sciss.gui.NumberField
HHMMSS, numberFlavor, supportedFlavors, value
 
Fields inherited from class javax.swing.JFormattedTextField
COMMIT, COMMIT_OR_REVERT, PERSIST, REVERT
 
Fields inherited from class javax.swing.JTextField
notifyAction
 
Fields inherited from class javax.swing.text.JTextComponent
DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY
 
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 javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
PrefNumberField()
          Constructs a new PrefNumberField.
 
Method Summary
 java.lang.String getPreferenceKey()
          Gets the recently set preference key
 java.util.prefs.Preferences getPreferenceNode()
          Gets the recently set preference node
 boolean getReadPrefs()
           
 boolean getWritePrefs()
           
 void laterInvocation(java.lang.Object o)
          Called later in the event thread, this passes the object given to the queue method
 void preferenceChange(java.util.prefs.PreferenceChangeEvent e)
           
 void readPrefs()
           
 void setPreferenceKey(java.lang.String key)
           
 void setPreferenceNode(java.util.prefs.Preferences prefs)
           
 void setPreferences(java.util.prefs.Preferences prefs, java.lang.String key)
          Enable Preferences synchronization.
 void setReadPrefs(boolean b)
           
 void setWritePrefs(boolean b)
           
 void startListening()
          will be called when the component becomes visible
 void stopListening()
          will be called when the component is hidden
 void writePrefs()
           
 
Methods inherited from class de.sciss.gui.NumberField
addListener, fireNumberChanged, getFlags, getNumber, getSpace, processEvent, removeListener, setFlags, setNumber, setSpace
 
Methods inherited from class javax.swing.JFormattedTextField
commitEdit, getActions, getFocusLostBehavior, getFormatter, getFormatterFactory, getUIClassID, getValue, invalidEdit, isEditValid, processFocusEvent, processInputMethodEvent, setDocument, setFocusLostBehavior, setFormatter, setFormatterFactory, setValue
 
Methods inherited from class javax.swing.JTextField
addActionListener, configurePropertiesFromAction, createActionPropertyChangeListener, createDefaultModel, fireActionPerformed, getAccessibleContext, getAction, getActionListeners, getColumns, getColumnWidth, getHorizontalAlignment, getHorizontalVisibility, getPreferredSize, getScrollOffset, isValidateRoot, paramString, postActionEvent, removeActionListener, scrollRectToVisible, setAction, setActionCommand, setColumns, setFont, setHorizontalAlignment, setScrollOffset
 
Methods inherited from class javax.swing.text.JTextComponent
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, moveCaretPosition, paste, read, removeCaretListener, removeKeymap, removeNotify, replaceSelection, select, selectAll, setCaret, setCaretColor, setCaretPosition, setComponentOrientation, setDisabledTextColor, setDragEnabled, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setText, setUI, updateUI, viewToModel, write
 
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, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, 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, 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, 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, processHierarchyBoundsEvent, processHierarchyEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, 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

writePrefs

protected boolean writePrefs
Constructor Detail

PrefNumberField

public PrefNumberField()
Constructs a new PrefNumberField.

Synchronization:
Like any other Swing component, the constructor is to be called from the event thread.
Method Detail

setReadPrefs

public void setReadPrefs(boolean b)
Specified by:
setReadPrefs in interface PreferenceEntrySync

getReadPrefs

public boolean getReadPrefs()
Specified by:
getReadPrefs in interface PreferenceEntrySync

setWritePrefs

public void setWritePrefs(boolean b)
Specified by:
setWritePrefs in interface PreferenceEntrySync

getWritePrefs

public boolean getWritePrefs()
Specified by:
getWritePrefs in interface PreferenceEntrySync

writePrefs

public void writePrefs()
Specified by:
writePrefs in interface PreferenceEntrySync

setPreferenceNode

public void setPreferenceNode(java.util.prefs.Preferences prefs)
Specified by:
setPreferenceNode in interface PreferenceEntrySync

setPreferenceKey

public void setPreferenceKey(java.lang.String key)
Specified by:
setPreferenceKey in interface PreferenceEntrySync

setPreferences

public void setPreferences(java.util.prefs.Preferences prefs,
                           java.lang.String key)
Enable Preferences synchronization. This method is not thread safe and must be called from the event thread. When a preference change is received, the number is updated in the GUI and the NumberField dispatches a NumberEvent. Likewise, if the user adjusts the number in the GUI, the preference will be updated. The same is true, if you call setNumber.

Specified by:
setPreferences in interface PreferenceEntrySync
Parameters:
prefs - the preferences node in which the value is stored, or null to disable prefs sync.
key - the key used to store and recall prefs. the value is the number converted to a string.

getPreferenceNode

public java.util.prefs.Preferences getPreferenceNode()
Description copied from interface: PreferenceEntrySync
Gets the recently set preference node

Specified by:
getPreferenceNode in interface PreferenceEntrySync
Returns:
the node set with setPreferences or null if no prefs were set

getPreferenceKey

public java.lang.String getPreferenceKey()
Description copied from interface: PreferenceEntrySync
Gets the recently set preference key

Specified by:
getPreferenceKey in interface PreferenceEntrySync
Returns:
the key set with setPreferences or null if no prefs were set

startListening

public void startListening()
Description copied from interface: DynamicListening
will be called when the component becomes visible

Specified by:
startListening in interface DynamicListening

stopListening

public void stopListening()
Description copied from interface: DynamicListening
will be called when the component is hidden

Specified by:
stopListening in interface DynamicListening

laterInvocation

public void laterInvocation(java.lang.Object o)
Description copied from interface: LaterInvocationManager.Listener
Called later in the event thread, this passes the object given to the queue method

Specified by:
laterInvocation in interface LaterInvocationManager.Listener
Parameters:
o - object as passed to queue

readPrefs

public void readPrefs()
Specified by:
readPrefs in interface PreferenceEntrySync

preferenceChange

public void preferenceChange(java.util.prefs.PreferenceChangeEvent e)
Specified by:
preferenceChange in interface java.util.prefs.PreferenceChangeListener