
import javax.swing.JApplet;         // import class JApplet
import java.awt.Graphics;           // import class Graphics
import java.awt.*;

/**
 * This class provides an applet displaying the current time.
 */
public class ClockApplet extends JApplet
{
    private Thread animator = null;

    /**
     * Called to stop the applet.
     */
    public void stop()
    {
        if (animator != null)
            animator.interrupt();
        animator = null;
    }

    /**
     * Method called to begin the applet.
     */
    public void start()
    {
        if (animator == null)
        {
            animator = new Thread() {
                public void run() {
                    updateTime();
                }
            };
            animator.start();
        }
    }
    
    /**
     * The method run by the animator thread.
     */
    public void updateTime()
    {
        try 
        {
            while (!Thread.interrupted())
            {
                repaint();
                Thread.sleep(500);
            }
        }
        catch (InterruptedException e) { }
    }
                
    /**
     * This function draws the applet's contents.
     * @param g the graphics object to draw with
     */
    public void paint( Graphics g )
    {
        Timestamp t = new Timestamp();
        t.fillTimes();
        String display = getDigitsAsString(t.hrs) + ":" +
                 getDigitsAsString(t.mins) + ":" +
                 getDigitsAsString(t.secs) + " " +
                 t.am_pm;

        g.setColor(Color.white);
        g.fillRect(0, 0, 150, 60);
        g.setColor(Color.black);
        g.drawString(display, 10, 50);
    }

    /**
     * Helper method to convert an integer to a 0-padded string.
     * @param i The integer to convert
     * @return A string representing the integer, padded on the
     * left by a '0' character if the integer was less than 10.
     */
    protected String getDigitsAsString(int i)
    {
        String str = Integer.toString(i);
        if (i < 10)
            str = "0" + str;
        return str;
    }
}

