/*
 *
 * Copyright (c) 1996 - 1998
 * Frank Buss (fb@frank-buss.de), Stephan Schloepke (stephan@nordrhein.net)
 *
 * This applet was published in the book:
 *
 *     "Programmier Training Java, In 15 Stunden topfit"
 *     ISBN 3-8158-1303-4
 *     Authors: Frank Buss, Stephan Schloepke
 *     Data Becker Verlage (http://www.databecker.de)
 *
 * You can get this applet and more at http://www.frank-buss.de
 *
 */

//
// einen berührungssensitiven Knopf für HTML-Links
//

import java.applet.*;
import java.awt.*;
import java.net.*;

public class Link extends Applet {

    private Color normal;
    private Color focus;
    private String text;
    private URL url;

    public void init() {
        setBackground(Color.white);
        setFont(new Font("Helvetica",Font.BOLD,14));
        text=getParameter("text");
        try {
            url=new URL(getParameter("link"));
        } catch (MalformedURLException e) {}
        normal=new Color(Integer.parseInt(getParameter("farbe"),16));
        focus=normal.brighter().brighter();
        setForeground(normal);
    }

    public boolean mouseEnter(Event  evt, int  x, int  y) {
        setForeground(focus);
        repaint();
        return true;  // signalisieren, daß dieses Ereignis ausgewertet wurde
    }

    public boolean mouseExit(Event  evt, int  x, int  y) {
        setForeground(normal);
        repaint();
        return true;
    }

    public boolean mouseDown(Event evt, int x, int y) {
        showStatus(url.toString());
        getAppletContext().showDocument(url);
        return true;
    }

    public void paint(Graphics g) {
        Dimension size=size();
        g.fillArc(0,0,size.height,size.height,90,180);
        g.fillArc(size.width-size.height,0,size.height,size.height,270,180);
        g.fillRect(size.height>>1,0,size.width-size.height,size.height);
        g.setColor(getBackground());
        int textWidth=g.getFontMetrics().stringWidth(text);
        int textStart=(size.width-textWidth)>>1;
        g.fillRect(textStart-2,0,textWidth+4,size.height);
        g.setColor(getForeground());
        g.drawString(text,textStart,size.height-3);
    }

}
