Files
mimis/java/src/pm/Device.java
2011-02-25 15:47:09 +00:00

83 lines
2.4 KiB
Java

package pm;
import pm.event.Task;
import pm.event.EventListener;
import pm.event.task.Continuous;
import pm.event.task.Stopper;
import pm.exception.device.DeviceExitException;
import pm.exception.device.DeviceInitialiseException;
import pm.macro.Sequence;
import pm.macro.SequenceListener;
import pm.macro.State;
import pm.macro.state.Hold;
import pm.macro.state.Press;
import pm.macro.state.Release;
public abstract class Device extends EventListener {
protected SequenceListener sequenceListener;
public Device() {
super();
sequenceListener = new SequenceListener(this);
}
/* Register macro's */
protected void add(Sequence sequence, Task task) {
sequenceListener.add(sequence, task);
}
protected void add(State state, Task task) {
add(new Sequence(state), task);
}
protected void add(Press press, Task task, boolean macro) {
if (macro) {
add(new Macro(press), task);
} else {
add((State) press, task);
}
}
protected void add(Press press, Task task) {
add(press, task, true);
}
protected void add(Hold hold, Task pressTask, Task releaseTask) {
Button button = hold.getButton();
add(new Press(button), pressTask, false);
add(new Release(button), releaseTask);
}
protected void add(Sequence startSequence, Sequence stopSequence, Continuous continuous) {
add(startSequence, continuous);
add(stopSequence, new Stopper(continuous));
}
protected void add(State startEvent, State stopEvent, Continuous continuous) {
add(startEvent, continuous);
add(stopEvent, new Stopper(continuous));
}
protected void add(Press startPress, Press stopPress, Continuous continuous) {
add(new Macro(startPress), continuous);
add(new Macro(stopPress), new Stopper(continuous));
}
protected void add(Hold hold, Continuous continuous) {
Button button = hold.getButton();
add(new Press(button), new Release(button), continuous);
}
/* Recognize events */
protected void add(State state) {
sequenceListener.add(state);
}
/* Device default methods */
public void initialise() throws DeviceInitialiseException {}
public void exit() throws DeviceExitException {
stop();
}
}