Class CaroselLayout
java.lang.Object
org.pushingpixels.lafwidget.contrib.blogofbug.swing.layout.CaroselLayout
- All Implemented Interfaces:
ActionListener
,LayoutManager
,EventListener
- Direct Known Subclasses:
OffsetCaroselLayout
Layout engine for JCarousel components (although would work for any container).
It does have a closer than usual relationship with the container, sometimes causing the container to repaint.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Hashtable
List of additional information held on components in the carouselprotected LinkedList
<Component> List of components being laid outprotected int
Number of items in the carousel (that are visible)protected double
The current degree of rotation of the carouselprotected double
The desired rotational offset, which will be moved to by a timer animating the carousel -
Constructor Summary
ConstructorsConstructorDescriptionCaroselLayout
(Container forContainer) Creates a new instance of the layout engine, tied to the specified container. -
Method Summary
Modifier and TypeMethodDescriptionvoid
actionPerformed
(ActionEvent actionEvent) Manages timer actions, terminating the timer if any event is fully achievedvoid
addLayoutComponent
(String name, Component comp) Name is ignoredprotected Point
calculateCenter
(Insets insets, int width, int height, int widest) Determines the center of the carouselvoid
Moves everything to their "target" positions, without animating anythingdouble
getAngle()
Returns the current rotational angleprotected Dimension
getCarouselRadius
(Container target, Insets insets, int width, int height, int widestComponent) Determines the correct size of the carousel for the containerint
The number of components being laid out.int
getComponentIndex
(Component comp) Gets the index of the supplied componentint
The size of comopnents a neutral widthgetNextComponent
(Component component) Retrieve the component after the specified one.protected org.pushingpixels.lafwidget.contrib.blogofbug.swing.layout.CaroselLayout.CaroselPosition
getPosition
(Component comp) Gets the additional data stored by the layout manager for a given componentgetPreviousComponent
(Component component) Retrieve the component before the specified one.protected double
getScale
(double angle, double x, double y, double carouselX, double carouselY) Determines the scale to be applied to the component.protected boolean
Determines if an animation is currently playingvoid
layoutContainer
(Container target) Lays out all of the components on the carosel.minimumLayoutSize
(Container parent) Cheats and bases it's size on the prefered sizes of each componentvoid
moveComponentTo
(int i, Component comp) Moves a layout component at a particular location in the carouselpreferredLayoutSize
(Container parent) Determine the widest and tallest dimensions, then return the height as 1.5 * the highest, and 3 * the widestprotected void
Updates all of the positions of the carousel.protected int
Determines how many of the items being laid out are currently visible.void
Remove the componentvoid
setAngle
(double d) Sets the current rotational angle.void
setDepthBasedAlpha
(boolean depthBasedAlpha) Controls if items should fade as they move to the back of the carouselvoid
setFrontMostComponent
(Component component) Moves the specified component to the frontvoid
setNeutralContentWidth
(int neutralContentWidth) Specify the neutral content width of any laid out component.protected final void
setTarget
(double target) Sets a target angle to rotate to, always choses a direction that is less than or equal to 180 degreesprotected boolean
shouldHide
(Component comp, double angle, double s) Can be over-ridden to restrict the range of angles where the child component is shown
-
Field Details
-
numberOfItems
protected int numberOfItemsNumber of items in the carousel (that are visible) -
components
List of components being laid out -
additionalData
List of additional information held on components in the carousel -
rotationalOffset
protected double rotationalOffsetThe current degree of rotation of the carousel -
targetOffset
protected double targetOffsetThe desired rotational offset, which will be moved to by a timer animating the carousel
-
-
Constructor Details
-
CaroselLayout
Creates a new instance of the layout engine, tied to the specified container.- Parameters:
forContainer
- The container the layout will layout
-
-
Method Details
-
setNeutralContentWidth
public void setNeutralContentWidth(int neutralContentWidth) Specify the neutral content width of any laid out component.- Parameters:
neutralContentWidth
- The neutral width of components
-
moveComponentTo
Moves a layout component at a particular location in the carousel- Parameters:
i
- The location at which to insertcomp
- The component to insert
-
addLayoutComponent
Name is ignored- Specified by:
addLayoutComponent
in interfaceLayoutManager
- Parameters:
name
- The name of the component, ignored.comp
- The component being added
-
removeLayoutComponent
Remove the component- Specified by:
removeLayoutComponent
in interfaceLayoutManager
- Parameters:
comp
- The component being removed
-
getPosition
protected org.pushingpixels.lafwidget.contrib.blogofbug.swing.layout.CaroselLayout.CaroselPosition getPosition(Component comp) Gets the additional data stored by the layout manager for a given component- Parameters:
comp
- The component you wish retreive the data for- Returns:
- A position, which is added if it does not already exist. Never null unless you run out of memory!
-
recalculateVisibleItems
protected int recalculateVisibleItems()Determines how many of the items being laid out are currently visible.- Returns:
- How many of the items in the carousel are currently visible.
-
recalculateCarosel
protected void recalculateCarosel()Updates all of the positions of the carousel. Does not do a repaint, just does the math ready for the next one. -
minimumLayoutSize
Cheats and bases it's size on the prefered sizes of each component- Specified by:
minimumLayoutSize
in interfaceLayoutManager
- Parameters:
parent
- The container interested in the layout size- Returns:
- The minimum size of the layout. See above.
-
preferredLayoutSize
Determine the widest and tallest dimensions, then return the height as 1.5 * the highest, and 3 * the widest- Specified by:
preferredLayoutSize
in interfaceLayoutManager
- Parameters:
parent
- The container for the layout- Returns:
- The prefered size of the layout
-
calculateCenter
Determines the center of the carousel- Parameters:
insets
- The insets of the containerwidth
- The width of the containerheight
- The height of the containerwidest
- The widest component- Returns:
- A point at the center of the carousel
-
setDepthBasedAlpha
public void setDepthBasedAlpha(boolean depthBasedAlpha) Controls if items should fade as they move to the back of the carousel- Parameters:
depthBasedAlpha
- True if they should fade, false if they shouldn't
-
shouldHide
Can be over-ridden to restrict the range of angles where the child component is shown- Parameters:
comp
- Controls if components are hidden or not, in the case of this layout it always returns falseangle
- The angle of the component under considerations
- The scale of the component under consideration- Returns:
- false if the component should not be shown
-
getCarouselRadius
protected Dimension getCarouselRadius(Container target, Insets insets, int width, int height, int widestComponent) Determines the correct size of the carousel for the container- Parameters:
target
- The target containerinsets
- Insets into the target containerwidth
- Width of the target containerheight
- Height of the target containerwidestComponent
- The widest component in the container- Returns:
- The
-
getScale
protected double getScale(double angle, double x, double y, double carouselX, double carouselY) Determines the scale to be applied to the component. The default calculation divides the y co-ordinate by the y-cordinate of the centre. Other implimentations may use some of the other parameters- Parameters:
angle
- The angle of the componentx
- The x-position of the componenty
- The y-position of the componentcarouselX
- The x centre of the carouselcarouselY
- The y centre of the carousel- Returns:
- A double which will be used to scale x and y co-ordinates
-
layoutContainer
Lays out all of the components on the carosel. Using the preferred width and height to base scaling on- Specified by:
layoutContainer
in interfaceLayoutManager
- Parameters:
target
- The container currently being laid out
-
getAngle
public double getAngle()Returns the current rotational angle- Returns:
- The current rotated angle in radians
-
setAngle
public void setAngle(double d) Sets the current rotational angle. Will not cause an animation to start- Parameters:
d
- The desired angle in radians
-
isAnimating
protected boolean isAnimating()Determines if an animation is currently playing- Returns:
- true if it is animating, false if it isn't
-
actionPerformed
Manages timer actions, terminating the timer if any event is fully achieved- Specified by:
actionPerformed
in interfaceActionListener
- Parameters:
actionEvent
- the action event, although this will always be the timer
-
finalizeLayoutImmediately
public void finalizeLayoutImmediately()Moves everything to their "target" positions, without animating anything -
setTarget
protected final void setTarget(double target) Sets a target angle to rotate to, always choses a direction that is less than or equal to 180 degrees- Parameters:
target
- The target angle in radians
-
setFrontMostComponent
Moves the specified component to the front- Parameters:
component
- The component move to the front
-
getPreviousComponent
Retrieve the component before the specified one. It does not filter out invisible ones.- Parameters:
component
- The component you are looking for the one before for.- Returns:
- The component before it
-
getNextComponent
Retrieve the component after the specified one. It does not filter out invisible ones.- Parameters:
component
- The component- Returns:
- The one after it
-
getComponentCount
public int getComponentCount()The number of components being laid out. Does not included hidden ones- Returns:
- The number of components
-
getComponentIndex
Gets the index of the supplied component- Parameters:
comp
- The component- Returns:
- The index
-
getNeutralContentWidth
public int getNeutralContentWidth()The size of comopnents a neutral width- Returns:
- The size of components at neutral width (scale 1.0)
-