jsky.util.gui
Class QuantitySlider

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 jsky.util.gui.QuantitySlider
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ChangeListener

public class QuantitySlider
extends javax.swing.JPanel
implements java.beans.PropertyChangeListener, javax.swing.event.ChangeListener, java.awt.event.ActionListener, java.awt.event.MouseListener

A Panel that blends editing a quantity or range of quantities by slider or straight data entry. Encorporates the default units display, and adds options change the max or Min value of the slider range

Behavior of the properties is modified. A propertyChanged is fired every time a statechange is recieved from the slider, OR a new value is enter in the text box. Since whenever the slider is "active" its valueIsChanging property is true. This component also fires of a last (Possibly redundant) propertyChange event after the slider stops moving (when valueIsChanging is no longer true.

Minor HACK is doing things this way, to force a propertyChange after the sliders stops, the PropertyChangeEvent has getOldValue() of NULL... the receiving listener needs to be aware that the value may not have really changed

NOTE currently works only with WHOLE numbers

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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  javax.swing.border.TitledBorder fBorder
           
protected  boolean fIsBordered
           
protected  javax.swing.JLabel fLabelTitle
           
protected  boolean fShowExtent
           
protected  java.lang.String fTitle
           
static java.lang.String MAXQUANTITY_PROPERTY
           
static java.lang.String MINQUANTITY_PROPERTY
           
static java.lang.String QUANTITY_PROPERTY
           
 
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
QuantitySlider()
          Build a default bordered Quantity Slider editing a single value
QuantitySlider(int orient, Quantity minQ, Quantity maxQ, Quantity scaleMin, Quantity scaleMax, java.lang.String title, boolean borderOn)
          Create a bordered Quantity Slider, editing a range and a specified min/max to the scale This constructor lets you set VERTICAL or HORIZONTAL for the orientation
QuantitySlider(int orient, Quantity inMinQ, Quantity inMaxQ, Quantity scaleMin, Quantity scaleMax, java.lang.String title, boolean borderOn, boolean showExtent)
          Fully qualified constructor
QuantitySlider(int orient, Quantity inQ, Quantity scaleMin, Quantity scaleMax, java.lang.String title, boolean borderOn)
          Create a bordered Quantity Slider, with one edited value and a specified min/max to the scale This constructor lets you set VERTICAL or HORIZONTAL for the orientation
QuantitySlider(Quantity inQ, Quantity scaleMin, Quantity scaleMax, java.lang.String title)
          Create a bordered Quantity Slider, with one edited value and a specified min/max to the scale
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent event)
           
 Quantity getExtent()
           
 Quantity getQuantity()
           
 boolean getValueIsAdjusting()
          passes through the valueIsAdjusting property of the slide, let event recipients decide whether or not they want to deal with these events
 boolean isMaximumChangeable()
          returns true if end-user can change the maximum value on the slider
 boolean isMinimumChangeable()
          returns true if end-user can change the minimum value on the slider
static void main(java.lang.String[] args)
           
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
           
 void mouseReleased(java.awt.event.MouseEvent e)
           
 double popupQuantityRequest(java.lang.String title, java.lang.String message)
           
 void propertyChange(java.beans.PropertyChangeEvent event)
           
 void setMaximumChangeable(boolean b)
          sets whether or not the user can change the maximum slider value.
 void setMaxQuantity(Quantity inQ)
          sets the current Max quantity of the range
 void setMinimumChangeable(boolean b)
          sets whether or not the user can change the minimum slider value.
 void setMinQuantity(Quantity inQ)
          sets the current min quantity of the range
 void setQuantity(Quantity inQ)
          Deprecated. use setMinQuantity instead
 void setScaleMaximum(int m)
          sets the maximum range scale
 void setScaleMinimum(int m)
          sets the minimum range scale
 void setSliderDelay(int delay)
          sets the length (in milleseconds) of time after the user stops adjusting the slider that a "final" propertyChange event is fired.
 void stateChanged(javax.swing.event.ChangeEvent event)
           
protected  void updateScaleMinMax(int newvalue)
           
protected  void updateTitle()
           
 
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, 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, 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

MINQUANTITY_PROPERTY

public static final java.lang.String MINQUANTITY_PROPERTY
See Also:
Constant Field Values

MAXQUANTITY_PROPERTY

public static final java.lang.String MAXQUANTITY_PROPERTY
See Also:
Constant Field Values

QUANTITY_PROPERTY

public static final java.lang.String QUANTITY_PROPERTY
See Also:
Constant Field Values

fIsBordered

protected boolean fIsBordered

fTitle

protected java.lang.String fTitle

fLabelTitle

protected javax.swing.JLabel fLabelTitle

fBorder

protected javax.swing.border.TitledBorder fBorder

fShowExtent

protected boolean fShowExtent
Constructor Detail

QuantitySlider

public QuantitySlider()
Build a default bordered Quantity Slider editing a single value


QuantitySlider

public QuantitySlider(Quantity inQ,
                      Quantity scaleMin,
                      Quantity scaleMax,
                      java.lang.String title)
Create a bordered Quantity Slider, with one edited value and a specified min/max to the scale

Parameters:
inQ - the current Quantity value
scaleMin - the minimum allowable Quantity value
scaleMax - the maximum allowable Quantity value
title - the optional title to be displayed, can be null for no title

QuantitySlider

public QuantitySlider(int orient,
                      Quantity inQ,
                      Quantity scaleMin,
                      Quantity scaleMax,
                      java.lang.String title,
                      boolean borderOn)
Create a bordered Quantity Slider, with one edited value and a specified min/max to the scale This constructor lets you set VERTICAL or HORIZONTAL for the orientation

Parameters:
orient - the orientation of the slider (JSlider.VERTICAL or HORIZONTAL)
inQ - the current Quantity value
scaleMin - the minimum allowable Quantity value
scaleMax - the maximum allowable Quantity value
title - the optional title to be displayed, can be null for no title
borderOn - When true, a labeled border will be displayed. Requires more vertical space

QuantitySlider

public QuantitySlider(int orient,
                      Quantity minQ,
                      Quantity maxQ,
                      Quantity scaleMin,
                      Quantity scaleMax,
                      java.lang.String title,
                      boolean borderOn)
Create a bordered Quantity Slider, editing a range and a specified min/max to the scale This constructor lets you set VERTICAL or HORIZONTAL for the orientation

Parameters:
orient - the orientation of the slider (JSlider.VERTICAL or HORIZONTAL)
minQ - the "left" edge of the editing range
maxQ - the "right" edge of the editing range
scaleMin - the minimum allowable Quantity value
scaleMax - the maximum allowable Quantity value
title - the optional title to be displayed, can be null for no title
borderOn - When true, a labeled border will be displayed. Requires more vertical space

QuantitySlider

public QuantitySlider(int orient,
                      Quantity inMinQ,
                      Quantity inMaxQ,
                      Quantity scaleMin,
                      Quantity scaleMax,
                      java.lang.String title,
                      boolean borderOn,
                      boolean showExtent)
Fully qualified constructor

Parameters:
orient - the orientation of the slider (JSlider.VERTICAL or HORIZONTAL)
inMinQ - the "left" edge of the editing range
inMaxQ - the "right" edge of the editing range
scaleMin - the minimum allowable Quantity value
scaleMax - the maximum allowable Quantity value
title - the optional title to be displayed, can be null for no title
borderOn - When true, a labeled border will be displayed. Requires more vertical space
showExtent - When true, will display and manage the 2nd right hand pointer marking the right edge of the range
Method Detail

updateTitle

protected void updateTitle()

setSliderDelay

public void setSliderDelay(int delay)
sets the length (in milleseconds) of time after the user stops adjusting the slider that a "final" propertyChange event is fired. Additional propertyChange events will be fired while the sliders is being moved, but the getValueIsAdjusting() method will return true for these events.


isMinimumChangeable

public boolean isMinimumChangeable()
returns true if end-user can change the minimum value on the slider


isMaximumChangeable

public boolean isMaximumChangeable()
returns true if end-user can change the maximum value on the slider


setMinimumChangeable

public void setMinimumChangeable(boolean b)
sets whether or not the user can change the minimum slider value. When true, a button with a "|<" icon will appear to the left of the slider. When the user clicks that button a popup window will prompt user for new minimum value


setMaximumChangeable

public void setMaximumChangeable(boolean b)
sets whether or not the user can change the maximum slider value. When true, a button with a ">|" icon will appear to the right of the slider. When the user clicks that button a popup window will prompt user for new maximum value


getQuantity

public Quantity getQuantity()

getExtent

public Quantity getExtent()

getValueIsAdjusting

public boolean getValueIsAdjusting()
passes through the valueIsAdjusting property of the slide, let event recipients decide whether or not they want to deal with these events


stateChanged

public void stateChanged(javax.swing.event.ChangeEvent event)
Specified by:
stateChanged in interface javax.swing.event.ChangeListener

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent event)
Specified by:
propertyChange in interface java.beans.PropertyChangeListener

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent event)
Specified by:
actionPerformed in interface java.awt.event.ActionListener

popupQuantityRequest

public double popupQuantityRequest(java.lang.String title,
                                   java.lang.String message)

setScaleMinimum

public void setScaleMinimum(int m)
sets the minimum range scale


setScaleMaximum

public void setScaleMaximum(int m)
sets the maximum range scale


setQuantity

public void setQuantity(Quantity inQ)
Deprecated. use setMinQuantity instead


setMinQuantity

public void setMinQuantity(Quantity inQ)
sets the current min quantity of the range


setMaxQuantity

public void setMaxQuantity(Quantity inQ)
sets the current Max quantity of the range


updateScaleMinMax

protected void updateScaleMinMax(int newvalue)

main

public static void main(java.lang.String[] args)

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked 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

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