84 lines
2.4 KiB
Java
84 lines
2.4 KiB
Java
package pm;
|
|
|
|
import pm.exception.device.DeviceExitException;
|
|
import pm.exception.device.DeviceInitialiseException;
|
|
import pm.macro.Event;
|
|
import pm.macro.event.Hold;
|
|
import pm.macro.event.Press;
|
|
import pm.macro.event.Release;
|
|
import pm.macro.event.Sequence;
|
|
import pm.macro.event.SequenceListener;
|
|
import pm.task.Continuous;
|
|
import pm.task.Stopper;
|
|
import pm.task.TaskGatherer;
|
|
import pm.task.TaskListener;
|
|
|
|
public abstract class Device extends TaskListener {
|
|
protected SequenceListener sequenceListener;
|
|
|
|
public Device() {
|
|
super();
|
|
sequenceListener = new SequenceListener();
|
|
TaskGatherer.add(this);
|
|
}
|
|
|
|
/* Register macro's */
|
|
protected void add(Sequence sequence, Task task) {
|
|
sequenceListener.add(sequence, task);
|
|
}
|
|
|
|
protected void add(Event event, Task task) {
|
|
add(new Sequence(event), task);
|
|
}
|
|
|
|
protected void add(Press press, Task task, boolean macro) {
|
|
if (macro) {
|
|
add(new Macro(press), task);
|
|
} else {
|
|
add((Event) 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(Event startEvent, Event 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(Event event) {
|
|
sequenceListener.add(event);
|
|
}
|
|
|
|
/* Device default methods */
|
|
public void initialise() throws DeviceInitialiseException {}
|
|
|
|
public void exit() throws DeviceExitException {
|
|
stop();
|
|
}
|
|
}
|