\ru\ifmo\alarm\controlled\LightDiode.java

package ru.ifmo.alarm.controlled; 
 
import java.util.Timer; 
import java.util.TimerTask; 
 
import ru.ifmo.alarm.gui.AlarmFrame; 
 
import com.evelopers.unimod.runtime.ControlledObject; 
import com.evelopers.unimod.runtime.context.StateMachineContext; 
 
public class LightDiode implements ControlledObject { 
 
    /** 
     * This is a flag controling turning on/off light diode blinking 
     */ 
    protected static boolean isOn  = false; 
     
    /** 
     * This is a timer for controling light diode blinking periode 
     */ 
    private Timer timer; 
     
    public static boolean isOn() { 
        return isOn; 
    } 
     
    /** 
     * @unimod.action.descr start blinking 
     */ 
    public void z1(StateMachineContext context) { 
        TimerTask timerTask = new TimerTask() 
        { 
            public void run()  
            { 
                isOn = !isOn; 
                AlarmFrame.alarmFrame.repaint(); 
            } 
        }; 
         
        timer = new Timer(true); 
        // start blinking with 0.5 sec period 
        timer.schedule(timerTask, 0, 500); 
    } 
 
    /** 
     * @unimod.action.descr stop blinking 
     */ 
    public void z2(StateMachineContext context) { 
        if (timer != null) 
        { 
            timer.cancel(); 
        } 
        isOn = false; 
        AlarmFrame.alarmFrame.repaint(); 
    } 
}