Package com.bric.multislider
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 forMultiThumbSliders
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) classMultiThumbSliderUI.StateThis records the positions/values of each thumb.static classMultiThumbSliderUI.ThumbA thumb shape.
-
Field Summary
Fields Modifier and Type Field Description (package private) RunnableanimatingRunnable(package private) ThreadanimatingThread(package private) ComponentListenercompListener(package private) intDEPTHThe height of a horizontal slider -- or width of a vertical slider.(package private) FocusListenerfocusListener(package private) floatindicationThe overall indication of the thumbs.(package private) KeyListenerkeyListener(package private) intMAX_LENGTHThe maximum width returned bygetMaximumSize().(package private) intMIN_LENGTHThe minimum width returned bygetMinimumSize().protected booleanmouseInsideprotected booleanmouseIsDown(package private) intPREF_LENGTHThe maximum width returned bygetPreferredSize().(package private) PropertyChangeListenerpropertyListenerprotected MultiThumbSlider<T>sliderstatic StringTHUMB_SHAPE_PROPERTYThe Swing client property associated with a Thumb.protected float[]thumbIndicationsA float from zero to one, indicating whether that thumb should be highlighted or not.(package private) int[]thumbPositionsThe pixel position of the thumbs.(package private) PropertyChangeListenerthumbShapeListenerprotected RectangletrackRectThe rectangle the track should be painted in.
-
Constructor Summary
Constructors Constructor Description MultiThumbSliderUI(MultiThumbSlider<T> slider)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected booleanaddThumb(int index1, int index2)This will try to add a thumb between index1 and index2.protected voidcalculateGeometry()protected RectanglecalculateTrackRect()DimensiongetMaximumSize(JComponent s)DimensiongetMinimumSize(JComponent s)protected abstract intgetPreferredComponentDepth()Return the typical height of a horizontally oriented slider, or the width of the vertically oriented slider.DimensiongetPreferredSize(JComponent s)static <K> KgetProperty(JComponent jc, String propertyName, K defaultValue)This retrieves a property.MultiThumbSliderUI.ThumbgetThumb(int thumbIndex)Return the Thumb option used to render a specific thumb.Point2DgetThumbCenter(float position)Calculate the thumb center based on a fractional positionPoint2DgetThumbCenter(int thumbIndex)Calculate the thumb centerShapegetThumbShape(int thumbIndex)Create the shape used to render a specific thumb.ShapegetThumbShape(int thumbIndex, Point2D center)Create the shape used to render a specific thumb.protected DimensiongetThumbSize(int thumbIndex)voidinstallUI(JComponent slider)voidmouseClicked(MouseEvent e)voidmouseDragged(MouseEvent e)voidmouseEntered(MouseEvent e)voidmouseExited(MouseEvent e)voidmouseMoved(MouseEvent e)voidmousePressed(MouseEvent e)voidmouseReleased(MouseEvent e)voidpaint(Graphics g, JComponent slider2)protected abstract voidpaintFocus(Graphics2D g)protected abstract voidpaintThumbs(Graphics2D g)protected abstract voidpaintTrack(Graphics2D g)voiduninstallUI(JComponent slider)protected voidupdateIndication()protected booleanvalidatePositions(MultiThumbSliderUI.State state)Makes sure the thumbs are in the right order.-
Methods inherited from class javax.swing.plaf.ComponentUI
contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, update
-
-
-
-
Field Detail
-
THUMB_SHAPE_PROPERTY
public static final String THUMB_SHAPE_PROPERTY
The Swing client property associated with a Thumb.- See Also:
MultiThumbSliderUI.Thumb
-
thumbShapeListener
PropertyChangeListener thumbShapeListener
-
slider
protected MultiThumbSlider<T> slider
-
MAX_LENGTH
int MAX_LENGTH
The maximum width returned bygetMaximumSize(). (or if the slider is vertical, this is the maximum height.)
-
MIN_LENGTH
int MIN_LENGTH
The minimum width returned bygetMinimumSize(). (or if the slider is vertical, this is the minimum height.)
-
PREF_LENGTH
int PREF_LENGTH
The maximum width returned bygetPreferredSize(). (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 Detail
-
MultiThumbSliderUI
public MultiThumbSliderUI(MultiThumbSlider<T> slider)
-
-
Method Detail
-
getMaximumSize
public Dimension getMaximumSize(JComponent s)
- Overrides:
getMaximumSizein classComponentUI
-
getMinimumSize
public Dimension getMinimumSize(JComponent s)
- Overrides:
getMinimumSizein classComponentUI
-
getPreferredSize
public Dimension getPreferredSize(JComponent s)
- Overrides:
getPreferredSizein classComponentUI
-
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:
mousePressedin interfaceMouseListener
-
mouseEntered
public void mouseEntered(MouseEvent e)
- Specified by:
mouseEnteredin interfaceMouseListener
-
mouseExited
public void mouseExited(MouseEvent e)
- Specified by:
mouseExitedin interfaceMouseListener
-
mouseClicked
public void mouseClicked(MouseEvent e)
- Specified by:
mouseClickedin interfaceMouseListener
-
mouseMoved
public void mouseMoved(MouseEvent e)
- Specified by:
mouseMovedin interfaceMouseMotionListener
-
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.
-
mouseDragged
public void mouseDragged(MouseEvent e)
- Specified by:
mouseDraggedin interfaceMouseMotionListener
-
mouseReleased
public void mouseReleased(MouseEvent e)
- Specified by:
mouseReleasedin interfaceMouseListener
-
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 callingcomponent.putClientProperty()), then that value will be returned. Otherwise this method refers toUIManager.get(). If that value is missing, this returnsdefaultValue- Parameters:
jc- componentpropertyName- the property namedefaultValue- 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 valueindex2- 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:
installUIin classComponentUI
-
paint
public void paint(Graphics g, JComponent slider2)
- Overrides:
paintin classComponentUI
-
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:
uninstallUIin classComponentUI
-
-