Class JCarosel

    • 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.
    • Constructor Detail

      • 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 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​(Component component)
        Adds a component to the carousel
        Overrides:
        add in class Container
        Parameters:
        component - The component to add to the carousel
        Returns:
        The component
      • add

        public Component add​(Image image,
                             String text)
        Adds an image to the carousel
        Parameters:
        image - The image to add
        text - The text label
        Returns:
        The component created, normally a reflected image label
      • remove

        public void remove​(Component component)
        Removes the component from the carousel
        Overrides:
        remove in class Container
        Parameters:
        component - The component to remove
      • 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 URL
        width - The desired rendering width
        height - 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 URL
        text - The text label
        width - The width
        height - 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 interface MouseListener
        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 index
        comp - 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 carousel
        imageURL - The URL of the image
        width - The width of the image
        height - 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 carousel
        imageURL - The URL of the image
        text - The text label
        width - The prefered width of the image
        height - 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
      • 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 interface MouseWheelListener
        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
      • add

        public Component add​(String imageURL,
                             String textLabel)
        Adds a new image to the carousel
        Parameters:
        imageURL - The image
        textLabel - The label
        Returns:
        The component created