Class MultiThumbSliderUi<T>

java.lang.Object
javax.swing.plaf.ComponentUI
com.bric.multislider.MultiThumbSliderUi<T>
Type Parameters:
T - the type
All Implemented Interfaces:
MouseListener, MouseMotionListener, EventListener
Direct Known Subclasses:
DefaultMultiThumbSliderUi

public abstract class MultiThumbSliderUi<T> extends ComponentUI implements MouseListener, MouseMotionListener
This is the abstract UI for MultiThumbSliders
  • Field Details

    • THUMB_SHAPE_PROPERTY

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

      PropertyChangeListener thumbShapeListener
    • slider

      protected MultiThumbSlider<T> slider
    • 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
    • focusListener

      FocusListener focusListener
    • keyListener

      KeyListener keyListener
    • propertyListener

      PropertyChangeListener propertyListener
    • compListener

      ComponentListener compListener
  • Constructor Details

  • Method Details

    • getMaximumSize

      public Dimension getMaximumSize(JComponent s)
      Overrides:
      getMaximumSize in class ComponentUI
    • getMinimumSize

      public Dimension getMinimumSize(JComponent s)
      Overrides:
      getMinimumSize in class ComponentUI
    • getPreferredSize

      public Dimension getPreferredSize(JComponent s)
      Overrides:
      getPreferredSize in class ComponentUI
    • 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.
    • mousePressed

      public void mousePressed(MouseEvent e)
      Specified by:
      mousePressed in interface MouseListener
    • mouseEntered

      public void mouseEntered(MouseEvent e)
      Specified by:
      mouseEntered in interface MouseListener
    • mouseExited

      public void mouseExited(MouseEvent e)
      Specified by:
      mouseExited in interface MouseListener
    • mouseClicked

      public void mouseClicked(MouseEvent e)
      Specified by:
      mouseClicked in interface MouseListener
    • mouseMoved

      public void mouseMoved(MouseEvent e)
      Specified by:
      mouseMoved in interface MouseMotionListener
    • 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:
    • 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

      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.
    • mouseDragged

      public void mouseDragged(MouseEvent e)
      Specified by:
      mouseDragged in interface MouseMotionListener
    • mouseReleased

      public void mouseReleased(MouseEvent e)
      Specified by:
      mouseReleased in interface MouseListener
    • 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<T>.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()
    • installUI

      public void installUI(JComponent slider)
      Overrides:
      installUI in class ComponentUI
    • paint

      public void paint(Graphics g, JComponent slider2)
      Overrides:
      paint in class ComponentUI
    • paintTrack

      protected abstract void paintTrack(Graphics2D g)
    • paintFocus

      protected abstract void paintFocus(Graphics2D g)
    • paintThumbs

      protected abstract void paintThumbs(Graphics2D g)
    • uninstallUI

      public void uninstallUI(JComponent slider)
      Overrides:
      uninstallUI in class ComponentUI