Package org.pushingpixels.lafwidget.contrib.blogofbug.swing.components

# Class JCarouselMenu

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
org.pushingpixels.lafwidget.contrib.blogofbug.swing.components.GradientPanel
org.pushingpixels.lafwidget.contrib.blogofbug.swing.components.JCarouselMenu

All Implemented Interfaces:
  `ComponentListener`, `KeyListener`, `MouseListener`, `MouseWheelListener`, `ImageObserver`, `MenuContainer`, `Serializable`, `EventListener`, `Accessible`, `ChangeListener`, `ListSelectionListener`

public class JCarouselMenu extends GradientPanel implements ListSelectionListener, MouseListener, KeyListener, ChangeListener, MouseWheelListener
Shows a carousel offset to the left with a menu of actions on the right.

See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected class`
`JCarouselMenu.CarouselListCellRenderer`
ListCellRenderer for the Carousel uses an image border to draw a nice border around the menu item when it is selected
`class`
`JCarouselMenu.MenuItem`
A menu item inside the carousel

## Nested classes/interfaces inherited from class javax.swing.JPanel

`JPanel.AccessibleJPanel`

## Nested classes/interfaces inherited from class javax.swing.JComponent

`JComponent.AccessibleJComponent`

## Nested classes/interfaces inherited from class java.awt.Container

`Container.AccessibleAWTContainer`

## Nested classes/interfaces inherited from class java.awt.Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

## Field Summary

### Fields inherited from class org.pushingpixels.lafwidget.contrib.blogofbug.swing.components.GradientPanel

`cache, end, gp, start`

### Fields inherited from class javax.swing.JComponent

`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

`accessibleContext, 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

Constructors
Constructor
Description
`JCarouselMenu()`
Creates a new instance
`JCarouselMenu(ImageBorder border)`
Creates a new instance of JCarouselMenu

## Method Summary

Modifier and Type
Method
Description
`Component`
`add(Component component, String label)`
Adds a component to the carousel menu that will be brought into view when the user clicks on the associated item
`Component`
`add(Image image, String label)`
Adds an image (with a label) and returns the component created to represent them
`Component`
`add(Image image, String label, int width, int height)`
Deprecated.
Use add(Image, String) instead
`Component`
`add(String imageURL, String label)`
Adds an image based on the imageURL and a text label, returning the component that is created as a result
`Component`
`add(String imageURL, String label, int width, int height)`
Deprecated.
Use add(imageURL, label) instead
`Component`
`add(Action action)`
Adds an action to the list, creating a menu item and a carousel entry
`Component`
`add(Action action, int width, int height)`
Deprecated.
Use add(imageURL) instead
`JList`
`getList()`
Returns the list part of the carousel menu
`Dimension`
`getPreferredSize()`
Return the preferred size of the component
`void`
`keyPressed(KeyEvent keyEvent)`
Listen for key events, when we see one that looks like it should wrap, set up the lastSelection variable to trigger a change on release of the key
`void`
`keyReleased(KeyEvent keyEvent)`
If the wrap-around has detected the need to wrap, sets the selection to the value calculated when the key was first pressed.
`void`
`keyTyped(KeyEvent keyEvent)`
Don't Care *
`void`
`mouseClicked(MouseEvent mouseEvent)`
Look to see if an item in the list is double clicked, and launch the action if it is
`void`
`mouseEntered(MouseEvent mouseEvent)`
Don't Care *
`void`
`mouseExited(MouseEvent mouseEvent)`
Don't Care *
`void`
`mousePressed(MouseEvent mouseEvent)`
Don't Care *
`void`
`mouseReleased(MouseEvent mouseEvent)`
Don't Care *
`void`
`mouseWheelMoved(MouseWheelEvent mouseWheelEvent)`
Moves the selected menu up or down when the mouse wheel scrolls
`protected void`
`processAction()`
Launch the action associated with the currently selected list item
`void`
`remove(Component component)`
Removes a component from the menu
`void`
`setCellImageBorder(ImageBorder imageBorder)`
Sets the image border used to draw around the items in the menu
`void`
`setCellRenderer(ListCellRenderer cellRenderer)`
Specifies the list cell renderer used to draw the items in the menu
`void`
`setMenuScrollColor(Color color)`
Allows the background color to the menu (left side) to be set
`void`
`setSelectedIndex(int i)`
Sets the selected item in the menu
`void`
`setUpDownColor(Color color)`
Sets the color the up and down buttons are drawn
`void`
`setUpDownIcons(Icon upIcon, Icon downIcon)`
Sets icons to use to show the up and down buttons
`void`
`stateChanged(ChangeEvent e)`
Detect when the list selection changes, and respond by updating the state of the two "arrow" buttons.
`void`
`valueChanged(ListSelectionEvent listSelectionEvent)`
Detect when the list selection changes, and respond by rotating the carousel to show that item

### Methods inherited from class org.pushingpixels.lafwidget.contrib.blogofbug.swing.components.GradientPanel

`componentHidden, componentMoved, componentResized, componentShown, paintComponent, setBackground, setBackground`

### 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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, 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, 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, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### JCarouselMenu

public JCarouselMenu(ImageBorder border)
Creates a new instance of JCarouselMenu

Parameters:
  `border` - The border to use to draw items in the menu

### JCarouselMenu

public JCarouselMenu()
Creates a new instance

## Method Details

### setUpDownColor

public void setUpDownColor(Color color)
Sets the color the up and down buttons are drawn

Parameters:
  `color` - The desired color

### getList

public JList getList()
Returns the list part of the carousel menu

Returns:
  The JList object

### setSelectedIndex

public void setSelectedIndex(int i)
Sets the selected item in the menu

Parameters:
  `i` - The index of the item to select

### add

public Component add(Component component, String label)
Adds a component to the carousel menu that will be brought into view when the user clicks on the associated item

Parameters:
  `component` - The component
  `label` - The text to appear in the menu
Returns:
  The created component

### remove

public void remove(Component component)
Removes a component from the menu

Overrides:
  `remove` in class `Container`
Parameters:
  `component` - The component to remove

### add

public Component add(Image image, String label, int width, int height)
Deprecated.
Use add(Image, String) instead
Adds an image to the menu.

Parameters:
  `image` - The image
  `label` - The text
  `width` - Prefered width
  `height` - Prefered height
Returns:
  The created component

### add

public Component add(Image image, String label)
Adds an image (with a label) and returns the component created to represent them

Parameters:
  `image` - The image to display
  `label` - The label to show
Returns:
  The component created

### add

public Component add(Action action, int width, int height)
Deprecated.
Use add(imageURL) instead
Adds an action to the menu

Parameters:
  `action` - The action to add
  `width` - The width
  `height` - The height
Returns:
  The created component

### add

public Component add(Action action)
Adds an action to the list, creating a menu item and a carousel entry

Parameters:
  `action` - The action to add
Returns:
  The resultant component

### add

public Component add(String imageURL, String label, int width, int height)
Deprecated.
Use add(imageURL, label) instead
Adds an image (through a URL) to the menu

Parameters:
  `imageURL` - URL of the image
  `label` - Text message
  `width` - width
  `height` - height
Returns:
  The created component

### add

public Component add(String imageURL, String label)
Adds an image based on the imageURL and a text label, returning the component that is created as a result

Parameters:
  `imageURL` - The URL of the image
  `label` - Text label to be shown in the menu
Returns:
  The created component

### getPreferredSize

public Dimension getPreferredSize()
Return the preferred size of the component

Overrides:
  `getPreferredSize` in class `JComponent`
Returns:
  The prefered dimensions of the component

### stateChanged

public void stateChanged(ChangeEvent e)
Detect when the list selection changes, and respond by updating the state of the two "arrow" buttons. Contributed by Sebastian Charpentier.

Specified by:
  `stateChanged` in interface `ChangeListener`
Parameters:
  `e` - The state changed event
See Also:
  - `ChangeListener.stateChanged(javax.swing.event.ChangeEvent)`

### valueChanged

public void valueChanged(ListSelectionEvent listSelectionEvent)
Detect when the list selection changes, and respond by rotating the carousel to show that item

Specified by:
  `valueChanged` in interface `ListSelectionListener`
Parameters:
  `listSelectionEvent` - The list selection change event

### processAction

protected void processAction()
Launch the action associated with the currently selected list item

### mouseClicked

public void mouseClicked(MouseEvent mouseEvent)
Look to see if an item in the list is double clicked, and launch the action if it is

Specified by:
  `mouseClicked` in interface `MouseListener`
Parameters:
  `mouseEvent` - The mouse event

### mousePressed

public void mousePressed(MouseEvent mouseEvent)
Don't Care *

Specified by:
  `mousePressed` in interface `MouseListener`
Parameters:
  `mouseEvent` - The mouse event

### mouseReleased

public void mouseReleased(MouseEvent mouseEvent)
Don't Care *

Specified by:
  `mouseReleased` in interface `MouseListener`
Parameters:
  `mouseEvent` - The mouse event

### mouseEntered

public void mouseEntered(MouseEvent mouseEvent)
Don't Care *

Specified by:
  `mouseEntered` in interface `MouseListener`
Parameters:
  `mouseEvent` - The mouse event

### mouseExited

public void mouseExited(MouseEvent mouseEvent)
Don't Care *

Specified by:
  `mouseExited` in interface `MouseListener`
Parameters:
  `mouseEvent` - The mouse event

### keyTyped

public void keyTyped(KeyEvent keyEvent)
Don't Care *

Specified by:
  `keyTyped` in interface `KeyListener`
Parameters:
  `keyEvent` - The key event

### keyPressed

public void keyPressed(KeyEvent keyEvent)
Listen for key events, when we see one that looks like it should wrap, set up the lastSelection variable to trigger a change on release of the key

Specified by:
  `keyPressed` in interface `KeyListener`
Parameters:
  `keyEvent` - The key event

### setCellImageBorder

public void setCellImageBorder(ImageBorder imageBorder)
Sets the image border used to draw around the items in the menu

Parameters:
  `imageBorder` - The desired image border

### setCellRenderer

public void setCellRenderer(ListCellRenderer cellRenderer)
Specifies the list cell renderer used to draw the items in the menu

Parameters:
  `cellRenderer` - The list cell renderer

### keyReleased

public void keyReleased(KeyEvent keyEvent)
If the wrap-around has detected the need to wrap, sets the selection to the value calculated when the key was first pressed.

Specified by:
  `keyReleased` in interface `KeyListener`
Parameters:
  `keyEvent` - The key event

### mouseWheelMoved

public void mouseWheelMoved(MouseWheelEvent mouseWheelEvent)
Moves the selected menu up or down when the mouse wheel scrolls

Specified by:
  `mouseWheelMoved` in interface `MouseWheelListener`
Parameters:
  `mouseWheelEvent` - The mouse wheel event

### setUpDownIcons

public void setUpDownIcons(Icon upIcon, Icon downIcon)
Sets icons to use to show the up and down buttons

Parameters:
  `upIcon` - The icon to use for up
  `downIcon` - The icon to use for down

### setMenuScrollColor

public void setMenuScrollColor(Color color)
Allows the background color to the menu (left side) to be set

Parameters:
  `color` - Sets the background color to the menu