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
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:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intThe prefered width of the components in the container, everything will be scaled to this width for neutral scaling (1.0)static final StringThe property that is set when a new component comes to the front.protected ComponentThe last component the wheel selected.protected CaroselLayoutThe layout being used for the carouselprotected intDelay 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, startFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionAdds a component to the carouselAdds an image to the carouselAdds a new image to the carouselDeprecated.This function will be removed, use add(String imageURL) instead.Adds a new image to the carouselDeprecated.This function will be removed, use setNeutralWidth() on JCarousel instead.voidbringToFront(Component component) Brings the specified component to the front of the carouselvoidMoves everything to their final positionsWhich component is at the frontintReturns the spin start delayInserts a new object at a specific locationInserts a new object at a specific locationvoidinsertComponentAt(int i, Component comp) Inserts a component at the specified indexvoidmouseClicked(MouseEvent mouseEvent) Bring the "clicked" component to the front.voidmouseEntered(MouseEvent mouseEvent) Not interestedvoidmouseExited(MouseEvent mouseEvent) Not interestedvoidmousePressed(MouseEvent mouseEvent) Not interestedvoidmouseReleased(MouseEvent mouseEvent) Not interestedvoidmouseWheelMoved(MouseWheelEvent mouseWheelEvent) When event received will spin the carousel to select the next object.voidRemoves the component from the carouselvoidsetContentWidth(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.voidsetDepthBasedAlpha(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)voidsetLayout(CaroselLayout layout) Specifies which type of CarouselLayout to be used to lay the component out around the carousel Any looping layout can be used.voidsetSpinStartDelay(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, setBackgroundMethods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods 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, updateMethods 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, validateTreeMethods 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 Details
-
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:
-
layout
The layout being used for the carousel -
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_WIDTHThe prefered width of the components in the container, everything will be scaled to this width for neutral scaling (1.0) -
spinStartDelay
protected int spinStartDelayDelay 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.
-
-
Constructor Details
-
JCarosel
public JCarosel()Creates a new instance of JCarosel -
JCarosel
public JCarosel(int contentWidth) Creates a new Carousel specifying the prefered width up front- Parameters:
contentWidth- The prefered width of component at neutral scale (3 or 9 o'clock)
-
-
Method Details
-
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
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
Adds a component to the carousel -
add
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
Removes the component from the carousel -
add
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
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
Brings the specified component to the front of the carousel- Parameters:
component- The component to bring to the front
-
getFrontmost
Which component is at the front- Returns:
- The component at the front (by default 6 o'clock)
-
mouseClicked
Bring the "clicked" component to the front. Delays by 200ms to allow for a double click- Specified by:
mouseClickedin 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
Inserts a component at the specified index- Parameters:
i- The indexcomp- The component
-
insertAt
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
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
Not interested- Specified by:
mousePressedin interfaceMouseListener- Parameters:
mouseEvent- Ignored
-
mouseReleased
Not interested- Specified by:
mouseReleasedin interfaceMouseListener- Parameters:
mouseEvent- Ignored
-
mouseEntered
Not interested- Specified by:
mouseEnteredin interfaceMouseListener- Parameters:
mouseEvent- Ignored
-
mouseExited
Not interested- Specified by:
mouseExitedin interfaceMouseListener- Parameters:
mouseEvent- Ignored
-
mouseWheelMoved
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:
mouseWheelMovedin interfaceMouseWheelListener- Parameters:
mouseWheelEvent- The event object
-
add
Adds a new image to the carousel- Parameters:
imageURL- The image- Returns:
- The component created
-
add
Adds a new image to the carousel- Parameters:
imageURL- The imagetextLabel- The label- Returns:
- The component created
-