Class JCarosel
- 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.JCarosel
-
- All Implemented Interfaces:
ComponentListener
,MouseListener
,MouseWheelListener
,ImageObserver
,MenuContainer
,Serializable
,EventListener
,Accessible
public class JCarosel extends GradientPanel implements MouseListener, MouseWheelListener
A carousel component which lays out components around a carousel, moving each to the front as it is clicked on. Double clicking will fire the action associated with the compnent if it has one, or give it the focus if it does not. Note this will be changed to only allow RichComponents in the future.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
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 Modifier and Type Field Description protected int
DEFAULT_CONTENT_WIDTH
The prefered width of the components in the container, everything will be scaled to this width for neutral scaling (1.0)static String
FRONT_COMPONENT_CHANGE
The property that is set when a new component comes to the front.protected Component
lastWheeledTo
The last component the wheel selected.protected CaroselLayout
layout
The layout being used for the carouselprotected int
spinStartDelay
Delay in milliseconds from the first click to the start of the spin, this gives implementors using a double click anywhere to fire an event a chance for their users to get the double click message before the component spins around.-
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
-
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Component
add(Component component)
Adds a component to the carouselComponent
add(Image image, String text)
Adds an image to the carouselComponent
add(String imageURL)
Adds a new image to the carouselComponent
add(String imageURL, int width, int height)
Deprecated.This function will be removed, use add(String imageURL) instead.Component
add(String imageURL, String textLabel)
Adds a new image to the carouselComponent
add(String imageURL, String text, int width, int height)
Deprecated.This function will be removed, use setNeutralWidth() on JCarousel instead.void
bringToFront(Component component)
Brings the specified component to the front of the carouselvoid
finalizeLayoutImmediately()
Moves everything to their final positionsComponent
getFrontmost()
Which component is at the frontint
getSpinStartDelay()
Returns the spin start delayComponent
insertAt(int i, String imageURL, int width, int height)
Inserts a new object at a specific locationComponent
insertAt(int i, String imageURL, String text, int width, int height)
Inserts a new object at a specific locationvoid
insertComponentAt(int i, Component comp)
Inserts a component at the specified indexvoid
mouseClicked(MouseEvent mouseEvent)
Bring the "clicked" component to the front.void
mouseEntered(MouseEvent mouseEvent)
Not interestedvoid
mouseExited(MouseEvent mouseEvent)
Not interestedvoid
mousePressed(MouseEvent mouseEvent)
Not interestedvoid
mouseReleased(MouseEvent mouseEvent)
Not interestedvoid
mouseWheelMoved(MouseWheelEvent mouseWheelEvent)
When event received will spin the carousel to select the next object.void
remove(Component component)
Removes the component from the carouselvoid
setContentWidth(int contentWidth)
Sets the prefered width of the components inside the carousel, this is the neutral width that will change as the component is scaled, but at 9 and 6 o'clock where the scale is one they will be this width.void
setDepthBasedAlpha(boolean useDepthBased)
If set to true the carousel will fade out components as they move away from the front of the carousel (6 o'clock)void
setLayout(CaroselLayout layout)
Specifies which type of CarouselLayout to be used to lay the component out around the carousel Any looping layout can be used.void
setSpinStartDelay(int spinStartDelay)
Sets the delay between clicking on a component in the carousel, and the spin starting to move that component to the front.-
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, getPreferredSize, 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, 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
-
-
-
-
Field Detail
-
FRONT_COMPONENT_CHANGE
public static final String FRONT_COMPONENT_CHANGE
The property that is set when a new component comes to the front. To use it add a property change listener for it, useful for keeping animations synchronized.- See Also:
- Constant Field Values
-
layout
protected CaroselLayout layout
The layout being used for the carousel
-
lastWheeledTo
protected Component lastWheeledTo
The last component the wheel selected. Used to ensure we don't move too far around why they are wheeling and they turn back on themselves creating a nasty oscilation in the animation (everything works fine, it's just not purty)
-
DEFAULT_CONTENT_WIDTH
protected int DEFAULT_CONTENT_WIDTH
The prefered width of the components in the container, everything will be scaled to this width for neutral scaling (1.0)
-
spinStartDelay
protected int spinStartDelay
Delay in milliseconds from the first click to the start of the spin, this gives implementors using a double click anywhere to fire an event a chance for their users to get the double click message before the component spins around.
-
-
Method Detail
-
setContentWidth
public void setContentWidth(int contentWidth)
Sets the prefered width of the components inside the carousel, this is the neutral width that will change as the component is scaled, but at 9 and 6 o'clock where the scale is one they will be this width.- Parameters:
contentWidth
- The prefered width.
-
setDepthBasedAlpha
public void setDepthBasedAlpha(boolean useDepthBased)
If set to true the carousel will fade out components as they move away from the front of the carousel (6 o'clock)- Parameters:
useDepthBased
- True to fade components as they move to the back, false to not do it
-
setLayout
public void setLayout(CaroselLayout layout)
Specifies which type of CarouselLayout to be used to lay the component out around the carousel Any looping layout can be used. Mobius strip layout anyone?- Parameters:
layout
- The carousel layout to use
-
add
public Component add(Image image, String text)
Adds an image to the carousel- Parameters:
image
- The image to addtext
- The text label- Returns:
- The component created, normally a reflected image label
-
remove
public void remove(Component component)
Removes the component from the carousel
-
add
public Component add(String imageURL, int width, int height)
Deprecated.This function will be removed, use add(String imageURL) instead.The image to add and it's width and height- Parameters:
imageURL
- The URLwidth
- The desired rendering widthheight
- The desired rendering height- Returns:
- The component created
-
add
public Component add(String imageURL, String text, int width, int height)
Deprecated.This function will be removed, use setNeutralWidth() on JCarousel instead.Add the image, and it's label to the carousel- Parameters:
imageURL
- The image URLtext
- The text labelwidth
- The widthheight
- The height- Returns:
- The component created to hold the image
-
bringToFront
public void bringToFront(Component component)
Brings the specified component to the front of the carousel- Parameters:
component
- The component to bring to the front
-
getFrontmost
public Component getFrontmost()
Which component is at the front- Returns:
- The component at the front (by default 6 o'clock)
-
mouseClicked
public void mouseClicked(MouseEvent mouseEvent)
Bring the "clicked" component to the front. Delays by 200ms to allow for a double click- Specified by:
mouseClicked
in interfaceMouseListener
- Parameters:
mouseEvent
- Brings the component clicked on by the mouse to the front
-
setSpinStartDelay
public void setSpinStartDelay(int spinStartDelay)
Sets the delay between clicking on a component in the carousel, and the spin starting to move that component to the front. The longer it is, the easier it is to double click on a non-front component- Parameters:
spinStartDelay
-
-
getSpinStartDelay
public int getSpinStartDelay()
Returns the spin start delay- Returns:
- The delay in ms between the click and the spin
-
insertComponentAt
public void insertComponentAt(int i, Component comp)
Inserts a component at the specified index- Parameters:
i
- The indexcomp
- The component
-
insertAt
public Component insertAt(int i, String imageURL, int width, int height)
Inserts a new object at a specific location- Parameters:
i
- The position on the carouselimageURL
- The URL of the imagewidth
- The width of the imageheight
- The height of the image- Returns:
- The component created to show the image (usually a ReflectedImageLabel but this may change)
-
insertAt
public Component insertAt(int i, String imageURL, String text, int width, int height)
Inserts a new object at a specific location- Parameters:
i
- The position on the carouselimageURL
- The URL of the imagetext
- The text labelwidth
- The prefered width of the imageheight
- The prefered height of the image- Returns:
- The component created to represent the image, currently reflected image label but may change
-
finalizeLayoutImmediately
public void finalizeLayoutImmediately()
Moves everything to their final positions
-
mousePressed
public void mousePressed(MouseEvent mouseEvent)
Not interested- Specified by:
mousePressed
in interfaceMouseListener
- Parameters:
mouseEvent
- Ignored
-
mouseReleased
public void mouseReleased(MouseEvent mouseEvent)
Not interested- Specified by:
mouseReleased
in interfaceMouseListener
- Parameters:
mouseEvent
- Ignored
-
mouseEntered
public void mouseEntered(MouseEvent mouseEvent)
Not interested- Specified by:
mouseEntered
in interfaceMouseListener
- Parameters:
mouseEvent
- Ignored
-
mouseExited
public void mouseExited(MouseEvent mouseEvent)
Not interested- Specified by:
mouseExited
in interfaceMouseListener
- Parameters:
mouseEvent
- Ignored
-
mouseWheelMoved
public void mouseWheelMoved(MouseWheelEvent mouseWheelEvent)
When event received will spin the carousel to select the next object. Because the wheel can be spun quicker than the carousel animates it keeps track of the target (so the user may have selected something three components away, althought the animation has not yet finished moving past the first comopnent)- Specified by:
mouseWheelMoved
in interfaceMouseWheelListener
- Parameters:
mouseWheelEvent
- The event object
-
add
public Component add(String imageURL)
Adds a new image to the carousel- Parameters:
imageURL
- The image- Returns:
- The component created
-
-