
/*
   This applet tests two custom components, MirrorLabel and StopWatch.
   It also tests the validate() method.  The user can click a button
   to change the text on the components in the applet.  Clicking
   another button will validate the applet.  This will cause components
   that have been invalidated to be resized.  The MirrorLabel is
   automatically invalidated when its text is changed.  For the
   StopWatch and Buttons, it might be platform-dependent.
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ComponentTest extends JApplet {

   MirrorLabel greet;
   StopWatch timer;
   JButton changeText;

   public void init() {

       getContentPane().setLayout(new FlowLayout());

       greet = new MirrorLabel("PLEASE LET ME OUT!");
       greet.setBackground(Color.black);
       greet.setForeground(Color.red);
       greet.setFont( new Font("SansSerif", Font.BOLD, 30) );
       getContentPane().add(greet);
       
       timer = new StopWatch();
       timer.setBackground(Color.white);
       timer.setForeground(Color.blue);
       timer.setOpaque(true);
       timer.setFont(new Font("Serif", Font.PLAIN, 20));
       getContentPane().add( timer );
       
       changeText = new JButton("Change Text in this Applet");
       getContentPane().add(changeText);
       
       changeText.addActionListener( new ActionListener() {
              public void actionPerformed(ActionEvent evt) {
                  if (greet.getText().equals("PLEASE LET ME OUT!"))
                     greet.setText("Help!");
                  else
                     greet.setText("PLEASE LET ME OUT!");
                  timer.setText("Please click me.");
                  if (changeText.getText().equals("Change Back"))
                     changeText.setText("Change Text in this Applet");
                  else
                     changeText.setText("Change Back");
              }
          } );
       
   } // end init()
   
} // end class NullLayoutDemo

