FileDocCategorySizeDatePackage
WindowsScrollBarUI.javaAPI DocJava SE 6 API16425Tue Jun 10 00:21:58 BST 2008com.sun.java.swing.plaf.windows

WindowsScrollBarUI

public class WindowsScrollBarUI extends BasicScrollBarUI
Windows rendition of the component.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. A future release of Swing will provide support for long term persistence.

Fields Summary
private Grid
thumbGrid
private Grid
highlightGrid
Constructors Summary
Methods Summary
protected voidconfigureScrollBarColors()

        super.configureScrollBarColors();
	Color color = UIManager.getColor("ScrollBar.trackForeground");
        if (color != null && trackColor != null) {
            thumbGrid = Grid.getGrid(color, trackColor);
        }

	color = UIManager.getColor("ScrollBar.trackHighlightForeground");
        if (color != null && trackHighlightColor != null) {
            highlightGrid = Grid.getGrid(color, trackHighlightColor);
        }
    
protected ArrowButtonListenercreateArrowButtonListener()
{@inheritDoc}

since
1.6

        // we need to repaint the entire scrollbar because state change for each
        // button causes a state change for the thumb and other button on Vista
        if(XPStyle.isVista()) {
            return new ArrowButtonListener() {
                public void mouseEntered(MouseEvent evt) { 
                    repaint();
                    super.mouseEntered(evt);
                }
                public void mouseExited(MouseEvent evt) { 
                    repaint();
                    super.mouseExited(evt);
                }
                private void repaint() {
                    scrollbar.repaint();
                }
            };
        } else {
            return super.createArrowButtonListener();
        }
    
protected javax.swing.JButtoncreateDecreaseButton(int orientation)

        return new WindowsArrowButton(orientation,
				    UIManager.getColor("ScrollBar.thumb"),
				    UIManager.getColor("ScrollBar.thumbShadow"),
				    UIManager.getColor("ScrollBar.thumbDarkShadow"),
				    UIManager.getColor("ScrollBar.thumbHighlight"));
    
protected javax.swing.JButtoncreateIncreaseButton(int orientation)

        return new WindowsArrowButton(orientation,
				    UIManager.getColor("ScrollBar.thumb"),
				    UIManager.getColor("ScrollBar.thumbShadow"),
				    UIManager.getColor("ScrollBar.thumbDarkShadow"),
				    UIManager.getColor("ScrollBar.thumbHighlight"));
    
public static javax.swing.plaf.ComponentUIcreateUI(javax.swing.JComponent c)
Creates a UI for a JScrollBar.

param
c the text field
return
the UI

        return new WindowsScrollBarUI();
    
protected voidinstallDefaults()

	super.installDefaults();

	if (XPStyle.getXP() != null) {
	    scrollbar.setBorder(null);
	}
    
protected voidpaintDecreaseHighlight(java.awt.Graphics g)

        if (highlightGrid == null) {
            super.paintDecreaseHighlight(g);
        }
        else {
            Insets insets = scrollbar.getInsets();
            Rectangle thumbR = getThumbBounds();
            int x, y, w, h;

            if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
                x = insets.left;
                y = decrButton.getY() + decrButton.getHeight();
                w = scrollbar.getWidth() - (insets.left + insets.right);
                h = thumbR.y - y;
            } 
            else {
                x = decrButton.getX() + decrButton.getHeight();
                y = insets.top;
                w = thumbR.x - x;
                h = scrollbar.getHeight() - (insets.top + insets.bottom);
            }
            highlightGrid.paint(g, x, y, w, h);
	}
    
protected voidpaintIncreaseHighlight(java.awt.Graphics g)

        if (highlightGrid == null) {
            super.paintDecreaseHighlight(g);
        }
        else {
            Insets insets = scrollbar.getInsets();
            Rectangle thumbR = getThumbBounds();
            int x, y, w, h;

            if (scrollbar.getOrientation() == JScrollBar.VERTICAL) {
                x = insets.left;
                y = thumbR.y + thumbR.height;
                w = scrollbar.getWidth() - (insets.left + insets.right);
                h = incrButton.getY() - y;
            }
            else {
                x = thumbR.x + thumbR.width;
                y = insets.top;
                w = incrButton.getX() - x;
                h = scrollbar.getHeight() - (insets.top + insets.bottom);
            }
            highlightGrid.paint(g, x, y, w, h);
        }
    
protected voidpaintThumb(java.awt.Graphics g, javax.swing.JComponent c, java.awt.Rectangle thumbBounds)

	boolean v = (scrollbar.getOrientation() == JScrollBar.VERTICAL);

	XPStyle xp = XPStyle.getXP();
	if (xp != null) {
	    JScrollBar sb = (JScrollBar)c;
	    State state = State.NORMAL;
	    if (!sb.isEnabled()) {
		state = State.DISABLED;
	    } else if (isDragging) {
		state = State.PRESSED;
	    } else if (isThumbRollover()) {
		state = State.HOT;
            } else if (XPStyle.isVista()) {
                if ((incrButton != null && incrButton.getModel().isRollover()) ||
                    (decrButton != null && decrButton.getModel().isRollover())) {
                    state = State.HOVER;
                }
            }
	    // Paint thumb
	    Part thumbPart = v ? Part.SBP_THUMBBTNVERT : Part.SBP_THUMBBTNHORZ;
	    xp.getSkin(sb, thumbPart).paintSkin(g, thumbBounds, state);
	    // Paint gripper
	    Part gripperPart = v ? Part.SBP_GRIPPERVERT : Part.SBP_GRIPPERHORZ;
	    Skin skin = xp.getSkin(sb, gripperPart);
            Insets gripperInsets = xp.getMargin(c, thumbPart, null, Prop.CONTENTMARGINS);
            if (gripperInsets == null ||
                (v && (thumbBounds.height - gripperInsets.top -
                       gripperInsets.bottom >= skin.getHeight())) ||
                (!v && (thumbBounds.width - gripperInsets.left -
                        gripperInsets.right >= skin.getWidth()))) {
                skin.paintSkin(g,
                               thumbBounds.x + (thumbBounds.width  - skin.getWidth()) / 2,
                               thumbBounds.y + (thumbBounds.height - skin.getHeight()) / 2,
                               skin.getWidth(), skin.getHeight(), state);
            }
	} else {
	    super.paintThumb(g, c, thumbBounds);
	}
    
protected voidpaintTrack(java.awt.Graphics g, javax.swing.JComponent c, java.awt.Rectangle trackBounds)

	boolean v = (scrollbar.getOrientation() == JScrollBar.VERTICAL);

	XPStyle xp = XPStyle.getXP();
	if (xp != null) {
	    JScrollBar sb = (JScrollBar)c;
	    State state = State.NORMAL;
	    // Pending: Implement rollover (hot) and pressed
	    if (!sb.isEnabled()) {
		state = State.DISABLED;
	    }
	    Part part = v ? Part.SBP_LOWERTRACKVERT : Part.SBP_LOWERTRACKHORZ;
	    xp.getSkin(sb, part).paintSkin(g, trackBounds, state);
	} else if (thumbGrid == null) {
            super.paintTrack(g, c, trackBounds);
        }
        else {
            thumbGrid.paint(g, trackBounds.x, trackBounds.y, trackBounds.width,
                            trackBounds.height);
            if (trackHighlight == DECREASE_HIGHLIGHT) {
                paintDecreaseHighlight(g);
            } 
            else if (trackHighlight == INCREASE_HIGHLIGHT) {
                paintIncreaseHighlight(g);
            }
        }
    
protected voidsetThumbRollover(boolean active)
{@inheritDoc}

since
1.6

        boolean old = isThumbRollover();
        super.setThumbRollover(active);
        // we need to repaint the entire scrollbar because state change for thumb
        // causes state change for incr and decr buttons on Vista
        if(XPStyle.isVista() && active != old) {
            scrollbar.repaint();
        }
    
public voiduninstallUI(javax.swing.JComponent c)

        super.uninstallUI(c);
        thumbGrid = highlightGrid = null;