Milán Major

netscape-revival

1 branch
Code

sun-java/classsrc/sun/awt/tiny/TinyScrollbarPeer.java

/*
 * @(#)TinyScrollbarPeer.java	1.4 95/11/09 Arthur van Hoff
 *
 * Copyright (c) 1995 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for NON-COMMERCIAL purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. Please refer to the file "copyright.html"
 * for further important copyright and licensing information.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */
package sun.awt.tiny;

import java.awt.*;
import java.awt.peer.*;

class TinyScrollbarPeer extends TinyComponentPeer implements ScrollbarPeer, TinyScrollbarClient {
    TinyVerticalScrollbar tsb;
    
    /**
     * Create a scrollbar.
     */
    TinyScrollbarPeer(Scrollbar target) {
	winCreate((TinyComponentPeer)target.getParent().getPeer());
	init(target);

	if (target.getOrientation() == Scrollbar.VERTICAL) {
	    tsb = new TinyVerticalScrollbar();
	} else {
	    tsb = new TinyHorizontalScrollbar();
	}
	tsb.sb = this;
	tsb.min = target.getMinimum();
	tsb.max = target.getMaximum();
	tsb.vis = target.getVisible();
	tsb.val = target.getValue();
	tsb.line = target.getLineIncrement();
	tsb.page = target.getPageIncrement();
    }

    /**
     * Compute the minimum size for the scrollbar.
     */
    public Dimension minimumSize() {
	Scrollbar sb = (Scrollbar)target;
	return (sb.getOrientation() == Scrollbar.VERTICAL) ? 
	    new Dimension(15, 50) : new Dimension(50, 15);
    }

    /**
     * Paint the scrollbar.
     */
    public void paintComponent(Graphics g) {
	Scrollbar sb = (Scrollbar)target;
	g.setColor(sb.getBackground());
	g.fillRect(1, 1, width-2, height-2);
	tsb.paint(g, sb.getBackground(), width, height);
    }

    /**
     * The value has changed.
     */
    public void notifyValue(Object obj, int id, int val) {
	Scrollbar sb = (Scrollbar)target;
	sb.setValue(val);
	targetEvent(id, new Integer(val));
    }

    /**
     * Handle an event.
     */
    public boolean handleWindowEvent(Event evt) {
	Scrollbar sb = (Scrollbar)target;
	return tsb.handleWindowEvent(evt, width, height);
    }

    public void setValue(int value) {
	tsb.val = value;
	repaint();
    }
    public void setValues(int value, int visible, int minimum, int maximum) {
	tsb.min = minimum;
	tsb.max = maximum;
	tsb.vis = visible;
	tsb.val = value;
	repaint();
    }
    public void setLineIncrement(int l) {
	tsb.line = l;
    }
    public void setPageIncrement(int p) {
	tsb.page = p;
    }
}