/*
* "@(#)ToolTip.java 1.5 99/05/23
*
* Copyright (c) 1999 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
* modify and redistribute this software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
* LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
* LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*/
package com.sun.media.ui;
import java.awt.*;
import java.awt.event.*;
/**
* This class...
*/
public class ToolTip extends Window
{
private static final int MARGIN_HORZ = 4;
private static final int MARGIN_VERT = 2;
private String arrStrings[] = null;
/**
* Constructs the ToolTip object.
* @param strText text to display
*/
public ToolTip ( String strText ) {
super ( new Frame() );
Font font;
arrStrings = new String [1];
arrStrings[0] = new String ( strText );
font = new Font ( "Helvetica", Font.PLAIN, 10 );
this.setFont ( font );
resizePopup ();
}
/**
* Constructs the ToolTip object.
* @param arrStrings array of strings
*/
public ToolTip ( String arrStrings[] ) {
super ( new Frame() );
int i;
Font font;
arrStrings = new String [arrStrings.length];
for ( i = 0; i < arrStrings.length; i++ )
arrStrings[i] = new String ( arrStrings[i] );
font = new Font ( "Helvetica", Font.PLAIN, 10 );
this.setFont ( font );
resizePopup ();
}
public void setText ( String strText ) {
arrStrings = new String [1];
arrStrings[0] = new String ( strText );
resizePopup ();
repaint ();
}
/**
* This method is called, when the window needs redrawing.
* @param graphics the specified Graphics window
*/
public void paint ( Graphics graphics ) {
int i;
Rectangle rect;
int nX, nY;
int nHeight;
Font font;
FontMetrics fontMetrics;
rect = getBounds ();
font = getFont ();
fontMetrics = getFontMetrics ( font );
graphics.setColor ( new Color(255,255,192) );
graphics.fillRect ( 0, 0, rect.width, rect.height );
graphics.setColor ( Color.black );
graphics.drawRect ( 0, 0, rect.width-1, rect.height-1 );
nX = MARGIN_HORZ;
nY = MARGIN_VERT + fontMetrics.getAscent ();
nHeight = fontMetrics.getHeight ();
for ( i = 0; i < arrStrings.length; i++ ) {
graphics.drawString ( arrStrings[i], nX, nY );
nY += nHeight;
}
}
/**
* This method resizes window to fit all strings.
*/
private void resizePopup () {
int i;
int nWidth = 0;
int nHeight = 0;
int nWidthText;
Rectangle rect;
Font font;
FontMetrics fontMetrics;
Dimension dim;
rect = getBounds ();
font = getFont ();
fontMetrics = getFontMetrics ( font );
for ( i = 0; i < arrStrings.length; i++ ) {
nWidthText = fontMetrics.stringWidth ( arrStrings[i] );
nWidth = Math.max ( nWidth, nWidthText );
}
nHeight = fontMetrics.getHeight() * arrStrings.length;
rect.width = nWidth + 2 * MARGIN_HORZ;
rect.height = nHeight + 2 * MARGIN_VERT;
dim = this.getSize ();
if ( dim.height != rect.height || rect.width > dim.width || rect.width < dim.width / 2 )
setBounds ( rect );
}
}
|