From b743d69c3ffe69cc77f044a59faa4503fc30ed3f Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Fri, 18 Feb 2011 12:07:47 +0000 Subject: [PATCH] Wijzingen aangebracht in de ApplicationCycle structuur enz. --- java/src/pm/Application.java | 25 +++------ java/src/pm/Device.java | 13 +++-- java/src/pm/Main.java | 42 ++++----------- java/src/pm/Target.java | 2 +- java/src/pm/application/ApplicationCycle.java | 8 +++ .../javainput/extreme3d/Extreme3DDevice.java | 5 +- java/src/pm/task/TaskGatherer.java | 52 ++++++++++++++++--- java/src/pm/task/TaskListener.java | 20 ++++++- 8 files changed, 103 insertions(+), 64 deletions(-) create mode 100644 java/src/pm/application/ApplicationCycle.java diff --git a/java/src/pm/Application.java b/java/src/pm/Application.java index 7d7f604..24f956f 100644 --- a/java/src/pm/Application.java +++ b/java/src/pm/Application.java @@ -2,10 +2,16 @@ package pm; import pm.exception.application.ApplicationExitException; import pm.exception.application.ApplicationInitialiseException; -import pm.task.Continuous; +import pm.task.TaskGatherer; import pm.task.TaskListener; public abstract class Application extends TaskListener { + + public Application() { + super(); + TaskGatherer.add(this); + } + public void run() { try { initialise(); @@ -20,21 +26,4 @@ public abstract class Application extends TaskListener { public void exit() throws ApplicationExitException { stop(); } - - protected void task(Task task) { - Action action = task.getAction(); - if (task instanceof Continuous) { - Continuous continuous = (Continuous) task; - do { - action(action); - continuous.nextIteration(); - sleep(continuous.getSleep()); - } while (run && !continuous.getStop()); - continuous.reset(); - } else { - action(action); - } - } - - protected abstract void action(Action action); } \ No newline at end of file diff --git a/java/src/pm/Device.java b/java/src/pm/Device.java index 36f0cc5..58ed036 100644 --- a/java/src/pm/Device.java +++ b/java/src/pm/Device.java @@ -1,5 +1,6 @@ package pm; +import pm.exception.application.ApplicationExitException; import pm.exception.device.DeviceExitException; import pm.exception.device.DeviceInitialiseException; import pm.macro.Event; @@ -10,12 +11,16 @@ 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 { +public abstract class Device extends TaskListener { protected SequenceListener sequenceListener; public Device() { + super(); sequenceListener = new SequenceListener(); + TaskGatherer.add(this); } /* Register macro's */ @@ -72,6 +77,8 @@ public abstract class Device { /* Device default methods */ public void initialise() throws DeviceInitialiseException {} - public void exit() throws DeviceExitException {} - public void action(Action action) {} + + public void exit() throws DeviceExitException { + stop(); + } } diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 6287f8d..06b70c9 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -2,12 +2,15 @@ package pm; import java.util.ArrayList; +import pm.application.ApplicationCycle; import pm.application.Winamp.WinampApplication; import pm.application.example.ExampleApplication; import pm.application.iTunes.iTunesApplication; import pm.device.gui.GUIDevice; import pm.device.javainput.rumblepad.RumblepadDevice; import pm.device.jintellitype.JIntellitypeDevice; +import pm.device.lantextinput.LanTextDevice; +import pm.device.textinput.TextDevice; import pm.device.wiimote.WiimoteDevice; import pm.exception.application.ApplicationExitException; import pm.exception.device.DeviceExitException; @@ -18,9 +21,9 @@ import pm.util.ArrayCycle; public class Main extends TaskListener { //protected String[] deviceClassArray; - protected ArrayCycle applicationCycle; + protected ApplicationCycle applicationCycle; protected ArrayList deviceList; - + public Main() { super(); /*deviceClassArray = new String[] { @@ -28,16 +31,19 @@ public class Main extends TaskListener { "pm.device.javainput.rumblepad.RumblepadDevice", "pm.device.javainput.extreme3d.Extreme3DDevice", "pm.device.wiimote.WiimoteDevice"};*/ - applicationCycle = new ArrayCycle(); + applicationCycle = new ApplicationCycle(); deviceList = new ArrayList(); - TaskGatherer.initialise(taskQueue); + TaskGatherer.initialise(applicationCycle); + TaskGatherer.add(this); } public void initialise() throws DeviceInitialiseException { add(new JIntellitypeDevice()); //add(new RumblepadDevice()); - add(new WiimoteDevice()); + //add(new WiimoteDevice()); //add(new GUIDevice()); + //add(new TextDevice()); + //add(new LanTextDevice()); for (Device device : deviceList) { try { device.initialise(); @@ -90,32 +96,6 @@ public class Main extends TaskListener { break; } } - - protected void task(Task task) { - Action action = task.getAction(); - Target target = task.getTarget(); - System.out.println("Action: " + action + " Target: " + target); - try { - switch (target) { - case MAIN: - action(action); - break; - case DEVICE: - for (Device device : deviceList) { - device.action(action); - } - break; - case APPLICATION: - applicationCycle.current().add(task); - break; - } - } catch (Exception e) { - System.out.println("Action exception:"); - e.printStackTrace(); - } - - } - /*protected void addDevices() throws DeviceInitialiseException { for (String deviceClass : deviceClassArray) { try { diff --git a/java/src/pm/Target.java b/java/src/pm/Target.java index 8083b88..ee21785 100644 --- a/java/src/pm/Target.java +++ b/java/src/pm/Target.java @@ -1,5 +1,5 @@ package pm; public enum Target { - MAIN, DEVICE, APPLICATION; + ALL, MAIN, DEVICES, APPLICATIONS, APPLICATION; } \ No newline at end of file diff --git a/java/src/pm/application/ApplicationCycle.java b/java/src/pm/application/ApplicationCycle.java new file mode 100644 index 0000000..dd3bd3d --- /dev/null +++ b/java/src/pm/application/ApplicationCycle.java @@ -0,0 +1,8 @@ +package pm.application; + +import pm.Application; +import pm.util.ArrayCycle; + +public class ApplicationCycle extends ArrayCycle { + protected static final long serialVersionUID = 1L; +} diff --git a/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java b/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java index 2d88830..2b92e17 100644 --- a/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java +++ b/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java @@ -4,6 +4,7 @@ import pm.Action; import pm.Button; import pm.Macro; import pm.Target; +import pm.Task; import pm.device.javainput.DirectionButton; import pm.device.javainput.JavaInputDevice; import pm.exception.MacroException; @@ -24,14 +25,14 @@ public class Extreme3DDevice extends JavaInputDevice { try { add( new Press(Extreme3DButton.TWELVE), - Action.TEST.setTarget(Target.APPLICATION)); + new Task(Action.TEST, Target.APPLICATION)); add( new Macro( new Hold(Extreme3DButton.ONE), new Press(Extreme3DButton.TWO), new Press(Extreme3DButton.ELEVEN), new Release(Extreme3DButton.ONE)), - Action.EXIT.setTarget(Target.MAIN)); + new Task(Action.EXIT, Target.MAIN)); } catch (MacroException e) { e.printStackTrace(); } diff --git a/java/src/pm/task/TaskGatherer.java b/java/src/pm/task/TaskGatherer.java index f8ef169..ed23fd7 100644 --- a/java/src/pm/task/TaskGatherer.java +++ b/java/src/pm/task/TaskGatherer.java @@ -1,23 +1,61 @@ package pm.task; -import java.util.Queue; +import java.util.ArrayList; +import pm.Application; import pm.Device; +import pm.Main; +import pm.Target; import pm.Task; +import pm.application.ApplicationCycle; public class TaskGatherer { - protected static Queue taskQueue; - - public static void initialise(Queue taskQueue) { - TaskGatherer.taskQueue = taskQueue; + protected static ArrayList taskListenerList; + protected static ApplicationCycle applicationCycle; + + public static void initialise(ApplicationCycle applicationCycle) { + taskListenerList = new ArrayList(); + TaskGatherer.applicationCycle = applicationCycle; } + public static void add(Application application) { + add(application); + applicationCycle.add(application); + } + + public static void add(TaskListener taskListner) { + taskListenerList.add(taskListner); + } + public static void add(Task task) { if (task instanceof Stopper) { Stopper stopper = (Stopper) task; stopper.stop(); } else { - taskQueue.add(task); + Target target = task.getTarget(); + for (TaskListener taskListener : taskListenerList) { + switch (target) { + case ALL: + taskListener.add(task); + case MAIN: + if (taskListener instanceof Main) { + taskListener.add(task); + } + break; + case DEVICES: + if (taskListener instanceof Device) { + taskListener.add(task); + } + break; + case APPLICATIONS: + if (taskListener instanceof Application) { + taskListener.add(task); + } + break; + case APPLICATION: + applicationCycle.current().add(task); + } + } } } -} +} \ No newline at end of file diff --git a/java/src/pm/task/TaskListener.java b/java/src/pm/task/TaskListener.java index a5f7ec7..6ef03c9 100644 --- a/java/src/pm/task/TaskListener.java +++ b/java/src/pm/task/TaskListener.java @@ -3,6 +3,7 @@ package pm.task; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; +import pm.Action; import pm.Task; public abstract class TaskListener implements Runnable { @@ -47,5 +48,20 @@ public abstract class TaskListener implements Runnable { } catch (InterruptedException e) {} } - abstract protected void task(Task task); -} + protected void task(Task task) { + Action action = task.getAction(); + if (task instanceof Continuous) { + Continuous continuous = (Continuous) task; + do { + action(action); + continuous.nextIteration(); + sleep(continuous.getSleep()); + } while (run && !continuous.getStop()); + continuous.reset(); + } else { + action(action); + } + } + + protected void action(Action action) {} +} \ No newline at end of file