//MyFirstCoffee.java -- by tsaiwn@csie.nctu.edu.tw
//   ///////////// 猔種郎璶籔 Class 
import java.applet.Applet;
import java.awt.*;    // Graphics, Font, Color, ...
import java.awt.event.*;   // event related
public class MyFirstCoffee extends Applet 
    implements MouseListener { // so that I can handle MouseEvent

  public static void main(String x[ ]) { //can be RUN as application
     Frame f = new Frame("Java");   // give me a Frame Object
     MyFirstCoffee me = new MyFirstCoffee( );
     f.setSize(500,600);     // do NOT forget to set Frame size
     f.add(me);   // add me (Applet is Panel) into Frame (is Window)
     f.setVisible(true);
     me.init( );  // simulate Applet
     me.start( ); // ..
  }//main(
  public void update(Graphics ggg ) {
      System.out.println(" update kk=" + kk++);
      //ggg.clearRect(0, 0, getSize().width, getSize().height);
      paint(ggg);
  }//update(
  public void repaint( ) {
      super.repaint( );
      System.out.println(" repaint kk=" + kk++);
  }// repaint(
  public void start( ) { System.out.println(" start kk=" + kk++); }//start
  public void stop( ) { System.out.println(" stop kk=" + kk++); }//start
  public void destroy( ) {System.out.println(" destroy kk=" + kk++);}
 
   public void init ( ) {   //硄盽糶穦暗Ω
        try {
         s= getParameter("MSG");  // ъ<applet> 柑把计 MSGs
        }catch(Exception e) { 
          System.out.println("No parameter MSG");
        } System.out.println(" init kk=" + kk++);
        addMouseListener(this); // on Mouse Click will call functions in "this."
   }//init
      public void paint (Graphics g) {   // 程璶 function, р硂Object礶ㄓ
         System.out.println("paint kk=" + kk++);
         if(s == null ) s= "Ha Ha Ha !\nHee Heeee!";
               // appletviewerъぃ０,   ...(bug?  HTML⊿糶)
         g.clearRect(0, 0, getSize().width, getSize().height);
         g.setColor(Color.blue);  // ┮Τ肅︹盽计琌糶 ! ┣玽? э
         g.setFont( new Font("Courier", Font.BOLD, 32) );
         //setBackground(Color.green); //硂琌Appletmethod
         g.drawString("Hey You!", 44, 80 );

         g.setColor(Color.red);  // ┮Τ肅︹盽计琌糶 ! 跑计!
         g.drawRect(55, 160-32, 20*s.length() , 36);  // red
         g.setColor(Color.yellow);
         g.fillRect(57, 160-32+2, 20*s.length()-4 , 36-4);
         ///
         g.setFont( new Font("Courier", Font.PLAIN, 24) );
         g.drawString("s.length()="+s.length(), 60, 220);
         g.setFont( new Font("Courier", Font.BOLD, 32) );
         g.setColor(Color.magenta);  // magenta
         g.drawString(s, 60, 160 );         
         g.setFont( new Font("夹发砰", Font.BOLD, 32) );
         g.setColor(Color.orange);  // orange
         g.drawString(s, 60, 280 );         
      }// paint(
   // because implements MouseListener, we have to write these:
    public  void mousePressed(java.awt.event.MouseEvent e){ }
    public void mouseReleased(java.awt.event.MouseEvent e){}
    public void mouseEntered(java.awt.event.MouseEvent e){}
    public void mouseExited(java.awt.event.MouseEvent e){}
    public void mouseClicked(MouseEvent e) {
         System.out.println(" kkk kkk kkk");
         Color xx[ ] = {Color.red, Color.blue, Color.green};
         myColor++; myColor %= xx.length;
         setBackground( xx[myColor] );
         repaint( );
    } // mouseClicked(   // 菲公璶 Applet  Click Τ
    int myColor=0;
    int kk=0;
    String s; // global 跑计獽尿 function ノ
}// class
