92 lines
2.7 KiB
Java
92 lines
2.7 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.interrupt.InterruptListener;
|
|
import pm.interrupt.Interruptible;
|
|
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;
|
|
//protected InterruptListener interruptListener;
|
|
|
|
public Device() {
|
|
super();
|
|
sequenceListener = new SequenceListener(this);
|
|
//interruptListener = new InterruptListener(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);
|
|
}
|
|
|
|
/* Register interruptibles *
|
|
protected void add(Interruptible interruptible) {
|
|
interruptListener.add(interruptible);
|
|
}*/
|
|
|
|
/* Recognize events */
|
|
protected void add(State state) {
|
|
sequenceListener.add(state);
|
|
}
|
|
|
|
/* Device default methods */
|
|
public void initialise() throws DeviceInitialiseException {}
|
|
|
|
public void exit() throws DeviceExitException {
|
|
stop();
|
|
}
|
|
}
|