Class CaroselLayout
java.lang.Object
org.pushingpixels.radiance.theming.extras.internal.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.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected HashtableList of additional information held on components in the carouselprivate TimerTime for driving animationsprotected LinkedList<Component> List of components being laid outprivate ContainerThe container the layout is...private booleanShould items furtehr away from the observer be faded out?private intThe width of a component when the scale is 1.0protected intNumber of items in the carousel (that are visible)protected doubleThe current degree of rotation of the carouselprotected doubleThe 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 TypeMethodDescriptionvoidactionPerformed(ActionEvent actionEvent) Manages timer actions, terminating the timer if any event is fully achievedvoidaddLayoutComponent(String name, Component comp) Name is ignoredprotected PointcalculateCenter(Insets insets, int width, int height, int widest) Determines the center of the carouselvoidMoves everything to their "target" positions, without animating anythingdoublegetAngle()Returns the current rotational angleprotected DimensiongetCarouselRadius(Container target, Insets insets, int width, int height, int widestComponent) Determines the correct size of the carousel for the containerintThe number of components being laid out.intgetComponentIndex(Component comp) Gets the index of the supplied componentintThe size of comopnents a neutral widthgetNextComponent(Component component) Retrieve the component after the specified one.protected CaroselLayout.CaroselPositiongetPosition(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 doublegetScale(double angle, double x, double y, double carouselX, double carouselY) Determines the scale to be applied to the component.protected booleanDetermines if an animation is currently playingvoidlayoutContainer(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 componentvoidmoveComponentTo(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 voidUpdates all of the positions of the carousel.protected intDetermines how many of the items being laid out are currently visible.voidRemove the componentvoidsetAngle(double d) Sets the current rotational angle.voidsetDepthBasedAlpha(boolean depthBasedAlpha) Controls if items should fade as they move to the back of the carouselvoidsetFrontMostComponent(Component component) Moves the specified component to the frontvoidsetNeutralContentWidth(int neutralContentWidth) Specify the neutral content width of any laid out component.protected final voidsetTarget(double target) Sets a target angle to rotate to, always choses a direction that is less than or equal to 180 degreesprotected booleanshouldHide(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 -
animationTimer
Time for driving animations -
container
The container the layout is... laying out -
depthBasedAlpha
private boolean depthBasedAlphaShould items furtehr away from the observer be faded out? -
neutralContentWidth
private int neutralContentWidthThe width of a component when the scale is 1.0
-
-
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:
addLayoutComponentin interfaceLayoutManager- Parameters:
name- The name of the component, ignored.comp- The component being added
-
removeLayoutComponent
Remove the component- Specified by:
removeLayoutComponentin interfaceLayoutManager- Parameters:
comp- The component being removed
-
getPosition
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:
minimumLayoutSizein 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:
preferredLayoutSizein 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:
layoutContainerin 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:
actionPerformedin 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
-
getNextComponent
-
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)
-