Class CaroselLayout

    • Field Detail

      • numberOfItems

        protected int numberOfItems
        Number of items in the carousel (that are visible)
      • additionalData

        protected Hashtable additionalData
        List of additional information held on components in the carousel
      • rotationalOffset

        protected double rotationalOffset
        The current degree of rotation of the carousel
      • targetOffset

        protected double targetOffset
        The desired rotational offset, which will be moved to by a timer animating the carousel
    • Constructor Detail

      • CaroselLayout

        public CaroselLayout​(Container forContainer)
        Creates a new instance of the layout engine, tied to the specified container.
        Parameters:
        forContainer - The container the layout will layout
    • Method Detail

      • setNeutralContentWidth

        public void setNeutralContentWidth​(int neutralContentWidth)
        Specify the neutral content width of any laid out component.
        Parameters:
        neutralContentWidth - The neutral width of components
      • moveComponentTo

        public void moveComponentTo​(int i,
                                    Component comp)
        Moves a layout component at a particular location in the carousel
        Parameters:
        i - The location at which to insert
        comp - The component to insert
      • addLayoutComponent

        public void addLayoutComponent​(String name,
                                       Component comp)
        Name is ignored
        Specified by:
        addLayoutComponent in interface LayoutManager
        Parameters:
        name - The name of the component, ignored.
        comp - The component being added
      • 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

        public Dimension minimumLayoutSize​(Container parent)
        Cheats and bases it's size on the prefered sizes of each component
        Specified by:
        minimumLayoutSize in interface LayoutManager
        Parameters:
        parent - The container interested in the layout size
        Returns:
        The minimum size of the layout. See above.
      • preferredLayoutSize

        public Dimension preferredLayoutSize​(Container parent)
        Determine the widest and tallest dimensions, then return the height as 1.5 * the highest, and 3 * the widest
        Specified by:
        preferredLayoutSize in interface LayoutManager
        Parameters:
        parent - The container for the layout
        Returns:
        The prefered size of the layout
      • calculateCenter

        protected Point calculateCenter​(Insets insets,
                                        int width,
                                        int height,
                                        int widest)
        Determines the center of the carousel
        Parameters:
        insets - The insets of the container
        width - The width of the container
        height - The height of the container
        widest - 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

        protected boolean shouldHide​(Component comp,
                                     double angle,
                                     double s)
        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 false
        angle - The angle of the component under consideration
        s - 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 container
        insets - Insets into the target container
        width - Width of the target container
        height - Height of the target container
        widestComponent - 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 component
        x - The x-position of the component
        y - The y-position of the component
        carouselX - The x centre of the carousel
        carouselY - The y centre of the carousel
        Returns:
        A double which will be used to scale x and y co-ordinates
      • layoutContainer

        public void layoutContainer​(Container target)
        Lays out all of the components on the carosel. Using the preferred width and height to base scaling on
        Specified by:
        layoutContainer in interface LayoutManager
        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

        public void actionPerformed​(ActionEvent actionEvent)
        Manages timer actions, terminating the timer if any event is fully achieved
        Specified by:
        actionPerformed in interface ActionListener
        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

        public void setFrontMostComponent​(Component component)
        Moves the specified component to the front
        Parameters:
        component - The component move to the front
      • getPreviousComponent

        public Component getPreviousComponent​(Component component)
        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

        public Component getNextComponent​(Component component)
        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

        public int getComponentIndex​(Component comp)
        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)