// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   Timer.java

import java.awt.AWTEventMulticaster;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintStream;

public class Timer extends Thread
{

    public boolean paused()
    {
        return paused;
    }

    public boolean running()
    {
        return running;
    }

    public void setAlarm(long l)
    {
        alarm = l;
    }

    Timer()
    {
        running = false;
        paused = false;
    }

    public void addActionListener(ActionListener actionlistener)
    {
        actionListener = AWTEventMulticaster.add(actionListener, actionlistener);
    }

    public void kill()
    {
        if(!running)
        {
            System.err.println("ERROR -- Timer stopped when not running.");
            return;
        } else
        {
            myThread.interrupt();
            running = false;
            return;
        }
    }

    public void toggle()
    {
        if(!running)
        {
            System.err.println("ERROR -- Timer toggled when not running.");
            return;
        }
        if(paused)
        {
            myThread.resume();
            paused = false;
            return;
        } else
        {
            myThread.suspend();
            paused = true;
            return;
        }
    }

    public void run()
    {
        if(running)
        {
            System.err.println("ERROR -- Timer started when already running.");
            return;
        }
        running = true;
        badalarm = false;
        paused = false;
        myThread = Thread.currentThread();
        for(; ticks < alarm; ticks++)
        {
            try
            {
                Thread.sleep(1000L);
            }
            catch(Exception _ex)
            {
                badalarm = true;
                System.err.println("ERROR -- Timer woken before alarm.");
            }
            ActionEvent actionevent = new ActionEvent(this, 1001, "TICK! TOCK!");
            actionListener.actionPerformed(actionevent);
        }

        running = false;
        if(!badalarm)
        {
            ActionEvent actionevent1 = new ActionEvent(this, 1001, "BEEP! BEEP!");
            actionListener.actionPerformed(actionevent1);
        }
    }

    private ActionListener actionListener;
    private boolean badalarm;
    private boolean running;
    private boolean paused;
    private long alarm;
    private long ticks;
    private Thread myThread;
}

