Continuous systeem afgemaakt, rollen van verschillende listeners en gatherers gecontroleerd en nutteloze exceptions verwijderd. Het nieuwe actions systeem moet nog worden doorgevoerd in de devices.
This commit is contained in:
@@ -1,23 +1,18 @@
|
|||||||
package pm;
|
package pm;
|
||||||
|
|
||||||
public enum Action {
|
public enum Action {
|
||||||
START ("start"),
|
EXIT,
|
||||||
TEST ("test"),
|
FORWARD,
|
||||||
EXIT ("exit"),
|
MUTE,
|
||||||
PLAY ("play"),
|
NEXT,
|
||||||
PAUSE ("pause"),
|
PAUSE,
|
||||||
RESUME ("resume"),
|
PLAY,
|
||||||
NEXT ("next"),
|
PREVIOUS,
|
||||||
PREVIOUS ("previous"),
|
REPEAT,
|
||||||
FORWARD ("forward"),
|
RESUME,
|
||||||
REWIND ("rewind"),
|
REWIND,
|
||||||
MUTE ("mute"),
|
START,
|
||||||
VOLUME_UP ("volumeUp"),
|
TEST,
|
||||||
VOLUME_DOWN ("volumeDown");
|
VOLUME_DOWN,
|
||||||
|
VOLUME_UP;
|
||||||
protected String action;
|
|
||||||
|
|
||||||
private Action(String action) {
|
|
||||||
this.action = action;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package pm;
|
|||||||
|
|
||||||
import pm.exception.application.ApplicationExitException;
|
import pm.exception.application.ApplicationExitException;
|
||||||
import pm.exception.application.ApplicationInitialiseException;
|
import pm.exception.application.ApplicationInitialiseException;
|
||||||
|
import pm.task.Continuous;
|
||||||
import pm.task.TaskListener;
|
import pm.task.TaskListener;
|
||||||
|
|
||||||
public abstract class Application extends TaskListener {
|
public abstract class Application extends TaskListener {
|
||||||
@@ -21,7 +22,18 @@ public abstract class Application extends TaskListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void task(Task task) {
|
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);
|
protected abstract void action(Action action);
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
package pm;
|
package pm;
|
||||||
|
|
||||||
import pm.exception.MacroException;
|
|
||||||
import pm.exception.device.DeviceExitException;
|
import pm.exception.device.DeviceExitException;
|
||||||
import pm.exception.device.DeviceInitialiseException;
|
import pm.exception.device.DeviceInitialiseException;
|
||||||
import pm.macro.Event;
|
import pm.macro.Event;
|
||||||
import pm.macro.MacroListener;
|
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 {
|
public abstract class Device {
|
||||||
protected MacroListener macroListener;
|
protected MacroListener macroListener;
|
||||||
@@ -14,22 +17,36 @@ public abstract class Device {
|
|||||||
macroListener = new MacroListener();
|
macroListener = new MacroListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(Macro macro, Task task) {
|
/* Register macro's */
|
||||||
|
protected void add(Macro macro, Task task) {
|
||||||
macroListener.add(macro, task);
|
macroListener.add(macro, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(Event event, Task task) throws MacroException {
|
protected void add(Event event, Task task) {
|
||||||
macroListener.add(event, 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);
|
macroListener.add(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(Task task) {
|
/* Device default methods */
|
||||||
TaskProvider.add(task);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void initialise() throws DeviceInitialiseException {}
|
public void initialise() throws DeviceInitialiseException {}
|
||||||
public void exit() throws DeviceExitException {}
|
public void exit() throws DeviceExitException {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ import pm.macro.event.Release;
|
|||||||
public class Macro {
|
public class Macro {
|
||||||
protected Event[] eventArray;
|
protected Event[] eventArray;
|
||||||
|
|
||||||
|
public Macro(Event event) {
|
||||||
|
eventArray = new Event[]{event};
|
||||||
|
}
|
||||||
|
|
||||||
public Macro(Event... eventArray) throws MacroException {
|
public Macro(Event... eventArray) throws MacroException {
|
||||||
ArrayList<Button> holdList = new ArrayList<Button>();
|
ArrayList<Button> holdList = new ArrayList<Button>();
|
||||||
ArrayList<Event> eventList = new ArrayList<Event>();
|
ArrayList<Event> eventList = new ArrayList<Event>();
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ import pm.application.example.ExampleApplication;
|
|||||||
import pm.application.iTunes.iTunesApplication;
|
import pm.application.iTunes.iTunesApplication;
|
||||||
import pm.device.gui.GUIDevice;
|
import pm.device.gui.GUIDevice;
|
||||||
import pm.device.jintellitype.JIntellitypeDevice;
|
import pm.device.jintellitype.JIntellitypeDevice;
|
||||||
import pm.exception.action.TargetNotSetException;
|
|
||||||
import pm.exception.application.ApplicationExitException;
|
import pm.exception.application.ApplicationExitException;
|
||||||
import pm.exception.device.DeviceExitException;
|
import pm.exception.device.DeviceExitException;
|
||||||
import pm.exception.device.DeviceInitialiseException;
|
import pm.exception.device.DeviceInitialiseException;
|
||||||
|
import pm.task.TaskGatherer;
|
||||||
import pm.task.TaskListener;
|
import pm.task.TaskListener;
|
||||||
import pm.util.ArrayCycle;
|
import pm.util.ArrayCycle;
|
||||||
|
|
||||||
@@ -28,6 +28,7 @@ public class Main extends TaskListener {
|
|||||||
"pm.device.wiimote.WiimoteDevice"};*/
|
"pm.device.wiimote.WiimoteDevice"};*/
|
||||||
applicationCycle = new ArrayCycle<Application>();
|
applicationCycle = new ArrayCycle<Application>();
|
||||||
deviceList = new ArrayList<Device>();
|
deviceList = new ArrayList<Device>();
|
||||||
|
TaskGatherer.initialise(taskQueue);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initialise() throws DeviceInitialiseException {
|
public void initialise() throws DeviceInitialiseException {
|
||||||
@@ -66,11 +67,15 @@ public class Main extends TaskListener {
|
|||||||
protected void action(Action action) {
|
protected void action(Action action) {
|
||||||
System.out.println("Main: " + action);
|
System.out.println("Main: " + action);
|
||||||
switch (action) {
|
switch (action) {
|
||||||
|
case NEXT:
|
||||||
|
applicationCycle.next();
|
||||||
|
break;
|
||||||
|
case PREVIOUS:
|
||||||
|
applicationCycle.previous();
|
||||||
|
break;
|
||||||
case EXIT:
|
case EXIT:
|
||||||
exit();
|
exit();
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package pm;
|
package pm;
|
||||||
|
|
||||||
public class Task {
|
public class Task {
|
||||||
Action action;
|
protected Action action;
|
||||||
Target target;
|
protected Target target;
|
||||||
|
|
||||||
public Task(Action action, Target target) {
|
public Task(Action action, Target target) {
|
||||||
this.action = action;
|
this.action = action;
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ import pm.Device;
|
|||||||
import pm.Target;
|
import pm.Target;
|
||||||
import pm.Task;
|
import pm.Task;
|
||||||
import pm.exception.EventException;
|
import pm.exception.EventException;
|
||||||
import pm.exception.MacroException;
|
|
||||||
import pm.exception.device.DeviceInitialiseException;
|
import pm.exception.device.DeviceInitialiseException;
|
||||||
import pm.macro.event.Press;
|
import pm.macro.event.Press;
|
||||||
import pm.macro.event.Release;
|
import pm.macro.event.Release;
|
||||||
|
import pm.task.Continuous;
|
||||||
|
|
||||||
public class JIntellitypeDevice extends Device implements HotkeyListener, IntellitypeListener {
|
public class JIntellitypeDevice extends Device implements HotkeyListener, IntellitypeListener {
|
||||||
protected ArrayList<Hotkey> hotkeyList;
|
protected ArrayList<Hotkey> hotkeyList;
|
||||||
@@ -29,16 +29,16 @@ public class JIntellitypeDevice extends Device implements HotkeyListener, Intell
|
|||||||
public void initialise() throws DeviceInitialiseException {
|
public void initialise() throws DeviceInitialiseException {
|
||||||
jit.addHotKeyListener(this);
|
jit.addHotKeyListener(this);
|
||||||
jit.addIntellitypeListener(this);
|
jit.addIntellitypeListener(this);
|
||||||
try {
|
add(
|
||||||
add(
|
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 'x'),
|
||||||
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 'x'),
|
new Task(Action.EXIT, Target.MAIN));
|
||||||
new Task(Action.EXIT, Target.MAIN));
|
add(
|
||||||
add(
|
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 't'),
|
||||||
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 't'),
|
new Task(Action.TEST, Target.MAIN));
|
||||||
new Task(Action.TEST, Target.MAIN));
|
add(
|
||||||
} catch (MacroException e) {
|
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 'r'),
|
||||||
e.printStackTrace();
|
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 's'),
|
||||||
}
|
new Continuous(Action.REPEAT, Target.APPLICATION, 500));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onIntellitype(int command) {
|
public void onIntellitype(int command) {
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
package pm.exception;
|
|
||||||
|
|
||||||
public class ActionException extends Exception {
|
|
||||||
protected static final long serialVersionUID = 1L;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package pm.exception.action;
|
|
||||||
|
|
||||||
import pm.exception.ActionException;
|
|
||||||
|
|
||||||
public class InvokeActionException extends ActionException {
|
|
||||||
protected static final long serialVersionUID = 1L;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package pm.exception.action;
|
|
||||||
|
|
||||||
import pm.exception.ActionException;
|
|
||||||
|
|
||||||
public class NotImplementedActionException extends ActionException {
|
|
||||||
protected static final long serialVersionUID = 1L;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package pm.exception.action;
|
|
||||||
|
|
||||||
import pm.exception.ActionException;
|
|
||||||
|
|
||||||
public class TargetNotSetException extends ActionException {
|
|
||||||
protected static final long serialVersionUID = 1L;
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package pm.exception.action;
|
|
||||||
|
|
||||||
import pm.exception.ActionException;
|
|
||||||
|
|
||||||
public class UnknownTargetException extends ActionException {
|
|
||||||
protected static final long serialVersionUID = 1L;
|
|
||||||
}
|
|
||||||
@@ -5,8 +5,7 @@ import java.util.HashMap;
|
|||||||
|
|
||||||
import pm.Macro;
|
import pm.Macro;
|
||||||
import pm.Task;
|
import pm.Task;
|
||||||
import pm.exception.MacroException;
|
import pm.task.TaskGatherer;
|
||||||
import pm.task.TaskProvider;
|
|
||||||
|
|
||||||
public class MacroListener {
|
public class MacroListener {
|
||||||
public ArrayList<Macro> macroList;
|
public ArrayList<Macro> macroList;
|
||||||
@@ -24,10 +23,6 @@ public class MacroListener {
|
|||||||
taskMap.put(macro, task);
|
taskMap.put(macro, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(Event event, Task task) throws MacroException {
|
|
||||||
add(new Macro(event), task);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(Event event) {
|
public void add(Event event) {
|
||||||
for (Macro macro : macroList) {
|
for (Macro macro : macroList) {
|
||||||
activeList.add(new Active(macro));
|
activeList.add(new Active(macro));
|
||||||
@@ -36,7 +31,8 @@ public class MacroListener {
|
|||||||
for (Active active : activeList) {
|
for (Active active : activeList) {
|
||||||
if (active.next(event)) {
|
if (active.next(event)) {
|
||||||
if (active.last()) {
|
if (active.last()) {
|
||||||
TaskProvider.add(taskMap.get(active.getMacro()));
|
Task task = taskMap.get(active.getMacro());
|
||||||
|
TaskGatherer.add(task);
|
||||||
removeList.add(active);
|
removeList.add(active);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
36
java/src/pm/task/Continuous.java
Normal file
36
java/src/pm/task/Continuous.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package pm.task;
|
||||||
|
|
||||||
|
import pm.Action;
|
||||||
|
import pm.Target;
|
||||||
|
import pm.Task;
|
||||||
|
|
||||||
|
public class Continuous extends Task {
|
||||||
|
protected int sleep;
|
||||||
|
protected boolean stop;
|
||||||
|
|
||||||
|
public Continuous(Action action, Target target, int sleep) {
|
||||||
|
super(action, target);
|
||||||
|
this.sleep = sleep;
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Continuous(Action action, Target target) {
|
||||||
|
this(action, target, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stop() {
|
||||||
|
stop = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reset() {
|
||||||
|
stop = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSleep() {
|
||||||
|
return sleep;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getStop() {
|
||||||
|
return stop;
|
||||||
|
}
|
||||||
|
}
|
||||||
16
java/src/pm/task/Stopper.java
Normal file
16
java/src/pm/task/Stopper.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package pm.task;
|
||||||
|
|
||||||
|
import pm.Task;
|
||||||
|
|
||||||
|
public class Stopper extends Task {
|
||||||
|
protected Continuous continuous;
|
||||||
|
|
||||||
|
public Stopper(Continuous continuous) {
|
||||||
|
super(null, null);
|
||||||
|
this.continuous = continuous;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stop() {
|
||||||
|
continuous.stop(); // Todo: check if the task is really started?
|
||||||
|
}
|
||||||
|
}
|
||||||
22
java/src/pm/task/TaskGatherer.java
Normal file
22
java/src/pm/task/TaskGatherer.java
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
package pm.task;
|
||||||
|
|
||||||
|
import java.util.Queue;
|
||||||
|
|
||||||
|
import pm.Task;
|
||||||
|
|
||||||
|
public class TaskGatherer {
|
||||||
|
protected static Queue<Task> taskQueue;
|
||||||
|
|
||||||
|
public static void initialise(Queue<Task> taskQueue) {
|
||||||
|
TaskGatherer.taskQueue = taskQueue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void add(Task task) {
|
||||||
|
if (task instanceof Stopper) {
|
||||||
|
Stopper stopper = (Stopper) task;
|
||||||
|
stopper.stop();
|
||||||
|
} else {
|
||||||
|
taskQueue.add(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -13,8 +13,7 @@ public abstract class TaskListener implements Runnable {
|
|||||||
|
|
||||||
public TaskListener() {
|
public TaskListener() {
|
||||||
taskQueue = new ConcurrentLinkedQueue<Task>();
|
taskQueue = new ConcurrentLinkedQueue<Task>();
|
||||||
TaskProvider.initialise(taskQueue);
|
run = false;
|
||||||
run = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
@@ -22,6 +21,7 @@ public abstract class TaskListener implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
run = true;
|
||||||
while (run) {
|
while (run) {
|
||||||
if (taskQueue.isEmpty()) {
|
if (taskQueue.isEmpty()) {
|
||||||
sleep(SLEEP);
|
sleep(SLEEP);
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
package pm.task;
|
|
||||||
|
|
||||||
import java.util.Queue;
|
|
||||||
|
|
||||||
import pm.Task;
|
|
||||||
|
|
||||||
public class TaskProvider {
|
|
||||||
protected static Queue<Task> taskQueue;
|
|
||||||
|
|
||||||
public static void initialise(Queue<Task> taskQueue) {
|
|
||||||
TaskProvider.taskQueue = taskQueue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void add(Task task) {
|
|
||||||
taskQueue.add(task);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user