javax.swing.plaf.basic
Class BasicSliderUI

java.lang.Object
  extended byjavax.swing.plaf.ComponentUI
      extended byjavax.swing.plaf.SliderUI
          extended byjavax.swing.plaf.basic.BasicSliderUI
Direct Known Subclasses:
MetalSliderUI

public class BasicSliderUI
extends SliderUI

A Basic L&F implementation of SliderUI.

Author:
Tom Santos

Nested Class Summary
 class BasicSliderUI.ActionScroller
          As of Java 2 platform v1.3 this undocumented class is no longer used.
 class BasicSliderUI.ChangeHandler
          Data model listener.
 class BasicSliderUI.ComponentHandler
          Listener for resizing events.
 class BasicSliderUI.FocusHandler
          Focus-change listener.
 class BasicSliderUI.PropertyChangeHandler
           
 class BasicSliderUI.ScrollListener
          Scroll-event listener.
(package private) static class BasicSliderUI.SharedActionScroller
          A static version of the above.
 class BasicSliderUI.TrackListener
          Track mouse movements.
 
Field Summary
protected  ChangeListener changeListener
           
protected  ComponentListener componentListener
           
protected  Rectangle contentRect
           
private  Color focusColor
           
protected  Insets focusInsets
           
protected  FocusListener focusListener
           
protected  Rectangle focusRect
           
private  Color highlightColor
           
protected  Insets insetCache
           
private  boolean isDragging
           
protected  Rectangle labelRect
           
protected  boolean leftToRightCache
           
static int MAX_SCROLL
           
static int MIN_SCROLL
           
private static Dimension MINIMUM_HORIZONTAL_SIZE
           
private static Dimension MINIMUM_VERTICAL_SIZE
           
static int NEGATIVE_SCROLL
           
static int POSITIVE_SCROLL
           
private static Dimension PREFERRED_HORIZONTAL_SIZE
           
private static Dimension PREFERRED_VERTICAL_SIZE
           
protected  java.beans.PropertyChangeListener propertyChangeListener
           
protected  BasicSliderUI.ScrollListener scrollListener
           
protected  Timer scrollTimer
           
private  Color shadowColor
           
protected  JSlider slider
           
protected  Rectangle thumbRect
           
protected  Rectangle tickRect
           
protected  int trackBuffer
           
protected  BasicSliderUI.TrackListener trackListener
           
protected  Rectangle trackRect
           
private static Rectangle unionRect
           
 
Constructor Summary
BasicSliderUI(JSlider b)
           
 
Method Summary
protected  void calculateContentRect()
           
protected  void calculateFocusRect()
           
protected  void calculateGeometry()
           
protected  void calculateLabelRect()
           
protected  void calculateThumbLocation()
           
protected  void calculateThumbSize()
           
protected  void calculateTickRect()
           
protected  void calculateTrackBuffer()
           
protected  void calculateTrackRect()
           
(package private)  ActionMap createActionMap()
           
protected  ChangeListener createChangeListener(JSlider slider)
           
protected  ComponentListener createComponentListener(JSlider slider)
           
protected  FocusListener createFocusListener(JSlider slider)
           
protected  java.beans.PropertyChangeListener createPropertyChangeListener(JSlider slider)
           
protected  BasicSliderUI.ScrollListener createScrollListener(JSlider slider)
           
protected  BasicSliderUI.TrackListener createTrackListener(JSlider slider)
           
static ComponentUI createUI(JComponent b)
          Returns an instance of the UI delegate for the specified component.
protected  boolean drawInverted()
           
(package private)  ActionMap getActionMap()
           
protected  Color getFocusColor()
           
protected  int getHeightOfHighValueLabel()
           
protected  int getHeightOfLowValueLabel()
           
protected  int getHeightOfTallestLabel()
           
protected  Component getHighestValueLabel()
          Returns the label that corresponds to the lowest slider value in the label table.
protected  Color getHighlightColor()
           
(package private)  InputMap getInputMap(int condition)
           
protected  Component getLowestValueLabel()
          Returns the label that corresponds to the highest slider value in the label table.
 Dimension getMaximumSize(JComponent c)
          Returns the specified component's maximum size appropriate for the look and feel.
 Dimension getMinimumHorizontalSize()
           
 Dimension getMinimumSize(JComponent c)
          Returns the specified component's minimum size appropriate for the look and feel.
 Dimension getMinimumVerticalSize()
           
 Dimension getPreferredHorizontalSize()
           
 Dimension getPreferredSize(JComponent c)
          Returns the specified component's preferred size appropriate for the look and feel.
 Dimension getPreferredVerticalSize()
           
protected  Color getShadowColor()
           
protected  Dimension getThumbSize()
           
protected  int getTickLength()
          Gets the height of the tick area for horizontal sliders and the width of the tick area for vertical sliders.
protected  int getWidthOfHighValueLabel()
           
protected  int getWidthOfLowValueLabel()
           
protected  int getWidthOfWidestLabel()
           
protected  void installDefaults(JSlider slider)
           
protected  void installKeyboardActions(JSlider slider)
           
protected  void installListeners(JSlider slider)
           
 void installUI(JComponent c)
          Configures the specified component appropriate for the look and feel.
 void paint(Graphics g, JComponent c)
          Paints the specified component appropriate for the look and feel.
 void paintFocus(Graphics g)
           
protected  void paintHorizontalLabel(Graphics g, int value, Component label)
          Called for every label in the label table.
 void paintLabels(Graphics g)
           
protected  void paintMajorTickForHorizSlider(Graphics g, Rectangle tickBounds, int x)
           
protected  void paintMajorTickForVertSlider(Graphics g, Rectangle tickBounds, int y)
           
protected  void paintMinorTickForHorizSlider(Graphics g, Rectangle tickBounds, int x)
           
protected  void paintMinorTickForVertSlider(Graphics g, Rectangle tickBounds, int y)
           
 void paintThumb(Graphics g)
           
 void paintTicks(Graphics g)
           
 void paintTrack(Graphics g)
           
protected  void paintVerticalLabel(Graphics g, int value, Component label)
          Called for every label in the label table.
protected  void recalculateIfInsetsChanged()
           
protected  void recalculateIfOrientationChanged()
           
 void scrollByBlock(int direction)
           
 void scrollByUnit(int direction)
           
protected  void scrollDueToClickInTrack(int dir)
          This function is called when a mousePressed was detected in the track, not in the thumb.
 void setThumbLocation(int x, int y)
           
protected  void uninstallKeyboardActions(JSlider slider)
           
protected  void uninstallListeners(JSlider slider)
           
 void uninstallUI(JComponent c)
          Reverses configuration which was done on the specified component during installUI.
 int valueForXPosition(int xPos)
          Returns a value give an x position.
 int valueForYPosition(int yPos)
          Returns a value give a y position.
protected  int xPositionForValue(int value)
           
protected  int yPositionForValue(int value)
           
 
Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

POSITIVE_SCROLL

public static final int POSITIVE_SCROLL
See Also:
Constant Field Values

NEGATIVE_SCROLL

public static final int NEGATIVE_SCROLL
See Also:
Constant Field Values

MIN_SCROLL

public static final int MIN_SCROLL
See Also:
Constant Field Values

MAX_SCROLL

public static final int MAX_SCROLL
See Also:
Constant Field Values

scrollTimer

protected Timer scrollTimer

slider

protected JSlider slider

focusInsets

protected Insets focusInsets

insetCache

protected Insets insetCache

leftToRightCache

protected boolean leftToRightCache

focusRect

protected Rectangle focusRect

contentRect

protected Rectangle contentRect

labelRect

protected Rectangle labelRect

tickRect

protected Rectangle tickRect

trackRect

protected Rectangle trackRect

thumbRect

protected Rectangle thumbRect

trackBuffer

protected int trackBuffer

PREFERRED_HORIZONTAL_SIZE

private static final Dimension PREFERRED_HORIZONTAL_SIZE

PREFERRED_VERTICAL_SIZE

private static final Dimension PREFERRED_VERTICAL_SIZE

MINIMUM_HORIZONTAL_SIZE

private static final Dimension MINIMUM_HORIZONTAL_SIZE

MINIMUM_VERTICAL_SIZE

private static final Dimension MINIMUM_VERTICAL_SIZE

isDragging

private transient boolean isDragging

trackListener

protected BasicSliderUI.TrackListener trackListener

changeListener

protected ChangeListener changeListener

componentListener

protected ComponentListener componentListener

focusListener

protected FocusListener focusListener

scrollListener

protected BasicSliderUI.ScrollListener scrollListener

propertyChangeListener

protected java.beans.PropertyChangeListener propertyChangeListener

shadowColor

private Color shadowColor

highlightColor

private Color highlightColor

focusColor

private Color focusColor

unionRect

private static Rectangle unionRect
Constructor Detail

BasicSliderUI

public BasicSliderUI(JSlider b)
Method Detail

getShadowColor

protected Color getShadowColor()

getHighlightColor

protected Color getHighlightColor()

getFocusColor

protected Color getFocusColor()

createUI

public static ComponentUI createUI(JComponent b)
Description copied from class: ComponentUI
Returns an instance of the UI delegate for the specified component. Each subclass must provide its own static createUI method that returns an instance of that UI delegate subclass. If the UI delegate subclass is stateless, it may return an instance that is shared by multiple components. If the UI delegate is stateful, then it should return a new instance per component. The default implementation of this method throws an error, as it should never be invoked.


installUI

public void installUI(JComponent c)
Description copied from class: ComponentUI
Configures the specified component appropriate for the look and feel. This method is invoked when the ComponentUI instance is being installed as the UI delegate on the specified component. This method should completely configure the component for the look and feel, including the following:
  1. Install any default property values for color, fonts, borders, icons, opacity, etc. on the component. Whenever possible, property values initialized by the client program should not be overridden.
  2. Install a LayoutManager on the component if necessary.
  3. Create/add any required sub-components to the component.
  4. Create/install event listeners on the component.
  5. Create/install a PropertyChangeListener on the component in order to detect and respond to component property changes appropriately.
  6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
  7. Initialize any appropriate instance data.

Overrides:
installUI in class ComponentUI
Parameters:
c - the component where this UI delegate is being installed
See Also:
ComponentUI.uninstallUI(javax.swing.JComponent), JComponent.setUI(javax.swing.plaf.ComponentUI), JComponent.updateUI()

uninstallUI

public void uninstallUI(JComponent c)
Description copied from class: ComponentUI
Reverses configuration which was done on the specified component during installUI. This method is invoked when this UIComponent instance is being removed as the UI delegate for the specified component. This method should undo the configuration performed in installUI, being careful to leave the JComponent instance in a clean state (no extraneous listeners, look-and-feel-specific property objects, etc.). This should include the following:
  1. Remove any UI-set borders from the component.
  2. Remove any UI-set layout managers on the component.
  3. Remove any UI-added sub-components from the component.
  4. Remove any UI-added event/property listeners from the component.
  5. Remove any UI-installed keyboard UI from the component.
  6. Nullify any allocated instance data objects to allow for GC.

Overrides:
uninstallUI in class ComponentUI
Parameters:
c - the component from which this UI delegate is being removed; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
See Also:
ComponentUI.installUI(javax.swing.JComponent), JComponent.updateUI()

installDefaults

protected void installDefaults(JSlider slider)

createTrackListener

protected BasicSliderUI.TrackListener createTrackListener(JSlider slider)

createChangeListener

protected ChangeListener createChangeListener(JSlider slider)

createComponentListener

protected ComponentListener createComponentListener(JSlider slider)

createFocusListener

protected FocusListener createFocusListener(JSlider slider)

createScrollListener

protected BasicSliderUI.ScrollListener createScrollListener(JSlider slider)

createPropertyChangeListener

protected java.beans.PropertyChangeListener createPropertyChangeListener(JSlider slider)

installListeners

protected void installListeners(JSlider slider)

uninstallListeners

protected void uninstallListeners(JSlider slider)

installKeyboardActions

protected void installKeyboardActions(JSlider slider)

getInputMap

InputMap getInputMap(int condition)

getActionMap

ActionMap getActionMap()

createActionMap

ActionMap createActionMap()

uninstallKeyboardActions

protected void uninstallKeyboardActions(JSlider slider)

getPreferredHorizontalSize

public Dimension getPreferredHorizontalSize()

getPreferredVerticalSize

public Dimension getPreferredVerticalSize()

getMinimumHorizontalSize

public Dimension getMinimumHorizontalSize()

getMinimumVerticalSize

public Dimension getMinimumVerticalSize()

getPreferredSize

public Dimension getPreferredSize(JComponent c)
Description copied from class: ComponentUI
Returns the specified component's preferred size appropriate for the look and feel. If null is returned, the preferred size will be calculated by the component's layout manager instead (this is the preferred approach for any component with a specific layout manager installed). The default implementation of this method returns null.

Overrides:
getPreferredSize in class ComponentUI
Parameters:
c - the component whose preferred size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
See Also:
JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)

getMinimumSize

public Dimension getMinimumSize(JComponent c)
Description copied from class: ComponentUI
Returns the specified component's minimum size appropriate for the look and feel. If null is returned, the minimum size will be calculated by the component's layout manager instead (this is the preferred approach for any component with a specific layout manager installed). The default implementation of this method invokes getPreferredSize and returns that value.

Overrides:
getMinimumSize in class ComponentUI
Parameters:
c - the component whose minimum size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
Returns:
a Dimension object or null
See Also:
JComponent.getMinimumSize(), LayoutManager.minimumLayoutSize(java.awt.Container), ComponentUI.getPreferredSize(javax.swing.JComponent)

getMaximumSize

public Dimension getMaximumSize(JComponent c)
Description copied from class: ComponentUI
Returns the specified component's maximum size appropriate for the look and feel. If null is returned, the maximum size will be calculated by the component's layout manager instead (this is the preferred approach for any component with a specific layout manager installed). The default implementation of this method invokes getPreferredSize and returns that value.

Overrides:
getMaximumSize in class ComponentUI
Parameters:
c - the component whose maximum size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
Returns:
a Dimension object or null
See Also:
JComponent.getMaximumSize(), LayoutManager2.maximumLayoutSize(java.awt.Container)

calculateGeometry

protected void calculateGeometry()

calculateFocusRect

protected void calculateFocusRect()

calculateThumbSize

protected void calculateThumbSize()

calculateContentRect

protected void calculateContentRect()

calculateThumbLocation

protected void calculateThumbLocation()

calculateTrackBuffer

protected void calculateTrackBuffer()

calculateTrackRect

protected void calculateTrackRect()

getTickLength

protected int getTickLength()
Gets the height of the tick area for horizontal sliders and the width of the tick area for vertical sliders. BasicSliderUI uses the returned value to determine the tick area rectangle. If you want to give your ticks some room, make this larger than you need and paint your ticks away from the sides in paintTicks().


calculateTickRect

protected void calculateTickRect()

calculateLabelRect

protected void calculateLabelRect()

getThumbSize

protected Dimension getThumbSize()

getWidthOfWidestLabel

protected int getWidthOfWidestLabel()

getHeightOfTallestLabel

protected int getHeightOfTallestLabel()

getWidthOfHighValueLabel

protected int getWidthOfHighValueLabel()

getWidthOfLowValueLabel

protected int getWidthOfLowValueLabel()

getHeightOfHighValueLabel

protected int getHeightOfHighValueLabel()

getHeightOfLowValueLabel

protected int getHeightOfLowValueLabel()

drawInverted

protected boolean drawInverted()

getLowestValueLabel

protected Component getLowestValueLabel()
Returns the label that corresponds to the highest slider value in the label table.

See Also:
JSlider.setLabelTable(java.util.Dictionary)

getHighestValueLabel

protected Component getHighestValueLabel()
Returns the label that corresponds to the lowest slider value in the label table.

See Also:
JSlider.setLabelTable(java.util.Dictionary)

paint

public void paint(Graphics g,
                  JComponent c)
Description copied from class: ComponentUI
Paints the specified component appropriate for the look and feel. This method is invoked from the ComponentUI.update method when the specified component is being painted. Subclasses should override this method and use the specified Graphics object to render the content of the component.

Overrides:
paint in class ComponentUI
Parameters:
g - the Graphics context in which to paint
c - the component being painted; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
See Also:
ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)

recalculateIfInsetsChanged

protected void recalculateIfInsetsChanged()

recalculateIfOrientationChanged

protected void recalculateIfOrientationChanged()

paintFocus

public void paintFocus(Graphics g)

paintTrack

public void paintTrack(Graphics g)

paintTicks

public void paintTicks(Graphics g)

paintMinorTickForHorizSlider

protected void paintMinorTickForHorizSlider(Graphics g,
                                            Rectangle tickBounds,
                                            int x)

paintMajorTickForHorizSlider

protected void paintMajorTickForHorizSlider(Graphics g,
                                            Rectangle tickBounds,
                                            int x)

paintMinorTickForVertSlider

protected void paintMinorTickForVertSlider(Graphics g,
                                           Rectangle tickBounds,
                                           int y)

paintMajorTickForVertSlider

protected void paintMajorTickForVertSlider(Graphics g,
                                           Rectangle tickBounds,
                                           int y)

paintLabels

public void paintLabels(Graphics g)

paintHorizontalLabel

protected void paintHorizontalLabel(Graphics g,
                                    int value,
                                    Component label)
Called for every label in the label table. Used to draw the labels for horizontal sliders. The graphics have been translated to labelRect.y already.

See Also:
JSlider.setLabelTable(java.util.Dictionary)

paintVerticalLabel

protected void paintVerticalLabel(Graphics g,
                                  int value,
                                  Component label)
Called for every label in the label table. Used to draw the labels for vertical sliders. The graphics have been translated to labelRect.x already.

See Also:
JSlider.setLabelTable(java.util.Dictionary)

paintThumb

public void paintThumb(Graphics g)

setThumbLocation

public void setThumbLocation(int x,
                             int y)

scrollByBlock

public void scrollByBlock(int direction)

scrollByUnit

public void scrollByUnit(int direction)

scrollDueToClickInTrack

protected void scrollDueToClickInTrack(int dir)
This function is called when a mousePressed was detected in the track, not in the thumb. The default behavior is to scroll by block. You can override this method to stop it from scrolling or to add additional behavior.


xPositionForValue

protected int xPositionForValue(int value)

yPositionForValue

protected int yPositionForValue(int value)

valueForYPosition

public int valueForYPosition(int yPos)
Returns a value give a y position. If yPos is past the track at the top or the bottom it will set the value to the min or max of the slider, depending if the slider is inverted or not.


valueForXPosition

public int valueForXPosition(int xPos)
Returns a value give an x position. If xPos is past the track at the left or the right it will set the value to the min or max of the slider, depending if the slider is inverted or not.