\ru\ifmo\alarm\event\RemoteControl.java

package ru.ifmo.alarm.event; 
 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
 
import ru.ifmo.alarm.gui.AlarmFrame; 
 
import com.evelopers.common.exception.CommonException; 
import com.evelopers.unimod.core.stateworks.Event; 
import com.evelopers.unimod.runtime.EventProvider; 
import com.evelopers.unimod.runtime.ModelEngine; 
import com.evelopers.unimod.runtime.context.StateMachineContextImpl; 
 
public class RemoteControl implements EventProvider { 
 
    private ModelEngine engine;     //global so that ActionListener could access it 
     
    /** 
     * @unimod.event.descr button 1 pressed 
     */ 
    public static final String E11 = "e11";     //turns alarm on 
    /** 
     * @unimod.event.descr button 2 pressed 
     */ 
    public static final String E12 = "e12";     //turns alarm off 
 
    /** 
     * @unimod.event.descr button 3 pressed 
     */ 
    public static final String E13 = "e13";     //additional button 
     
    public void init(ModelEngine engine) throws CommonException { 
        // for actionPerformed method to access engine 
        this.engine = engine;       
        JButton button1 = AlarmFrame.alarmFrame.getRemoteControlPanel().getButton1(); 
        JButton button2 = AlarmFrame.alarmFrame.getRemoteControlPanel().getButton2(); 
        JButton button3 = AlarmFrame.alarmFrame.getRemoteControlPanel().getButton3(); 
         
        button1.addActionListener(new ActionListener() {    //if button1 was pressed then create event E1 
            public void actionPerformed(ActionEvent e) { 
                RemoteControl.this.engine.getEventManager().handle( 
                        new Event(E11), StateMachineContextImpl.create()); 
            } 
        }); 
         
        button2.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                RemoteControl.this.engine.getEventManager().handle( 
                        new Event(E12), StateMachineContextImpl.create()); 
            } 
        }); 
         
        button3.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                RemoteControl.this.engine.getEventManager().handle( 
                        new Event(E13), StateMachineContextImpl.create()); 
            } 
        }); 
    } 
 
    public void dispose() { 
        AlarmFrame.alarmFrame.dispose();    //close window when the state machine stops 
    } 
}