Class ScrollBar

  • All Implemented Interfaces:
    Renderable

    public class ScrollBar
    extends java.lang.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

      Nested Classes 
      Modifier and Type Class Description
      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

      Fields 
      Modifier and Type Field Description
      protected java.awt.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 java.lang.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 java.lang.String BLOCK_DOWN
      Scroll increment for one page down.
      static java.lang.String BLOCK_UP
      Scroll increment for one page up.
      protected java.awt.Rectangle bounds
      Full bounds of the scroll bar.
      protected static java.awt.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 java.awt.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 java.awt.Color DEFAULT_SCROLL_KNOB_COLOR1
      Default first color in the scroll knob gradient.
      protected static java.awt.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 java.awt.Color knobColor1
      First color of the gradient used to fill the scroll knob.
      protected java.awt.Color knobColor2
      Second color of the gradient used to fill the scroll knob.
      protected java.awt.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 java.lang.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 java.awt.Rectangle scrollBounds
      Bounds of the scroll track part of the scroll bar.
      protected java.awt.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 java.awt.Rectangle scrollDownControlBounds
      Bounds of the "down arrow" control.
      protected java.awt.Rectangle scrollKnobBounds
      Bounds of the scroll knob.
      protected ScrollBar.ScrollKnob scrollKnobControl
      HotSpot to handle input on the scroll knob.
      protected java.awt.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 java.awt.Rectangle scrollUpControlBounds
      Bounds of the "up arrow" control.
      static java.lang.String UNIT_DOWN
      Scroll increment for one unit down.
      static java.lang.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

      Constructors 
      Constructor Description
      ScrollBar​(HotSpot parent)
      Create a scroll bar in the vertical orientation.
      ScrollBar​(HotSpot parent, java.lang.String orientation)
      Create a scroll bar with an orientation.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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, java.lang.Object pickObject, java.awt.Rectangle bounds)
      Draw a filled quad in a unique pick color.
      protected void drawQuad​(DrawContext dc, java.awt.Rectangle bounds)
      Draw the vertices of a quadrilateral.
      protected void drawTriangle​(DrawContext dc, float rotation, java.awt.Rectangle bounds, java.awt.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.
      java.awt.Rectangle getBounds()
      Get the bounds of the scroll bar.
      int getExtent()
      Get the extent.
      java.awt.Color[] getKnobColor()
      Get the color of scroll knob.
      protected int getKnobSize​(int scrollAreaSize)
      Get the size of the scroll knob, in pixels.
      java.awt.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.
      java.lang.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​(java.lang.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​(java.awt.Rectangle bounds)
      Set the bounds of the scroll bar.
      void setExtent​(int extent)
      Set the extent.
      void setKnobColor​(java.awt.Color color1, java.awt.Color color2)
      Set the color of scroll knob.
      void setLineColor​(java.awt.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​(java.lang.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​(java.lang.String increment)
      Start an auto-scroll operation.
      void stopAutoScroll()
      Stop an auto-scroll operation.
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • UNIT_UP

        public static final java.lang.String UNIT_UP
        Scroll increment for one unit up.
        See Also:
        Constant Field Values
      • UNIT_DOWN

        public static final java.lang.String UNIT_DOWN
        Scroll increment for one unit down.
        See Also:
        Constant Field Values
      • BLOCK_UP

        public static final java.lang.String BLOCK_UP
        Scroll increment for one page up.
        See Also:
        Constant Field Values
      • BLOCK_DOWN

        public static final java.lang.String BLOCK_DOWN
        Scroll increment for one page down.
        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_MAX_VALUE

        protected static final int DEFAULT_MAX_VALUE
        Default scroll range maximum value.
        See Also:
        Constant Field Values
      • DEFAULT_UNIT_INCREMENT

        protected static final int DEFAULT_UNIT_INCREMENT
        Default unit increment.
        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_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_ARROW_INSETS

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

        protected static final double DEFAULT_OPACITY
        Default opacity.
        See Also:
        Constant Field Values
      • DEFAULT_LINE_COLOR

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

        protected static final java.awt.Color DEFAULT_SCROLL_KNOB_COLOR1
        Default first color in the scroll knob gradient.
      • DEFAULT_SCROLL_KNOB_COLOR2

        protected static final java.awt.Color DEFAULT_SCROLL_KNOB_COLOR2
        Default second color in the scroll knob gradient.
      • minValue

        protected int minValue
        Minimum value in the scroll range.
      • maxValue

        protected int maxValue
        Maximum value in the scroll range.
      • value

        protected int value
        Current scroll bar value.
      • extent

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

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

        protected int scrollArrowSize
        Size, in pixels, of the scroll arrow square.
      • 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.
      • pickSupport

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

        protected java.awt.Rectangle bounds
        Full bounds of the scroll bar.
      • scrollBounds

        protected java.awt.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.
      • arrowInsets

        protected java.awt.Insets arrowInsets
        Insets used to position the triangle in the scroll arrow box.
      • opacity

        protected double opacity
        Opacity of the scroll bar knob.
      • lineColor

        protected java.awt.Color lineColor
        Color applied to lines in the scroll bar.
      • knobColor1

        protected java.awt.Color knobColor1
        First color of the gradient used to fill the scroll knob.
      • knobColor2

        protected java.awt.Color knobColor2
        Second color of the gradient used to fill the scroll knob.
      • 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.
      • 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).
      • autoScrollIncrement

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

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

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

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

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

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

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

        protected java.awt.Rectangle scrollUpControlBounds
        Bounds of the "up arrow" control.
      • scrollDownControlBounds

        protected java.awt.Rectangle scrollDownControlBounds
        Bounds of the "down arrow" control.
      • scrollKnobBounds

        protected java.awt.Rectangle scrollKnobBounds
        Bounds of the scroll knob.
      • scrollUpBarBounds

        protected java.awt.Rectangle scrollUpBarBounds
        Bounds of the scroll bar area above the knob.
      • scrollDownBarBounds

        protected java.awt.Rectangle scrollDownBarBounds
        Bounds of the scroll bar area below the knob.
      • nextAutoScroll

        protected long nextAutoScroll
        Time at which the scrollbar should automatically update itself.
    • 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,
                         java.lang.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

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

        public java.awt.Rectangle getBounds()
        Get the bounds of the scroll bar.
        Returns:
        Scroll bar bounds.
      • setBounds

        public void setBounds​(java.awt.Rectangle bounds)
        Set the bounds of the scroll bar.
        Parameters:
        bounds - New bounds.
      • getMinValue

        public int getMinValue()
        Get the minimum value in the scroll range.
        Returns:
        Minimum value.
      • setMinValue

        public void setMinValue​(int minValue)
        Set the minimum value in the scroll range.
        Parameters:
        minValue - New minimum.
      • getMaxValue

        public int getMaxValue()
        Get the maximum value in the scroll range.
        Returns:
        Maximum value.
        See Also:
        getMinValue(), setMaxValue(int)
      • setMaxValue

        public void setMaxValue​(int maxValue)
        Set the maximum value in the scroll range.
        Parameters:
        maxValue - New maximum.
      • 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].
      • 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.
      • 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)
      • setUnitIncrement

        public void setUnitIncrement​(int unitIncrement)
        Set the unit increment.
        Parameters:
        unitIncrement - New unit increment. Must be a positive number.
        See Also:
        getUnitIncrement()
      • 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.
      • getOrientation

        public java.lang.String getOrientation()
        Get the scroll bar orientation.
        Returns:
        The scroll bar orientation, either AVKey.VERTICAL or AVKey.HORIZONTAL.
      • setOrientation

        public void setOrientation​(java.lang.String orientation)
        Set the scroll bar orientation.
        Parameters:
        orientation - The scroll bar orientation, either AVKey.VERTICAL or AVKey.HORIZONTAL.
      • 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)
      • 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()
      • getValueAsPercentage

        public double getValueAsPercentage()
        Get the value as a percentage of the scroll range.
        Returns:
        Current value as percentage.
      • getMinScrollKnobSize

        public int getMinScrollKnobSize()
        Indicates the minimum size of the scrollbar knob, in pixels.
        Returns:
        Minimum size of the knob in pixels.
      • 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.
      • 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.
      • 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.
      • getLineColor

        public java.awt.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()
      • setLineColor

        public void setLineColor​(java.awt.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)
      • setKnobColor

        public void setKnobColor​(java.awt.Color color1,
                                 java.awt.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)
      • getKnobColor

        public java.awt.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()
      • getOpacity

        public double getOpacity()
        Indicates the opacity of the scroll knob.
        Returns:
        Scroll knob opacity.
      • setOpacity

        public void setOpacity​(double opacity)
        Specifies the opacity of the scroll knob.
        Parameters:
        opacity - New opacity.
      • 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.
      • 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.
      • 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​(java.lang.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.
      • 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
      • 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.
      • draw

        protected void draw​(DrawContext dc)
        Draw the scroll bar.
        Parameters:
        dc - Current draw context.
      • doPick

        protected void doPick​(DrawContext dc)
        Pick the scroll bar.
        Parameters:
        dc - Current draw context.
      • drawPickableQuad

        protected void drawPickableQuad​(DrawContext dc,
                                        java.lang.Object pickObject,
                                        java.awt.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,
                                java.awt.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,
                                    java.awt.Rectangle bounds,
                                    java.awt.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.