package other;

// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   Timer.java

import java.util.Vector;

/**
 * Timer Klasse
 * Ruft die Methode void timerAction(Timer t) eines TimerListener
 * Objektes in regelmäßigen Abständen auf
 */
public class Timer
{
	// Attribute
    private Vector ListeListener;
    private int delay;
    private TimerThread timerThread;
	
    class TimerThread extends Thread
    {

        public void run()
        {
            do
            {
                try
                {
                    sleep(delay);
                }
                catch(InterruptedException interruptedexception) { }
                fireEvent();
            } while(true);
        }

        TimerThread()
        {
        }
    }

    /**
     * Konstruktor
     * @param i das Delay
     */
    public Timer(int i)
    {
        delay = i;
        ListeListener = new Vector();
    }

	/* ##########################################################################
	 * 						ÖFFENTLICHE METHODEN
	 * ##########################################################################*/    
    
    /**
     * Setzt das Intervall in dem die Methode timerAction() 
     * aufgerufen wird
     * @param i das Delay
     */
    public void setInterval(int i){
    	delay = i;
    }
    
    /**
     * Liefert das Intervall in dem die Methode timerAction() 
     * aufgerufen wird
     * @return das Delay
     */
    public int getInterval(){
    	return delay;
    }
    
    /**
     * Fügt dem Timer einen Listener hinzu
     * @param timerlistener Objekt das die Methode timerAction() implementiert
     */
    public void addTimerListener(TimerListener timerlistener)
    {
        ListeListener.add(timerlistener);
    }

    /**
     * Startet den Timer
     */
    public void start()
    {
        timerThread = new TimerThread();
        timerThread.start();
    }

    /**
     * Stoppt den Timmer
     */
    public void stop()
    {
    	try{
    		timerThread.stop();
    		timerThread = null;
    	}catch(Exception e){ }
    }

    /**
     * Liefert den Status des Timers
     * @return true wenn der Timer läuft, sonst false
     */
    public boolean isrunning()
    {
        return timerThread == null;
    }

	/* ##########################################################################
	 * 						HILFSMETHODEN
	 * ##########################################################################*/	    
    
    /**
     * Ruft die Methode timerAction des Listeners auf
     */
    private void fireEvent()
    {
        synchronized(this)
        {
            int i = ListeListener.size();
            for(int j = 0; j < i; j++)
                ((TimerListener)ListeListener.get(j)).timerAction(this);

        }
    }

}
