com.bric.swing
Class ColorPickerPanel

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

public class ColorPickerPanel
extends javax.swing.JPanel

This is the large graphic element in the ColorPicker that depicts a wide range of colors.

This panel can operate in 6 different modes. In each mode a different property is held constant: hue, saturation, brightness, red, green, or blue. (Each property is identified with a constant in the ColorPicker class, such as: ColorPicker.HUE or ColorPicker.GREEN.)

In saturation and brightness mode, a wheel is used. Although it doesn't use as many pixels as a square does: it is a very aesthetic model since the hue can wrap around in a complete circle. (Also, on top of looks, this is how most people learn to think the color spectrum, so it has that advantage, too). In all other modes a square is used.

The user can click in this panel to select a new color. The selected color is highlighted with a circle drawn around it. Also once this component has the keyboard focus, the user can use the arrow keys to traverse the available colors.

Note this component is public and exists independently of the ColorPicker class. The only way this class is dependent on the ColorPicker class is when the constants for the modes are used.

The graphic in this panel will be based on either the width or the height of this component: depending on which is smaller.

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 int INSETS_SIZE
           
static int MAX_SIZE
          The maximum size the graphic will be.
 
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
ColorPickerPanel()
          Creates a new ColorPickerPanel
 
Method Summary
 void addChangeListener(javax.swing.event.ChangeListener l)
          This listener will be notified when the current HSB or RGB values change, depending on what mode the user is in.
protected  void fireChangeListeners()
           
 float[] getHSB()
           
 java.awt.image.WritableRaster getRaster()
           
 int[] getRGB()
           
 void init()
           
 void paint(java.awt.Graphics g)
           
 void removeChangeListener(javax.swing.event.ChangeListener l)
          Remove a ChangeListener so it is no longer notified when the selected color changes.
 void setHSB(float h, float s, float b)
          Sets the selected color of this panel.
 void setMode(int mode)
          Set the mode of this panel.
 void setRaster(java.awt.image.WritableRaster raster)
           
 void setRGB(int r, int g, int b)
          Sets the selected color of this panel.
 
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, 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, 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

MAX_SIZE

public static int MAX_SIZE
The maximum size the graphic will be. No matter how big the panel becomes, the graphic will not exceed this length.

(This is enforced because only 1 BufferedImage is used to render the graphic. This image is created once at a fixed size and is never replaced.)


INSETS_SIZE

public static int INSETS_SIZE
Constructor Detail

ColorPickerPanel

public ColorPickerPanel()
Creates a new ColorPickerPanel

Method Detail

init

public void init()
          throws java.lang.Exception
Throws:
java.lang.Exception

addChangeListener

public void addChangeListener(javax.swing.event.ChangeListener l)
This listener will be notified when the current HSB or RGB values change, depending on what mode the user is in.


removeChangeListener

public void removeChangeListener(javax.swing.event.ChangeListener l)
Remove a ChangeListener so it is no longer notified when the selected color changes.


fireChangeListeners

protected void fireChangeListeners()

paint

public void paint(java.awt.Graphics g)
Overrides:
paint in class javax.swing.JComponent

setMode

public void setMode(int mode)
Set the mode of this panel.

Parameters:
mode - This must be one of the following constants from the ColorPicker class: HUE, SAT, BRI, RED, GREEN, or BLUE

setRGB

public void setRGB(int r,
                   int g,
                   int b)
Sets the selected color of this panel.

If this panel is in HUE, SAT, or BRI mode, then this method converts these values to HSB coordinates and calls setHSB.

This method may regenerate the graphic if necessary.

Parameters:
r - the red value of the selected color.
g - the green value of the selected color.
b - the blue value of the selected color.

getHSB

public float[] getHSB()
Returns:
the HSB values of the selected color. Each value is between [0,1].

getRGB

public int[] getRGB()
Returns:
the RGB values of the selected color. Each value is between [0,255].

setHSB

public void setHSB(float h,
                   float s,
                   float b)
Sets the selected color of this panel.

If this panel is in RED, GREEN, or BLUE mode, then this method converts these values to RGB coordinates and calls setRGB.

This method may regenerate the graphic if necessary.

Parameters:
h - the hue value of the selected color.
s - the saturation value of the selected color.
b - the brightness value of the selected color.

getRaster

public java.awt.image.WritableRaster getRaster()

setRaster

public void setRaster(java.awt.image.WritableRaster raster)