NASA World Wind

gov.nasa.worldwind.util.tree
Class ScrollBar

java.lang.Object
  extended by gov.nasa.worldwind.util.tree.ScrollBar
All Implemented Interfaces:
Renderable

public class ScrollBar
extends Object
implements Renderable

A scrollbar component. The scrollable range is defined by four values: min, max, value, and extent. value is the current position of the scroll bar. extent represents the visible region. The four values must always satisfy this relationship:

   min <= value <= value + extent <= max
 


Nested Class Summary
 class ScrollBar.ScrollControl
          Control for the scroll arrows and areas of the scroll bar above and below the knob.
 class ScrollBar.ScrollKnob
          Control for dragging the scroll knob.
 
Field Summary
protected  Insets arrowInsets
          Insets used to position the triangle in the scroll arrow box.
protected  int autoScrollDelay
          Delay in milliseconds between each step in auto-scroll operation is effect.
protected  String autoScrollIncrement
          The amount and direction that the bar scrolls while auto-scrolling.
protected  boolean autoScrolling
          Indicates whether an auto-scroll operation is active (such as when the user has clicked and held the mouse on the scroll arrow).
static String BLOCK_DOWN
          Scroll increment for one page down.
static String BLOCK_UP
          Scroll increment for one page up.
protected  Rectangle bounds
          Full bounds of the scroll bar.
protected static Insets DEFAULT_ARROW_INSETS
          Default insets that position the triangle of the scroll arrow in its box.
protected static int DEFAULT_AUTO_SCROLL_DELAY
          Default delay, in milliseconds, between auto scroll steps.
protected static Color DEFAULT_LINE_COLOR
          Default color used to draw lines in the scroll bar.
protected static int DEFAULT_MAX_VALUE
          Default scroll range maximum value.
protected static int DEFAULT_MIN_SCROLL_KNOB_SIZE
          Default minimum size, in pixels, of the scroll knob.
protected static int DEFAULT_MIN_VALUE
          Default scroll range minimum value.
protected static double DEFAULT_OPACITY
          Default opacity.
protected static Color DEFAULT_SCROLL_KNOB_COLOR1
          Default first color in the scroll knob gradient.
protected static Color DEFAULT_SCROLL_KNOB_COLOR2
          Default second color in the scroll knob gradient.
protected static int DEFAULT_UNIT_INCREMENT
          Default unit increment.
protected  int extent
          The amount of the scroll region that is visible in the frame.
protected  long frameNumber
          Identifies frame used to calculate per-frame values.
protected  Color knobColor1
          First color of the gradient used to fill the scroll knob.
protected  Color knobColor2
          Second color of the gradient used to fill the scroll knob.
protected  Color lineColor
          Color applied to lines in the scroll bar.
protected  int maxValue
          Maximum value in the scroll range.
protected  int minScrollKnobSize
          The minimum size of the scroll knob.
protected  int minValue
          Minimum value in the scroll range.
protected  long nextAutoScroll
          Time at which the scrollbar should automatically update itself.
protected  double opacity
          Opacity of the scroll bar knob.
protected  String orientation
          Scroll bar orientation, either AVKey.HORIZONTAL or AVKey.VERTICAL.
protected  PickSupport pickSupport
          Support for setting up and restoring picking state, and resolving the picked object.
protected  int scrollArrowSize
          Size, in pixels, of the scroll arrow square.
protected  Rectangle scrollBounds
          Bounds of the scroll track part of the scroll bar.
protected  Rectangle scrollDownBarBounds
          Bounds of the scroll bar area below the knob.
protected  HotSpot scrollDownBlockControl
          HotSpot to handle input on page down control.
protected  HotSpot scrollDownControl
          HotSpot to handle input on the scroll down control.
protected  Rectangle scrollDownControlBounds
          Bounds of the "down arrow" control.
protected  Rectangle scrollKnobBounds
          Bounds of the scroll knob.
protected  ScrollBar.ScrollKnob scrollKnobControl
          HotSpot to handle input on the scroll knob.
protected  Rectangle scrollUpBarBounds
          Bounds of the scroll bar area above the knob.
protected  HotSpot scrollUpBlockControl
          HotSpot to handle input on page up control.
protected  HotSpot scrollUpControl
          HotSpot to handle input on the scroll up control.
protected  Rectangle scrollUpControlBounds
          Bounds of the "up arrow" control.
static String UNIT_DOWN
          Scroll increment for one unit down.
static String UNIT_UP
          Scroll increment for one unit up.
protected  int unitIncrement
          Amount that the scroll bar scrolls when the up or down arrow is clicked.
protected  int value
          Current scroll bar value.
 
Constructor Summary
ScrollBar(HotSpot parent)
          Create a scroll bar in the vertical orientation.
ScrollBar(HotSpot parent, String orientation)
          Create a scroll bar with an orientation.
 
Method Summary
protected  boolean canDrawInBounds()
          Determines if the scrollbar is able to draw within its bounds.
protected  void computeBounds()
          Compute the bounds of the scroll bar.
protected  void doPick(DrawContext dc)
          Pick the scroll bar.
protected  void draw(DrawContext dc)
          Draw the scroll bar.
protected  void drawPickableQuad(DrawContext dc, Object pickObject, Rectangle bounds)
          Draw a filled quad in a unique pick color.
protected  void drawQuad(DrawContext dc, Rectangle bounds)
          Draw the vertices of a quadrilateral.
protected  void drawTriangle(DrawContext dc, float rotation, Rectangle bounds, Insets insets)
          Draw a triangle for one of the scroll bar controls.
 int getAutoScrollDelay()
          Indicates how frequently the scrollbar updates while one of the scroll arrows is pressed.
 int getBlockIncrement()
          Get the block increment.
 Rectangle getBounds()
          Get the bounds of the scroll bar.
 int getExtent()
          Get the extent.
 Color[] getKnobColor()
          Get the color of scroll knob.
protected  int getKnobSize(int scrollAreaSize)
          Get the size of the scroll knob, in pixels.
 Color getLineColor()
          Get the color used to draw the lines of the scroll bar boundary and the scroll arrows.
 int getMaxValue()
          Get the maximum value in the scroll range.
 int getMinScrollKnobSize()
          Indicates the minimum size of the scrollbar knob, in pixels.
 int getMinValue()
          Get the minimum value in the scroll range.
 double getOpacity()
          Indicates the opacity of the scroll knob.
 String getOrientation()
          Get the scroll bar orientation.
protected  int getScrollArrowSize()
          Get the height of the scroll arrow controls at the top and bottom of the scroll bar.
 int getUnitIncrement()
          Get the unit increment.
 int getValue()
          Get the current value of the scroll bar.
 double getValueAsPercentage()
          Get the value as a percentage of the scroll range.
protected  void initializeUIControls(HotSpot parent)
          Initialize the objects that represent the UI controls.
 boolean isAutoScrolling()
          Is the scroll bar auto-scrolling?
 void render(DrawContext dc)
          Draw the scroll bar.
 void scroll(int amount)
          Adjust the scroll value.
 void scroll(String amount)
          Adjust the scroll bar by the unit amount or the block amount.
 void setAutoScrollDelay(int delay)
          Specifies how often the scrollbar will update itself when one of the scroll arrows is pressed.
 void setBounds(Rectangle bounds)
          Set the bounds of the scroll bar.
 void setExtent(int extent)
          Set the extent.
 void setKnobColor(Color color1, Color color2)
          Set the color of scroll knob.
 void setLineColor(Color color)
          Set the color of the lines of the scroll bar boundary.
 void setMaxValue(int maxValue)
          Set the maximum value in the scroll range.
 void setMinScrollKnobSize(int minSize)
          Specifies the minimum size of the scrollbar knob, in pixels.
 void setMinValue(int minValue)
          Set the minimum value in the scroll range.
 void setOpacity(double opacity)
          Specifies the opacity of the scroll knob.
 void setOrientation(String orientation)
          Set the scroll bar orientation.
 void setUnitIncrement(int unitIncrement)
          Set the unit increment.
 void setValue(int value)
          Set the value of the scroll bar.
 void startAutoScroll(String increment)
          Start an auto-scroll operation.
 void stopAutoScroll()
          Stop an auto-scroll operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

arrowInsets

protected Insets arrowInsets
Insets used to position the triangle in the scroll arrow box.


autoScrollDelay

protected int autoScrollDelay
Delay in milliseconds between each step in auto-scroll operation is effect. When auto-scrolling the bar will scroll by the autoScrollIncrement every autoScrollDelay milliseconds.


autoScrollIncrement

protected String autoScrollIncrement
The amount and direction that the bar scrolls while auto-scrolling. One of UNIT_UP, UNIT_DOWN, BLOCK_UP, BLOCK_DOWN.


autoScrolling

protected boolean autoScrolling
Indicates whether an auto-scroll operation is active (such as when the user has clicked and held the mouse on the scroll arrow).


BLOCK_DOWN

public static final String BLOCK_DOWN
Scroll increment for one page down.

See Also:
Constant Field Values

BLOCK_UP

public static final String BLOCK_UP
Scroll increment for one page up.

See Also:
Constant Field Values

bounds

protected Rectangle bounds
Full bounds of the scroll bar.


DEFAULT_ARROW_INSETS

protected static final Insets DEFAULT_ARROW_INSETS
Default insets that position the triangle of the scroll arrow in its box.


DEFAULT_AUTO_SCROLL_DELAY

protected static final int DEFAULT_AUTO_SCROLL_DELAY
Default delay, in milliseconds, between auto scroll steps.

See Also:
Constant Field Values

DEFAULT_LINE_COLOR

protected static final Color DEFAULT_LINE_COLOR
Default color used to draw lines in the scroll bar.


DEFAULT_MAX_VALUE

protected static final int DEFAULT_MAX_VALUE
Default scroll range maximum value.

See Also:
Constant Field Values

DEFAULT_MIN_SCROLL_KNOB_SIZE

protected static final int DEFAULT_MIN_SCROLL_KNOB_SIZE
Default minimum size, in pixels, of the scroll knob.

See Also:
Constant Field Values

DEFAULT_MIN_VALUE

protected static final int DEFAULT_MIN_VALUE
Default scroll range minimum value.

See Also:
Constant Field Values

DEFAULT_OPACITY

protected static final double DEFAULT_OPACITY
Default opacity.

See Also:
Constant Field Values

DEFAULT_SCROLL_KNOB_COLOR1

protected static final Color DEFAULT_SCROLL_KNOB_COLOR1
Default first color in the scroll knob gradient.


DEFAULT_SCROLL_KNOB_COLOR2

protected static final Color DEFAULT_SCROLL_KNOB_COLOR2
Default second color in the scroll knob gradient.


DEFAULT_UNIT_INCREMENT

protected static final int DEFAULT_UNIT_INCREMENT
Default unit increment.

See Also:
Constant Field Values

extent

protected int extent
The amount of the scroll region that is visible in the frame.


frameNumber

protected long frameNumber
Identifies frame used to calculate per-frame values.


knobColor1

protected Color knobColor1
First color of the gradient used to fill the scroll knob.


knobColor2

protected Color knobColor2
Second color of the gradient used to fill the scroll knob.


lineColor

protected Color lineColor
Color applied to lines in the scroll bar.


maxValue

protected int maxValue
Maximum value in the scroll range.


minScrollKnobSize

protected int minScrollKnobSize
The minimum size of the scroll knob. The size of the knob will adjust to the scroll extent, but will never get smaller than this size. This prevents the knob from shrinking to a single pixels if the scroll range is very large.


minValue

protected int minValue
Minimum value in the scroll range.


nextAutoScroll

protected long nextAutoScroll
Time at which the scrollbar should automatically update itself.


opacity

protected double opacity
Opacity of the scroll bar knob.


orientation

protected String orientation
Scroll bar orientation, either AVKey.HORIZONTAL or AVKey.VERTICAL.


pickSupport

protected PickSupport pickSupport
Support for setting up and restoring picking state, and resolving the picked object.


scrollArrowSize

protected int scrollArrowSize
Size, in pixels, of the scroll arrow square.


scrollBounds

protected Rectangle scrollBounds
Bounds of the scroll track part of the scroll bar. This is the region in which the scroll knob moves, and excludes the scroll up and down arrows.


scrollDownBarBounds

protected Rectangle scrollDownBarBounds
Bounds of the scroll bar area below the knob.


scrollDownBlockControl

protected HotSpot scrollDownBlockControl
HotSpot to handle input on page down control.


scrollDownControl

protected HotSpot scrollDownControl
HotSpot to handle input on the scroll down control.


scrollDownControlBounds

protected Rectangle scrollDownControlBounds
Bounds of the "down arrow" control.


scrollKnobBounds

protected Rectangle scrollKnobBounds
Bounds of the scroll knob.


scrollKnobControl

protected ScrollBar.ScrollKnob scrollKnobControl
HotSpot to handle input on the scroll knob.


scrollUpBarBounds

protected Rectangle scrollUpBarBounds
Bounds of the scroll bar area above the knob.


scrollUpBlockControl

protected HotSpot scrollUpBlockControl
HotSpot to handle input on page up control.


scrollUpControl

protected HotSpot scrollUpControl
HotSpot to handle input on the scroll up control.


scrollUpControlBounds

protected Rectangle scrollUpControlBounds
Bounds of the "up arrow" control.


UNIT_DOWN

public static final String UNIT_DOWN
Scroll increment for one unit down.

See Also:
Constant Field Values

UNIT_UP

public static final String UNIT_UP
Scroll increment for one unit up.

See Also:
Constant Field Values

unitIncrement

protected int unitIncrement
Amount that the scroll bar scrolls when the up or down arrow is clicked.


value

protected int value
Current scroll bar value.

Constructor Detail

ScrollBar

public ScrollBar(HotSpot parent)
Create a scroll bar in the vertical orientation.

Parameters:
parent - The screen component that contains the scroll bar. Input events that cannot be handled by the scroll bar will be passed to this component. May be null.

ScrollBar

public ScrollBar(HotSpot parent,
                 String orientation)
Create a scroll bar with an orientation.

Parameters:
orientation - Either AVKey.VERTICAL or AVKey.HORIZONTAL.
parent - The screen component that contains the scroll bar. Input events that cannot be handled by the scroll bar will be passed to this component. May be null.
Method Detail

canDrawInBounds

protected boolean canDrawInBounds()
Determines if the scrollbar is able to draw within its bounds.

Returns:
true if the scroll bar is able to draw within the bounds, or false if the bounds are too small to draw without distortion.

computeBounds

protected void computeBounds()
Compute the bounds of the scroll bar.


doPick

protected void doPick(DrawContext dc)
Pick the scroll bar.

Parameters:
dc - Current draw context.

draw

protected void draw(DrawContext dc)
Draw the scroll bar.

Parameters:
dc - Current draw context.

drawPickableQuad

protected void drawPickableQuad(DrawContext dc,
                                Object pickObject,
                                Rectangle bounds)
Draw a filled quad in a unique pick color. This method must be called between glBegin(GL.GL_QUADS) and glEnd().

Parameters:
dc - Current draw context.
pickObject - User object to attach to the picked object.
bounds - Bounds of the quad.

drawQuad

protected void drawQuad(DrawContext dc,
                        Rectangle bounds)
Draw the vertices of a quadrilateral. This method must be called between glBegin(GL.GL_QUADS) and glEnd().

Parameters:
dc - Current draw context.
bounds - Bounds of the quad.

drawTriangle

protected void drawTriangle(DrawContext dc,
                            float rotation,
                            Rectangle bounds,
                            Insets insets)
Draw a triangle for one of the scroll bar controls.

Parameters:
dc - Draw context.
rotation - Rotation to apply to the triangle. 0 rotation produces a triangle pointing to the right. Rotation must be one of: 0, 90, -90, or 180.
bounds - The bounds of the scroll control. The arrow must be drawn within this rectangle.
insets - Insets to apply to the bounds.

getAutoScrollDelay

public int getAutoScrollDelay()
Indicates how frequently the scrollbar updates while one of the scroll arrows is pressed.

Returns:
The delay, in milliseconds, between scrollbar updates.

getBlockIncrement

public int getBlockIncrement()
Get the block increment. This is the amount that the scroll bar scrolls by when the bar is clicked above or below the knob.

Returns:
The block increment. This implementation returns the extent, so the scroll bar will adjust by a full visible page.

getBounds

public Rectangle getBounds()
Get the bounds of the scroll bar.

Returns:
Scroll bar bounds.

getExtent

public int getExtent()
Get the extent. The extent the amount of the scrollable region that is visible.

Returns:
The extent.
See Also:
setExtent(int)

getKnobColor

public Color[] getKnobColor()
Get the color of scroll knob. The knob is drawn with a gradient made up of two colors.

Returns:
Two element array containing the two colors that form the gradient.
See Also:
setKnobColor(java.awt.Color, java.awt.Color), getLineColor()

getKnobSize

protected int getKnobSize(int scrollAreaSize)
Get the size of the scroll knob, in pixels.

Parameters:
scrollAreaSize - The size of the scroll area, in pixels.
Returns:
Size of the scroll knob, in pixels.

getLineColor

public Color getLineColor()
Get the color used to draw the lines of the scroll bar boundary and the scroll arrows.

Returns:
Color used for the scroll bar lines.
See Also:
setLineColor(java.awt.Color), getKnobColor()

getMaxValue

public int getMaxValue()
Get the maximum value in the scroll range.

Returns:
Maximum value.
See Also:
getMinValue(), setMaxValue(int)

getMinScrollKnobSize

public int getMinScrollKnobSize()
Indicates the minimum size of the scrollbar knob, in pixels.

Returns:
Minimum size of the knob in pixels.

getMinValue

public int getMinValue()
Get the minimum value in the scroll range.

Returns:
Minimum value.

getOpacity

public double getOpacity()
Indicates the opacity of the scroll knob.

Returns:
Scroll knob opacity.

getOrientation

public String getOrientation()
Get the scroll bar orientation.

Returns:
The scroll bar orientation, either AVKey.VERTICAL or AVKey.HORIZONTAL.

getScrollArrowSize

protected int getScrollArrowSize()
Get the height of the scroll arrow controls at the top and bottom of the scroll bar.

Returns:
Height of arrow control, in pixels.

getUnitIncrement

public int getUnitIncrement()
Get the unit increment. This is the amount that the scroll bar scrolls by when one of the arrow controls is clicked.

Returns:
Unit increment.
See Also:
setUnitIncrement(int)

getValue

public int getValue()
Get the current value of the scroll bar.

Returns:
Current value. The value is clamped to the range [minValue : maxValue - extent].

getValueAsPercentage

public double getValueAsPercentage()
Get the value as a percentage of the scroll range.

Returns:
Current value as percentage.

initializeUIControls

protected void initializeUIControls(HotSpot parent)
Initialize the objects that represent the UI controls.

Parameters:
parent - The screen component that contains the scroll bar. Input events that cannot be handled by the scroll bar will be passed to this component. May be null.

isAutoScrolling

public boolean isAutoScrolling()
Is the scroll bar auto-scrolling?

Returns:
True if an auto-scroll operation is in progress.
See Also:
startAutoScroll(String), stopAutoScroll()

render

public void render(DrawContext dc)
Draw the scroll bar. The scroll will not draw its bounds are too small to draw without distortion.

Specified by:
render in interface Renderable
Parameters:
dc - the DrawContext to be used
See Also:
DrawContext

scroll

public void scroll(int amount)
Adjust the scroll value.

Parameters:
amount - Amount to add to the current value. A positive value indicates a scroll down; a negative value indicates a scroll up.

scroll

public void scroll(String amount)
Adjust the scroll bar by the unit amount or the block amount.

Parameters:
amount - One of UNIT_UP, UNIT_DOWN, BLOCK_UP, or BLOCK_DOWN.

setAutoScrollDelay

public void setAutoScrollDelay(int delay)
Specifies how often the scrollbar will update itself when one of the scroll arrows is pressed.

Parameters:
delay - Delay in milliseconds between scrollbar updates. A smaller number makes the scrollbar scroll faster, a larger number makes it scroll slower. The delay may not be negative.

setBounds

public void setBounds(Rectangle bounds)
Set the bounds of the scroll bar.

Parameters:
bounds - New bounds.

setExtent

public void setExtent(int extent)
Set the extent. The extent the amount of the scrollable region that is visible. This method may change the value of the scroll bar to maintain the relationship:
   min <= value <= value + extent <= max
 

Parameters:
extent - New extent. If extent is greater than the range of the scroll bar (max - min), then the extent will be set to the maximum valid value.
See Also:
getExtent()

setKnobColor

public void setKnobColor(Color color1,
                         Color color2)
Set the color of scroll knob. The knob is drawn with a gradient made up of two colors.

Parameters:
color1 - First color in the gradient.
color2 - Second color in the gradient.
See Also:
getKnobColor(), setLineColor(java.awt.Color)

setLineColor

public void setLineColor(Color color)
Set the color of the lines of the scroll bar boundary. This color is also used for the arrows in the scroll controls.

Parameters:
color - Color for lines and scroll arrows.
See Also:
getLineColor(), setKnobColor(java.awt.Color, java.awt.Color)

setMaxValue

public void setMaxValue(int maxValue)
Set the maximum value in the scroll range.

Parameters:
maxValue - New maximum.

setMinScrollKnobSize

public void setMinScrollKnobSize(int minSize)
Specifies the minimum size of the scrollbar knob, in pixels.

Parameters:
minSize - Minimum size of the knob in pixels.

setMinValue

public void setMinValue(int minValue)
Set the minimum value in the scroll range.

Parameters:
minValue - New minimum.

setOpacity

public void setOpacity(double opacity)
Specifies the opacity of the scroll knob.

Parameters:
opacity - New opacity.

setOrientation

public void setOrientation(String orientation)
Set the scroll bar orientation.

Parameters:
orientation - The scroll bar orientation, either AVKey.VERTICAL or AVKey.HORIZONTAL.

setUnitIncrement

public void setUnitIncrement(int unitIncrement)
Set the unit increment.

Parameters:
unitIncrement - New unit increment. Must be a positive number.
See Also:
getUnitIncrement()

setValue

public void setValue(int value)
Set the value of the scroll bar. The value is clamped to the range [minValue : maxValue - extent].

Parameters:
value - New value.

startAutoScroll

public void startAutoScroll(String increment)
Start an auto-scroll operation. During auto-scroll, the scroll bar will adjust its value and repaint continuously until the auto-scroll is stopped.

Parameters:
increment - Amount to adjust scroll bar each time. One of UNIT_UP, UNIT_DOWN, BLOCK_UP, or BLOCK_DOWN.
See Also:
stopAutoScroll(), isAutoScrolling(), scroll(String)

stopAutoScroll

public void stopAutoScroll()
Stop an auto-scroll operation.

See Also:
startAutoScroll(String), isAutoScrolling()

NASA World Wind