javax.swing.colorchooser
Class DefaultHSBChooserPanel

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byjavax.swing.colorchooser.AbstractColorChooserPanel
                      extended byjavax.swing.colorchooser.DefaultHSBChooserPanel
All Implemented Interfaces:
javax.accessibility.Accessible, ChangeListener, EventListener, HierarchyListener, ImageObserver, MenuContainer, Serializable

class DefaultHSBChooserPanel
extends AbstractColorChooserPanel
implements ChangeListener, HierarchyListener

Implements the default HSB Color chooser

Author:
Tom Santos, Steve Wilson, Mark Davidson, Shannon Hickey

Nested Class Summary
(package private)  class DefaultHSBChooserPanel.HSBImage
          Class for the slider and palette images.
private  class DefaultHSBChooserPanel.RadioButtonHandler
          Handler for the radio button classes.
 
Nested classes inherited from class javax.swing.colorchooser.AbstractColorChooserPanel
AbstractColorChooserPanel.ModelListener
 
Nested classes inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
private  JSpinner bField
           
private  JTextField blueField
           
private  JRadioButton bRadio
           
private static int BRIGHTNESS_MODE
           
private  int currentMode
           
private  JTextField greenField
           
private  JSpinner hField
           
private  JRadioButton hRadio
           
private static int HUE_MODE
           
private  boolean isAdjusting
           
private static int MAX_BRIGHTNESS_VALUE
           
private static int MAX_HUE_VALUE
           
private static int MAX_SATURATION_VALUE
           
private  DefaultHSBChooserPanel.HSBImage palette
           
private static int PALETTE_DIMENSION
           
private  Image paletteImage
           
private  JLabel paletteLabel
           
private  Point paletteSelection
           
private  JTextField redField
           
private static int SATURATION_MODE
           
private  JSpinner sField
           
private  JSlider slider
           
private  DefaultHSBChooserPanel.HSBImage sliderPalette
           
private  Image sliderPaletteImage
           
private  JLabel sliderPaletteLabel
           
private  JRadioButton sRadio
           
 
Fields inherited from class javax.swing.colorchooser.AbstractColorChooserPanel
 
Fields inherited from class javax.swing.JPanel
 
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.Container
 
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
DefaultHSBChooserPanel()
           
 
Method Summary
private  void addPaletteListeners()
           
protected  void buildChooser()
          Builds a new chooser panel.
private  JComponent buildHSBControls()
          Creates the panel with the editable HSB fields and the radio buttons.
private  JComponent buildRGBControls()
          Creates the panel with the uneditable RGB field
protected  JComponent buildSliderPalettePanel()
           
private  void cleanupPalettesIfNecessary()
           
protected  JLabel createPaletteLabel()
           
 int getDisplayedMnemonicIndex()
          Provides a hint to the look and feel as to the index of the character in getDisplayName that should be visually identified as the mnemonic.
 String getDisplayName()
          Returns a string containing the display name of the panel.
private  float[] getHSBColorFromModel()
          Returns an float array containing the HSB values of the selected color from the ColorSelectionModel
 Icon getLargeDisplayIcon()
          Returns the large display icon for the panel.
 int getMnemonic()
          Provides a hint to the look and feel as to the KeyEvent.VK constant that can be used as a mnemonic to access the panel.
 Icon getSmallDisplayIcon()
          Returns the small display icon for the panel.
 void hierarchyChanged(HierarchyEvent he)
          Called when the hierarchy has been changed.
private  void initializePalettesIfNecessary()
           
 void installChooserPanel(JColorChooser enclosingChooser)
          Invoked when the panel is added to the chooser.
private  void setMode(int mode)
           
 void stateChanged(ChangeEvent e)
          Invoked when the target of the listener has changed its state.
 void uninstallChooserPanel(JColorChooser enclosingChooser)
          Invoked when the panel is removed from the chooser.
 void updateChooser()
          Invoked automatically when the model's state changes.
private  void updateHSB(float h, float s, float b)
          Main internal method of updating the ui controls and the color model.
private  void updateHSBTextFields(float hue, float saturation, float brightness)
           
private  void updatePalette(float h, float s, float b)
           
private  void updateRGBTextFields(Color color)
          Updates the values of the RGB fields to reflect the new color change
private  void updateSlider(float h, float s, float b)
           
 
Methods inherited from class javax.swing.colorchooser.AbstractColorChooserPanel
getColorFromModel, getColorSelectionModel, getInt, paint
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, 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, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, 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, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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

palette

private DefaultHSBChooserPanel.HSBImage palette

sliderPalette

private DefaultHSBChooserPanel.HSBImage sliderPalette

paletteImage

private Image paletteImage

sliderPaletteImage

private Image sliderPaletteImage

slider

private JSlider slider

hField

private JSpinner hField

sField

private JSpinner sField

bField

private JSpinner bField

redField

private JTextField redField

greenField

private JTextField greenField

blueField

private JTextField blueField

isAdjusting

private boolean isAdjusting

paletteSelection

private Point paletteSelection

paletteLabel

private JLabel paletteLabel

sliderPaletteLabel

private JLabel sliderPaletteLabel

hRadio

private JRadioButton hRadio

sRadio

private JRadioButton sRadio

bRadio

private JRadioButton bRadio

PALETTE_DIMENSION

private static final int PALETTE_DIMENSION
See Also:
Constant Field Values

MAX_HUE_VALUE

private static final int MAX_HUE_VALUE
See Also:
Constant Field Values

MAX_SATURATION_VALUE

private static final int MAX_SATURATION_VALUE
See Also:
Constant Field Values

MAX_BRIGHTNESS_VALUE

private static final int MAX_BRIGHTNESS_VALUE
See Also:
Constant Field Values

currentMode

private int currentMode

HUE_MODE

private static final int HUE_MODE
See Also:
Constant Field Values

SATURATION_MODE

private static final int SATURATION_MODE
See Also:
Constant Field Values

BRIGHTNESS_MODE

private static final int BRIGHTNESS_MODE
See Also:
Constant Field Values
Constructor Detail

DefaultHSBChooserPanel

public DefaultHSBChooserPanel()
Method Detail

addPaletteListeners

private void addPaletteListeners()

updatePalette

private void updatePalette(float h,
                           float s,
                           float b)

updateSlider

private void updateSlider(float h,
                          float s,
                          float b)

updateHSBTextFields

private void updateHSBTextFields(float hue,
                                 float saturation,
                                 float brightness)

updateRGBTextFields

private void updateRGBTextFields(Color color)
Updates the values of the RGB fields to reflect the new color change


updateHSB

private void updateHSB(float h,
                       float s,
                       float b)
Main internal method of updating the ui controls and the color model.


updateChooser

public void updateChooser()
Invoked automatically when the model's state changes. It is also called by installChooserPanel to allow you to set up the initial state of your chooser. Override this method to update your ChooserPanel.

Specified by:
updateChooser in class AbstractColorChooserPanel

installChooserPanel

public void installChooserPanel(JColorChooser enclosingChooser)
Description copied from class: AbstractColorChooserPanel
Invoked when the panel is added to the chooser. If you override this, be sure to call super.

Overrides:
installChooserPanel in class AbstractColorChooserPanel
Parameters:
enclosingChooser - the panel to be added

uninstallChooserPanel

public void uninstallChooserPanel(JColorChooser enclosingChooser)
Invoked when the panel is removed from the chooser.

Overrides:
uninstallChooserPanel in class AbstractColorChooserPanel

getHSBColorFromModel

private float[] getHSBColorFromModel()
Returns an float array containing the HSB values of the selected color from the ColorSelectionModel


buildChooser

protected void buildChooser()
Builds a new chooser panel.

Specified by:
buildChooser in class AbstractColorChooserPanel

buildRGBControls

private JComponent buildRGBControls()
Creates the panel with the uneditable RGB field


buildHSBControls

private JComponent buildHSBControls()
Creates the panel with the editable HSB fields and the radio buttons.


setMode

private void setMode(int mode)

buildSliderPalettePanel

protected JComponent buildSliderPalettePanel()

initializePalettesIfNecessary

private void initializePalettesIfNecessary()

cleanupPalettesIfNecessary

private void cleanupPalettesIfNecessary()

createPaletteLabel

protected JLabel createPaletteLabel()

getDisplayName

public String getDisplayName()
Description copied from class: AbstractColorChooserPanel
Returns a string containing the display name of the panel.

Specified by:
getDisplayName in class AbstractColorChooserPanel
Returns:
the name of the display panel

getMnemonic

public int getMnemonic()
Provides a hint to the look and feel as to the KeyEvent.VK constant that can be used as a mnemonic to access the panel. A return value <= 0 indicates there is no mnemonic.

The return value here is a hint, it is ultimately up to the look and feel to honor the return value in some meaningful way.

This implementation looks up the value from the default ColorChooser.hsbMnemonic, or if it isn't available (or not an Integer) returns -1. The lookup for the default is done through the UIManager: UIManager.get("ColorChooser.rgbMnemonic");.

Overrides:
getMnemonic in class AbstractColorChooserPanel
Returns:
KeyEvent.VK constant identifying the mnemonic; <= 0 for no mnemonic
Since:
1.4
See Also:
getDisplayedMnemonicIndex()

getDisplayedMnemonicIndex

public int getDisplayedMnemonicIndex()
Provides a hint to the look and feel as to the index of the character in getDisplayName that should be visually identified as the mnemonic. The look and feel should only use this if getMnemonic returns a value > 0.

The return value here is a hint, it is ultimately up to the look and feel to honor the return value in some meaningful way. For example, a look and feel may wish to render each AbstractColorChooserPanel in a JTabbedPane, and further use this return value to underline a character in the getDisplayName.

This implementation looks up the value from the default ColorChooser.rgbDisplayedMnemonicIndex, or if it isn't available (or not an Integer) returns -1. The lookup for the default is done through the UIManager: UIManager.get("ColorChooser.hsbDisplayedMnemonicIndex");.

Overrides:
getDisplayedMnemonicIndex in class AbstractColorChooserPanel
Returns:
Character index to render mnemonic for; -1 to provide no visual identifier for this panel.
Since:
1.4
See Also:
getMnemonic()

getSmallDisplayIcon

public Icon getSmallDisplayIcon()
Description copied from class: AbstractColorChooserPanel
Returns the small display icon for the panel.

Specified by:
getSmallDisplayIcon in class AbstractColorChooserPanel
Returns:
the small display icon

getLargeDisplayIcon

public Icon getLargeDisplayIcon()
Description copied from class: AbstractColorChooserPanel
Returns the large display icon for the panel.

Specified by:
getLargeDisplayIcon in class AbstractColorChooserPanel
Returns:
the large display icon

stateChanged

public void stateChanged(ChangeEvent e)
Description copied from interface: ChangeListener
Invoked when the target of the listener has changed its state.

Specified by:
stateChanged in interface ChangeListener
Parameters:
e - a ChangeEvent object

hierarchyChanged

public void hierarchyChanged(HierarchyEvent he)
Description copied from interface: HierarchyListener
Called when the hierarchy has been changed. To discern the actual type of change, call HierarchyEvent.getChangeFlags().

Specified by:
hierarchyChanged in interface HierarchyListener
See Also:
HierarchyEvent.getChangeFlags()