Class MultiThumbSliderUI<T>

    • Field Detail

      • THUMB_SHAPE_PROPERTY

        public static final String THUMB_SHAPE_PROPERTY
        The Swing client property associated with a Thumb.
        See Also:
        MultiThumbSliderUI.Thumb
      • MAX_LENGTH

        int MAX_LENGTH
        The maximum width returned by getMaximumSize(). (or if the slider is vertical, this is the maximum height.)
      • MIN_LENGTH

        int MIN_LENGTH
        The minimum width returned by getMinimumSize(). (or if the slider is vertical, this is the minimum height.)
      • PREF_LENGTH

        int PREF_LENGTH
        The maximum width returned by getPreferredSize(). (or if the slider is vertical, this is the preferred height.)
      • DEPTH

        int DEPTH
        The height of a horizontal slider -- or width of a vertical slider.
      • thumbPositions

        int[] thumbPositions
        The pixel position of the thumbs. This may be x or y coordinates, depending on whether this slider is horizontal or vertical
      • thumbIndications

        protected float[] thumbIndications
        A float from zero to one, indicating whether that thumb should be highlighted or not.
      • indication

        float indication
        The overall indication of the thumbs. At one they should be opaque, at zero they should be transparent.
      • trackRect

        protected Rectangle trackRect
        The rectangle the track should be painted in.
      • animatingThread

        Thread animatingThread
      • animatingRunnable

        Runnable animatingRunnable
      • mouseInside

        protected boolean mouseInside
      • mouseIsDown

        protected boolean mouseIsDown
    • Constructor Detail

    • Method Detail

      • getPreferredComponentDepth

        protected abstract int getPreferredComponentDepth()
        Return the typical height of a horizontally oriented slider, or the width of the vertically oriented slider.
        Returns:
        the typical height of a horizontally oriented slider, or the width of the vertically oriented slider.
      • getThumbSize

        protected Dimension getThumbSize​(int thumbIndex)
      • getThumbShape

        public Shape getThumbShape​(int thumbIndex)
        Create the shape used to render a specific thumb.
        Parameters:
        thumbIndex - the index of the thumb to render.
        Returns:
        the shape used to render a specific thumb.
        See Also:
        getThumbCenter(int), getThumb(int)
      • getThumbShape

        public Shape getThumbShape​(int thumbIndex,
                                   Point2D center)
        Create the shape used to render a specific thumb.
        Parameters:
        thumbIndex - the index of the thumb to render.
        center - an optional center to focus the thumb around. If this is null then the current (real) center is used, but this can be supplied manually to consider possible shapes and visual size constraints based on the current collision policy.
        Returns:
        the shape used to render a specific thumb.
        See Also:
        getThumbCenter(int), getThumb(int)
      • getThumbCenter

        public Point2D getThumbCenter​(int thumbIndex)
        Calculate the thumb center
        Parameters:
        thumbIndex - the index of the thumb to consult.
        Returns:
        the center of a given thumb
      • getThumbCenter

        public Point2D getThumbCenter​(float position)
        Calculate the thumb center based on a fractional position
        Parameters:
        position - a value from [0,1]
        Returns:
        the center of a potential thumbnail for this position.
      • getThumb

        public MultiThumbSliderUI.Thumb getThumb​(int thumbIndex)
        Return the Thumb option used to render a specific thumb. The default implementation here consults the client property MultiThumbSliderUI.THUMB_SHAPE_PROPERTY, and returns Circle by default.
        Parameters:
        thumbIndex - the index of the thumb to render.
        Returns:
        the Thumb option used to render a specific thumb.
      • getProperty

        public static <K> K getProperty​(JComponent jc,
                                        String propertyName,
                                        K defaultValue)
        This retrieves a property. If the component has this property manually set (by calling component.putClientProperty()), then that value will be returned. Otherwise this method refers to UIManager.get(). If that value is missing, this returns defaultValue
        Parameters:
        jc - component
        propertyName - the property name
        defaultValue - if no other value is found, this is returned
        Returns:
        the property value
      • validatePositions

        protected boolean validatePositions​(MultiThumbSliderUI.State state)
        Makes sure the thumbs are in the right order.
        Parameters:
        state - state
        Returns:
        true if the thumbs are valid. False if there are two thumbs with the same value (this is not allowed)
      • addThumb

        protected boolean addThumb​(int index1,
                                   int index2)
        This will try to add a thumb between index1 and index2.

        This method will not add a thumb if there is already a very small distance between these two endpoints

        Parameters:
        index1 - low value
        index2 - high value
        Returns:
        true if a new thumb was added
      • updateIndication

        protected void updateIndication()
      • calculateGeometry

        protected void calculateGeometry()
      • calculateTrackRect

        protected Rectangle calculateTrackRect()
      • paintTrack

        protected abstract void paintTrack​(Graphics2D g)
      • paintFocus

        protected abstract void paintFocus​(Graphics2D g)
      • paintThumbs

        protected abstract void paintThumbs​(Graphics2D g)