< prev index next >
src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -45,37 +45,59 @@
*/
public class BasicSliderUI extends SliderUI{
// Old actions forward to an instance of this.
private static final Actions SHARED_ACTION = new Actions();
+ /** Positive scroll */
public static final int POSITIVE_SCROLL = +1;
+ /** Negative scroll */
public static final int NEGATIVE_SCROLL = -1;
+ /** Minimum scroll */
public static final int MIN_SCROLL = -2;
+ /** Maximum scroll */
public static final int MAX_SCROLL = +2;
+ /** Scroll timer */
protected Timer scrollTimer;
+ /** Slider */
protected JSlider slider;
+ /** Focus insets */
protected Insets focusInsets = null;
+ /** Inset cache */
protected Insets insetCache = null;
+ /** Left-to-right cache */
protected boolean leftToRightCache = true;
+ /** Focus rectangle */
protected Rectangle focusRect = null;
+ /** Content rectangle */
protected Rectangle contentRect = null;
+ /** Label rectangle */
protected Rectangle labelRect = null;
+ /** Tick rectangle */
protected Rectangle tickRect = null;
+ /** Track rectangle */
protected Rectangle trackRect = null;
+ /** Thumb rectangle */
protected Rectangle thumbRect = null;
- protected int trackBuffer = 0; // The distance that the track is from the side of the control
+ /** The distance that the track is from the side of the control */
+ protected int trackBuffer = 0;
private transient boolean isDragging;
+ /** Track listener */
protected TrackListener trackListener;
+ /** Change listener */
protected ChangeListener changeListener;
+ /** Component listener */
protected ComponentListener componentListener;
+ /** Focus listener */
protected FocusListener focusListener;
+ /** Scroll listener */
protected ScrollListener scrollListener;
+ /** Property chane listener */
protected PropertyChangeListener propertyChangeListener;
private Handler handler;
private int lastValue;
// Colors
@@ -91,19 +113,30 @@
* Whether or not all the entries in the labeltable have the same
* baseline.
*/
private boolean sameLabelBaselines;
-
+ /**
+ * Returns the shadow color.
+ * @return the shadow color
+ */
protected Color getShadowColor() {
return shadowColor;
}
+ /**
+ * Returns the highlight color.
+ * @return the highlight color
+ */
protected Color getHighlightColor() {
return highlightColor;
}
+ /**
+ * Returns the focus color.
+ * @return the focus color
+ */
protected Color getFocusColor() {
return focusColor;
}
/**
@@ -117,17 +150,30 @@
}
/////////////////////////////////////////////////////////////////////////////
// ComponentUI Interface Implementation methods
/////////////////////////////////////////////////////////////////////////////
+ /**
+ * Creates a UI.
+ * @param b a component
+ * @return a UI
+ */
public static ComponentUI createUI(JComponent b) {
return new BasicSliderUI((JSlider)b);
}
+ /**
+ * Constructs a {@code BasicSliderUI}.
+ * @param b a slider
+ */
public BasicSliderUI(JSlider b) {
}
+ /**
+ * Installs a UI.
+ * @param c a component
+ */
public void installUI(JComponent c) {
slider = (JSlider) c;
checkedLabelBaselines = false;
@@ -160,10 +206,14 @@
lastValue = slider.getValue();
calculateGeometry(); // This figures out where the labels, ticks, track, and thumb are.
}
+ /**
+ * Uninstalls a UI.
+ * @param c a component
+ */
public void uninstallUI(JComponent c) {
if ( c != slider )
throw new IllegalComponentStateException(
this + " was asked to deinstall() "
+ c + " when it only knows about "
@@ -191,10 +241,14 @@
scrollListener = null;
propertyChangeListener = null;
slider = null;
}
+ /**
+ * Installs the defaults.
+ * @param slider a slider
+ */
protected void installDefaults( JSlider slider ) {
LookAndFeel.installBorder(slider, "Slider.border");
LookAndFeel.installColorsAndFont(slider, "Slider.background",
"Slider.foreground", "Slider.font");
highlightColor = UIManager.getColor("Slider.highlight");
@@ -206,36 +260,70 @@
// use default if missing so that BasicSliderUI can be used in other
// LAFs like Nimbus
if (focusInsets == null) focusInsets = new InsetsUIResource(2,2,2,2);
}
+ /**
+ * Uninstalls the defaults.
+ * @param slider a slider
+ */
protected void uninstallDefaults(JSlider slider) {
LookAndFeel.uninstallBorder(slider);
focusInsets = null;
}
+ /**
+ * Creates a track listener.
+ * @return a track listener
+ * @param slider a slider
+ */
protected TrackListener createTrackListener(JSlider slider) {
return new TrackListener();
}
+ /**
+ * Creates a change listener.
+ * @return a change listener
+ * @param slider a slider
+ */
protected ChangeListener createChangeListener(JSlider slider) {
return getHandler();
}
+ /**
+ * Creates a composite listener.
+ * @return a composite listener
+ * @param slider a slider
+ */
protected ComponentListener createComponentListener(JSlider slider) {
return getHandler();
}
+ /**
+ * Creates a focus listener.
+ * @return a focus listener
+ * @param slider a slider
+ */
protected FocusListener createFocusListener(JSlider slider) {
return getHandler();
}
+ /**
+ * Creates a scroll listener.
+ * @return a scroll listener
+ * @param slider a slider
+ */
protected ScrollListener createScrollListener( JSlider slider ) {
return new ScrollListener();
}
+ /**
+ * Creates a property change listener.
+ * @return a property change listener
+ * @param slider a slider
+ */
protected PropertyChangeListener createPropertyChangeListener(
JSlider slider) {
return getHandler();
}
@@ -244,29 +332,41 @@
handler = new Handler();
}
return handler;
}
+ /**
+ * Installs listeners.
+ * @param slider a slider
+ */
protected void installListeners( JSlider slider ) {
slider.addMouseListener(trackListener);
slider.addMouseMotionListener(trackListener);
slider.addFocusListener(focusListener);
slider.addComponentListener(componentListener);
slider.addPropertyChangeListener( propertyChangeListener );
slider.getModel().addChangeListener(changeListener);
}
+ /**
+ * Uninstalls listeners.
+ * @param slider a slider
+ */
protected void uninstallListeners( JSlider slider ) {
slider.removeMouseListener(trackListener);
slider.removeMouseMotionListener(trackListener);
slider.removeFocusListener(focusListener);
slider.removeComponentListener(componentListener);
slider.removePropertyChangeListener( propertyChangeListener );
slider.getModel().removeChangeListener(changeListener);
handler = null;
}
+ /**
+ * Installs keyboard actions.
+ * @param slider a slider
+ */
protected void installKeyboardActions( JSlider slider ) {
InputMap km = getInputMap(JComponent.WHEN_FOCUSED, slider);
SwingUtilities.replaceUIInputMap(slider, JComponent.WHEN_FOCUSED, km);
LazyActionMap.installLazyActionMap(slider, BasicSliderUI.class,
"Slider.actionMap");
@@ -300,10 +400,14 @@
map.put(new Actions(Actions.NEGATIVE_BLOCK_INCREMENT));
map.put(new Actions(Actions.MIN_SCROLL_INCREMENT));
map.put(new Actions(Actions.MAX_SCROLL_INCREMENT));
}
+ /**
+ * Uninstalls keyboard actions.
+ * @param slider a slider
+ */
protected void uninstallKeyboardActions( JSlider slider ) {
SwingUtilities.replaceUIActionMap(slider, null);
SwingUtilities.replaceUIInputMap(slider, JComponent.WHEN_FOCUSED,
null);
}
@@ -428,46 +532,67 @@
}
}
return sameLabelBaselines;
}
+ /**
+ * Returns the preferred horizontal size.
+ * @return the preferred horizontal size
+ */
public Dimension getPreferredHorizontalSize() {
Dimension horizDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.horizontalSize");
if (horizDim == null) {
horizDim = new Dimension(200, 21);
}
return horizDim;
}
+ /**
+ * Returns the preferred vertical size.
+ * @return the preferred vertical size
+ */
public Dimension getPreferredVerticalSize() {
Dimension vertDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.verticalSize");
if (vertDim == null) {
vertDim = new Dimension(21, 200);
}
return vertDim;
}
+ /**
+ * Returns the minimum horizontal size.
+ * @return the minimum horizontal size
+ */
public Dimension getMinimumHorizontalSize() {
Dimension minHorizDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.minimumHorizontalSize");
if (minHorizDim == null) {
minHorizDim = new Dimension(36, 21);
}
return minHorizDim;
}
+ /**
+ * Returns the minimum vertical size.
+ * @return the minimum vertical size
+ */
public Dimension getMinimumVerticalSize() {
Dimension minVertDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.minimumVerticalSize");
if (minVertDim == null) {
minVertDim = new Dimension(21, 36);
}
return minVertDim;
}
+ /**
+ * Returns the preferred size.
+ * @param c a component
+ * @return the preferred size
+ */
public Dimension getPreferredSize(JComponent c) {
recalculateIfInsetsChanged();
Dimension d;
if ( slider.getOrientation() == JSlider.VERTICAL ) {
d = new Dimension(getPreferredVerticalSize());
@@ -483,10 +608,15 @@
}
return d;
}
+ /**
+ * Returns the minimum size.
+ * @param c a component
+ * @return the minimum size
+ */
public Dimension getMinimumSize(JComponent c) {
recalculateIfInsetsChanged();
Dimension d;
if ( slider.getOrientation() == JSlider.VERTICAL ) {
@@ -503,10 +633,15 @@
}
return d;
}
+ /**
+ * Returns the maximum size.
+ * @param c a component
+ * @return the maximum size
+ */
public Dimension getMaximumSize(JComponent c) {
Dimension d = getPreferredSize(c);
if ( slider.getOrientation() == JSlider.VERTICAL ) {
d.height = Short.MAX_VALUE;
}
@@ -515,10 +650,13 @@
}
return d;
}
+ /**
+ * Calculates the geometry.
+ */
protected void calculateGeometry() {
calculateFocusRect();
calculateContentRect();
calculateThumbSize();
calculateTrackBuffer();
@@ -526,22 +664,31 @@
calculateTickRect();
calculateLabelRect();
calculateThumbLocation();
}
+ /**
+ * Calculates the focus rectangle.
+ */
protected void calculateFocusRect() {
focusRect.x = insetCache.left;
focusRect.y = insetCache.top;
focusRect.width = slider.getWidth() - (insetCache.left + insetCache.right);
focusRect.height = slider.getHeight() - (insetCache.top + insetCache.bottom);
}
+ /**
+ * Calculates the thumb size rectangle.
+ */
protected void calculateThumbSize() {
Dimension size = getThumbSize();
thumbRect.setSize( size.width, size.height );
}
+ /**
+ * Calculates the content rectangle.
+ */
protected void calculateContentRect() {
contentRect.x = focusRect.x + focusInsets.left;
contentRect.y = focusRect.y + focusInsets.top;
contentRect.width = focusRect.width - (focusInsets.left + focusInsets.right);
contentRect.height = focusRect.height - (focusInsets.top + focusInsets.bottom);
@@ -562,10 +709,13 @@
}
return result;
}
+ /**
+ * Calculates the thumb location.
+ */
protected void calculateThumbLocation() {
if ( slider.getSnapToTicks() ) {
int sliderValue = slider.getValue();
int snappedValue = sliderValue;
int tickSpacing = getTickSpacing();
@@ -601,10 +751,13 @@
thumbRect.x = trackRect.x;
thumbRect.y = valuePosition - (thumbRect.height / 2);
}
}
+ /**
+ * Calculates the track buffer.
+ */
protected void calculateTrackBuffer() {
if ( slider.getPaintLabels() && slider.getLabelTable() != null ) {
Component highLabel = getHighestValueLabel();
Component lowLabel = getLowestValueLabel();
@@ -625,11 +778,13 @@
trackBuffer = thumbRect.height / 2;
}
}
}
-
+ /**
+ * Calculates the track rectangle.
+ */
protected void calculateTrackRect() {
int centerSpacing; // used to center sliders added using BorderLayout.CENTER (bug 4275631)
if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
centerSpacing = thumbRect.height;
if ( slider.getPaintTicks() ) centerSpacing += getTickLength();
@@ -669,10 +824,13 @@
*/
protected int getTickLength() {
return 8;
}
+ /**
+ * Calculates the tick rectangle.
+ */
protected void calculateTickRect() {
if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
tickRect.x = trackRect.x;
tickRect.y = trackRect.y + trackRect.height;
tickRect.width = trackRect.width;
@@ -689,10 +847,13 @@
tickRect.y = trackRect.y;
tickRect.height = trackRect.height;
}
}
+ /**
+ * Calculates the label rectangle.
+ */
protected void calculateLabelRect() {
if ( slider.getPaintLabels() ) {
if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
labelRect.x = tickRect.x - trackBuffer;
labelRect.y = tickRect.y + tickRect.height;
@@ -731,10 +892,14 @@
labelRect.height = tickRect.height;
}
}
}
+ /**
+ * Returns the thumb size.
+ * @return the thumb size
+ */
protected Dimension getThumbSize() {
Dimension size = new Dimension();
if ( slider.getOrientation() == JSlider.VERTICAL ) {
size.width = 20;
@@ -746,20 +911,28 @@
}
return size;
}
+ /**
+ * A property change handler.
+ */
public class PropertyChangeHandler implements PropertyChangeListener {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /** {@inheritDoc} */
public void propertyChange( PropertyChangeEvent e ) {
getHandler().propertyChange(e);
}
}
+ /**
+ * Returns the width of the widest label.
+ * @return the width of the widest label
+ */
protected int getWidthOfWidestLabel() {
@SuppressWarnings("rawtypes")
Dictionary dictionary = slider.getLabelTable();
int widest = 0;
if ( dictionary != null ) {
@@ -770,10 +943,14 @@
}
}
return widest;
}
+ /**
+ * Returns the height of the tallest label.
+ * @return the height of the tallest label
+ */
protected int getHeightOfTallestLabel() {
@SuppressWarnings("rawtypes")
Dictionary dictionary = slider.getLabelTable();
int tallest = 0;
if ( dictionary != null ) {
@@ -784,10 +961,14 @@
}
}
return tallest;
}
+ /**
+ * Returns the width of the highest value label.
+ * @return the width of the highest value label
+ */
protected int getWidthOfHighValueLabel() {
Component label = getHighestValueLabel();
int width = 0;
if ( label != null ) {
@@ -795,10 +976,14 @@
}
return width;
}
+ /**
+ * Returns the width of the lowest value label.
+ * @return the width of the lowest value label
+ */
protected int getWidthOfLowValueLabel() {
Component label = getLowestValueLabel();
int width = 0;
if ( label != null ) {
@@ -806,10 +991,14 @@
}
return width;
}
+ /**
+ * Returns the height of the highest value label.
+ * @return the height of the highest value label
+ */
protected int getHeightOfHighValueLabel() {
Component label = getHighestValueLabel();
int height = 0;
if ( label != null ) {
@@ -817,10 +1006,14 @@
}
return height;
}
+ /**
+ * Returns the height of the lowest value label.
+ * @return the height of the lowest value label
+ */
protected int getHeightOfLowValueLabel() {
Component label = getLowestValueLabel();
int height = 0;
if ( label != null ) {
@@ -828,10 +1021,14 @@
}
return height;
}
+ /**
+ * Draws inverted.
+ * @return the inverted-ness
+ */
protected boolean drawInverted() {
if (slider.getOrientation()==JSlider.HORIZONTAL) {
if(BasicGraphicsUtils.isLeftToRight(slider)) {
return slider.getInverted();
} else {
@@ -958,33 +1155,47 @@
if ( clip.intersects( thumbRect ) ) {
paintThumb( g );
}
}
+ /**
+ * Recalculates if the insets have changed.
+ */
protected void recalculateIfInsetsChanged() {
Insets newInsets = slider.getInsets();
if ( !newInsets.equals( insetCache ) ) {
insetCache = newInsets;
calculateGeometry();
}
}
+ /**
+ * Recalculates if the orientation has changed.
+ */
protected void recalculateIfOrientationChanged() {
boolean ltr = BasicGraphicsUtils.isLeftToRight(slider);
if ( ltr!=leftToRightCache ) {
leftToRightCache = ltr;
calculateGeometry();
}
}
+ /**
+ * Paints focus.
+ * @param g the graphics
+ */
public void paintFocus(Graphics g) {
g.setColor( getFocusColor() );
BasicGraphicsUtils.drawDashedRect( g, focusRect.x, focusRect.y,
focusRect.width, focusRect.height );
}
+ /**
+ * Paints track.
+ * @param g the graphics
+ */
public void paintTrack(Graphics g) {
Rectangle trackBounds = trackRect;
if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
@@ -1021,10 +1232,14 @@
g.translate(-(trackBounds.x + cx), -trackBounds.y);
}
}
+ /**
+ * Paints ticks.
+ * @param g the graphics
+ */
public void paintTicks(Graphics g) {
Rectangle tickBounds = tickRect;
g.setColor(DefaultLookup.getColor(slider, this, "Slider.tickColor", Color.black));
@@ -1118,26 +1333,54 @@
}
g.translate(-tickBounds.x, 0);
}
}
+ /**
+ * Paints minor tick for horizontal slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param x the x coordinate
+ */
protected void paintMinorTickForHorizSlider( Graphics g, Rectangle tickBounds, int x ) {
g.drawLine( x, 0, x, tickBounds.height / 2 - 1 );
}
+ /**
+ * Paints major tick for horizontal slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param x the x coordinate
+ */
protected void paintMajorTickForHorizSlider( Graphics g, Rectangle tickBounds, int x ) {
g.drawLine( x, 0, x, tickBounds.height - 2 );
}
+ /**
+ * Paints minor tick for vertical slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param y the y coordinate
+ */
protected void paintMinorTickForVertSlider( Graphics g, Rectangle tickBounds, int y ) {
g.drawLine( 0, y, tickBounds.width / 2 - 1, y );
}
+ /**
+ * Paints major tick for vertical slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param y the y coordinate
+ */
protected void paintMajorTickForVertSlider( Graphics g, Rectangle tickBounds, int y ) {
g.drawLine( 0, y, tickBounds.width - 2, y );
}
+ /**
+ * Paints the labels.
+ * @param g the graphics
+ */
public void paintLabels( Graphics g ) {
Rectangle labelBounds = labelRect;
@SuppressWarnings("rawtypes")
Dictionary dictionary = slider.getLabelTable();
@@ -1220,10 +1463,14 @@
g.translate( 0, labelTop );
label.paint( g );
g.translate( 0, -labelTop );
}
+ /**
+ * Paints the thumb.
+ * @param g the graphics
+ */
public void paintThumb(Graphics g) {
Rectangle knobBounds = thumbRect;
int w = knobBounds.width;
int h = knobBounds.height;
@@ -1328,19 +1575,28 @@
}
// Used exclusively by setThumbLocation()
private static Rectangle unionRect = new Rectangle();
+ /**
+ * Sets the thumb location.
+ * @param x the x coordinate
+ * @param y the y coordinate
+ */
public void setThumbLocation(int x, int y) {
unionRect.setBounds( thumbRect );
thumbRect.setLocation( x, y );
SwingUtilities.computeUnion( thumbRect.x, thumbRect.y, thumbRect.width, thumbRect.height, unionRect );
slider.repaint( unionRect.x, unionRect.y, unionRect.width, unionRect.height );
}
+ /**
+ * Scrolls by block.
+ * @param direction the direction
+ */
public void scrollByBlock(int direction) {
synchronized(slider) {
int blockIncrement =
(slider.getMaximum() - slider.getMinimum()) / 10;
if (blockIncrement == 0) {
@@ -1358,10 +1614,14 @@
int delta = blockIncrement * ((direction > 0) ? POSITIVE_SCROLL : NEGATIVE_SCROLL);
slider.setValue(slider.getValue() + delta);
}
}
+ /**
+ * Scrolls by unit.
+ * @param direction the direction
+ */
public void scrollByUnit(int direction) {
synchronized(slider) {
int delta = ((direction > 0) ? POSITIVE_SCROLL : NEGATIVE_SCROLL);
if (slider.getSnapToTicks()) {
@@ -1382,10 +1642,15 @@
*/
protected void scrollDueToClickInTrack( int dir ) {
scrollByBlock( dir );
}
+ /**
+ * Returns the x position for a value.
+ * @param value the value
+ * @return the x position for a value
+ */
protected int xPositionForValue( int value ) {
int min = slider.getMinimum();
int max = slider.getMaximum();
int trackLength = trackRect.width;
double valueRange = (double)max - (double)min;
@@ -1407,10 +1672,15 @@
xPosition = Math.min( trackRight, xPosition );
return xPosition;
}
+ /**
+ * Returns the y position for a value.
+ * @param value the value
+ * @return the y position for a value
+ */
protected int yPositionForValue( int value ) {
return yPositionForValue(value, trackRect.y, trackRect.height);
}
/**
@@ -1603,13 +1873,20 @@
*
* This class should be treated as a "protected" inner class.
* Instantiate it only within subclasses of <code>Foo</code>.
*/
public class TrackListener extends MouseInputAdapter {
+ /** The offset */
protected transient int offset;
- protected transient int currentMouseX, currentMouseY;
+ /** Current mouse x. */
+ protected transient int currentMouseX;
+ /** Current mouse y. */
+ protected transient int currentMouseY;
+ /**
+ * {@inheritDoc}
+ */
public void mouseReleased(MouseEvent e) {
if (!slider.isEnabled()) {
return;
}
@@ -1734,10 +2011,15 @@
scrollListener.setDirection(direction);
scrollTimer.start();
}
}
+ /**
+ * Returns if scrolling should occur
+ * @param direction the direction.
+ * @return if scrolling should occur
+ */
public boolean shouldScroll(int direction) {
Rectangle r = thumbRect;
if (slider.getOrientation() == JSlider.VERTICAL) {
if (drawInverted() ? direction < 0 : direction > 0) {
if (r.y <= currentMouseY) {
@@ -1837,10 +2119,11 @@
slider.setValue(valueForXPosition(thumbMiddle));
break;
}
}
+ /** {@inheritDoc} */
public void mouseMoved(MouseEvent e) { }
}
/**
* Scroll-event listener.
@@ -1853,28 +2136,45 @@
// bug in InternetExplorer browser. It was protected. Work around
// for 4109432
int direction = POSITIVE_SCROLL;
boolean useBlockIncrement;
+ /**
+ * Constructs a {@code ScrollListener}
+ */
public ScrollListener() {
direction = POSITIVE_SCROLL;
useBlockIncrement = true;
}
+ /**
+ * Constructs a {@code ScrollListener}
+ * @param dir the direction
+ * @param block whether or not to scroll by block
+ */
public ScrollListener(int dir, boolean block) {
direction = dir;
useBlockIncrement = block;
}
+ /**
+ * Sets the direction.
+ * @param direction the new direction
+ */
public void setDirection(int direction) {
this.direction = direction;
}
+ /**
+ * Sets scrolling by block
+ * @param block the new scroll by block value
+ */
public void setScrollByBlock(boolean block) {
this.useBlockIncrement = block;
}
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
if (useBlockIncrement) {
scrollByBlock(direction);
}
else {
@@ -1943,20 +2243,28 @@
// class calls into the Actions.
int dir;
boolean block;
JSlider slider;
+ /**
+ * Constructs an {@code ActionScroller}.
+ * @param slider a slider
+ * @param dir the direction
+ * @param block block scrolling or not
+ */
public ActionScroller( JSlider slider, int dir, boolean block) {
this.dir = dir;
this.block = block;
this.slider = slider;
}
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
SHARED_ACTION.scroll(slider, BasicSliderUI.this, dir, block);
}
+ /** {@inheritDoc} */
public boolean isEnabled() {
boolean b = true;
if (slider != null) {
b = slider.isEnabled();
}
< prev index next >