diff --git a/java/src/pm/Action.java b/java/src/pm/Action.java index 7b90c65..41f298f 100644 --- a/java/src/pm/Action.java +++ b/java/src/pm/Action.java @@ -1,23 +1,18 @@ package pm; public enum Action { - START ("start"), - TEST ("test"), - EXIT ("exit"), - PLAY ("play"), - PAUSE ("pause"), - RESUME ("resume"), - NEXT ("next"), - PREVIOUS ("previous"), - FORWARD ("forward"), - REWIND ("rewind"), - MUTE ("mute"), - VOLUME_UP ("volumeUp"), - VOLUME_DOWN ("volumeDown"); - - protected String action; - - private Action(String action) { - this.action = action; - } + EXIT, + FORWARD, + MUTE, + NEXT, + PAUSE, + PLAY, + PREVIOUS, + REPEAT, + RESUME, + REWIND, + START, + TEST, + VOLUME_DOWN, + VOLUME_UP; } diff --git a/java/src/pm/Application.java b/java/src/pm/Application.java index 0b8367b..467bbf4 100644 --- a/java/src/pm/Application.java +++ b/java/src/pm/Application.java @@ -2,6 +2,7 @@ package pm; import pm.exception.application.ApplicationExitException; import pm.exception.application.ApplicationInitialiseException; +import pm.task.Continuous; import pm.task.TaskListener; public abstract class Application extends TaskListener { @@ -21,7 +22,18 @@ public abstract class Application extends TaskListener { } protected void task(Task task) { - action(task.getAction()); + Action action = task.getAction(); + if (task instanceof Continuous) { + Continuous continuous = (Continuous) task; + int sleep = continuous.getSleep(); + do { + action(action); + sleep(sleep); + } while (run && !continuous.getStop()); + continuous.reset(); + } else { + action(action); + } } protected abstract void action(Action action); diff --git a/java/src/pm/Device.java b/java/src/pm/Device.java index 62e0c39..d2dcebb 100644 --- a/java/src/pm/Device.java +++ b/java/src/pm/Device.java @@ -1,11 +1,14 @@ package pm; -import pm.exception.MacroException; import pm.exception.device.DeviceExitException; import pm.exception.device.DeviceInitialiseException; import pm.macro.Event; import pm.macro.MacroListener; -import pm.task.TaskProvider; +import pm.macro.event.Hold; +import pm.macro.event.Press; +import pm.macro.event.Release; +import pm.task.Continuous; +import pm.task.Stopper; public abstract class Device { protected MacroListener macroListener; @@ -14,22 +17,36 @@ public abstract class Device { macroListener = new MacroListener(); } - public void add(Macro macro, Task task) { + /* Register macro's */ + protected void add(Macro macro, Task task) { macroListener.add(macro, task); } - public void add(Event event, Task task) throws MacroException { - macroListener.add(event, task); + protected void add(Event event, Task task) { + add(new Macro(event), task); } - public void add(Event event) { + protected void add(Macro startMacro, Macro stopMacro, Continuous continuous) { + add(startMacro, continuous); + add(stopMacro, new Stopper(continuous)); + } + + protected void add(Event startEvent, Event stopEvent, Continuous continuous) { + add(startEvent, continuous); + add(stopEvent, 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) { macroListener.add(event); } - public void add(Task task) { - TaskProvider.add(task); - } - + /* Device default methods */ public void initialise() throws DeviceInitialiseException {} public void exit() throws DeviceExitException {} } diff --git a/java/src/pm/Macro.java b/java/src/pm/Macro.java index e1012e0..9b79d7e 100644 --- a/java/src/pm/Macro.java +++ b/java/src/pm/Macro.java @@ -12,6 +12,10 @@ import pm.macro.event.Release; public class Macro { protected Event[] eventArray; + public Macro(Event event) { + eventArray = new Event[]{event}; + } + public Macro(Event... eventArray) throws MacroException { ArrayList