
// Source code

import java.applet.*;
import java.awt.*;
import java.net.*;
import java.lang.*;


public class button extends Applet{ // subcalss of applet

int flag=0,flag2=1,font_size,x,y,style;
String link,msg,default_msg,move_msg,wait_msg,font_name,move_status,wait_status;
Color text,back=new Color(0) ,font_color,backgr_color,move_color,move_backgr,wait_color,wait_backgr;
public void init()
{
 if(null ==(link=getParameter("url"))) link="http://photo.tierranet.com";
 if(null == (default_msg=getParameter("default_msg"))) default_msg="Default";
 if(null ==(move_msg=getParameter("move_msg"))) move_msg=default_msg;
 if(null ==(wait_msg=getParameter("wait_msg"))) wait_msg=default_msg;
 if(null ==(font_name=getParameter("font_name"))) font_name="Times New Roman";
 if(null ==(move_status=getParameter("move_status"))) move_status=default_msg;
 if(getParameter("font_size")!=null)
   font_size=Integer.valueOf(getParameter("font_size")).intValue();
 else
 font_size=12;// default font size
 if(getParameter("x")!=null)
   x=Integer.valueOf(getParameter("x")).intValue();
   else x=5;
 if(getParameter("y")!=null)
   y=Integer.valueOf(getParameter("y")).intValue();
   else y=14;
 if (getParameter("bold")!=null)
          style=Font.BOLD;
          else style=Font.PLAIN;
 if (getParameter("italic")!=null)
          style+=Font.ITALIC;
 Font f= new Font(font_name,style,font_size);

 setFont(f);
 font_color=parseColorString(getParameter("font_color"),Color.black);
 backgr_color=parseColorString(getParameter("backgr_color"),Color.green);
 move_color=parseColorString(getParameter("move_color"),Color.red);
 move_backgr=parseColorString(getParameter("move_backgr"),Color.black);
 wait_color=parseColorString(getParameter("wait_color"),Color.yellow);
 wait_backgr=parseColorString(getParameter("wait_backgr"),Color.black);
 }
public void start()
{
 flag=0;
 flag2=1;
 msg=default_msg;
 text=font_color;
 back=backgr_color;

}
public void paint(Graphics g){ // over-rides default paint function

if (flag==1)
{// go to new location
URL u;

try{
        u = new URL(link);
        AppletContext ac=getAppletContext();
        ac.showDocument(u);
   }
   catch (java.net.MalformedURLException ex)
   {
    System.out.println("Invalid URL");
   }





}//end if

g.setColor(text);
g.fillRect(0,0,size().width-1,size().height-1);
g.setColor(back);
g.drawString(msg,x,y);
}

public boolean mouseEnter(Event evt, int x, int y)
// called when mouse enters applet area
{
if (flag2==1)// will not react after button was clicked
{
text=move_color;
back=move_backgr;
msg=move_msg;
repaint();
showStatus(move_status);
}
return true;
}


public boolean mouseExit(Event evt, int x, int y)
// called when mouse exits applet area
{
if (flag2==1)
{
text=font_color;
back=backgr_color;
msg=default_msg;
repaint();
showStatus("");
}
return true;
}

public boolean mouseDown(Event evt, int x, int y)
// called when mouse was clicked
{
    flag=1;
    msg=wait_msg;
    text=wait_color;
    back=wait_backgr;
    flag2=0;
    repaint();
    return true;
}

private Color parseColorString(String colorString,Color Default)
// convert a color represented by colorString (RRGGBB) to type Color
// if string is empty or string lenght is invalid Default color will be
// returned
{       if (colorString==null) return Default;
        if(colorString.length()==6){
            int R = Integer.valueOf(colorString.substring(0,2),16).intValue();
            int G = Integer.valueOf(colorString.substring(2,4),16).intValue();
            int B = Integer.valueOf(colorString.substring(4,6),16).intValue();
            return new Color(R,G,B);
        }
        else return Default;
    }


}

