Wijzingen aangebracht in de ApplicationCycle structuur enz.
This commit is contained in:
@@ -2,10 +2,16 @@ 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.TaskGatherer;
|
||||||
import pm.task.TaskListener;
|
import pm.task.TaskListener;
|
||||||
|
|
||||||
public abstract class Application extends TaskListener {
|
public abstract class Application extends TaskListener {
|
||||||
|
|
||||||
|
public Application() {
|
||||||
|
super();
|
||||||
|
TaskGatherer.add(this);
|
||||||
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
initialise();
|
initialise();
|
||||||
@@ -20,21 +26,4 @@ public abstract class Application extends TaskListener {
|
|||||||
public void exit() throws ApplicationExitException {
|
public void exit() throws ApplicationExitException {
|
||||||
stop();
|
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);
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package pm;
|
package pm;
|
||||||
|
|
||||||
|
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.macro.Event;
|
import pm.macro.Event;
|
||||||
@@ -10,12 +11,16 @@ import pm.macro.event.Sequence;
|
|||||||
import pm.macro.event.SequenceListener;
|
import pm.macro.event.SequenceListener;
|
||||||
import pm.task.Continuous;
|
import pm.task.Continuous;
|
||||||
import pm.task.Stopper;
|
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;
|
protected SequenceListener sequenceListener;
|
||||||
|
|
||||||
public Device() {
|
public Device() {
|
||||||
|
super();
|
||||||
sequenceListener = new SequenceListener();
|
sequenceListener = new SequenceListener();
|
||||||
|
TaskGatherer.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Register macro's */
|
/* Register macro's */
|
||||||
@@ -72,6 +77,8 @@ public abstract class Device {
|
|||||||
|
|
||||||
/* Device default methods */
|
/* Device default methods */
|
||||||
public void initialise() throws DeviceInitialiseException {}
|
public void initialise() throws DeviceInitialiseException {}
|
||||||
public void exit() throws DeviceExitException {}
|
|
||||||
public void action(Action action) {}
|
public void exit() throws DeviceExitException {
|
||||||
|
stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,15 @@ package pm;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import pm.application.ApplicationCycle;
|
||||||
import pm.application.Winamp.WinampApplication;
|
import pm.application.Winamp.WinampApplication;
|
||||||
import pm.application.example.ExampleApplication;
|
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.javainput.rumblepad.RumblepadDevice;
|
import pm.device.javainput.rumblepad.RumblepadDevice;
|
||||||
import pm.device.jintellitype.JIntellitypeDevice;
|
import pm.device.jintellitype.JIntellitypeDevice;
|
||||||
|
import pm.device.lantextinput.LanTextDevice;
|
||||||
|
import pm.device.textinput.TextDevice;
|
||||||
import pm.device.wiimote.WiimoteDevice;
|
import pm.device.wiimote.WiimoteDevice;
|
||||||
import pm.exception.application.ApplicationExitException;
|
import pm.exception.application.ApplicationExitException;
|
||||||
import pm.exception.device.DeviceExitException;
|
import pm.exception.device.DeviceExitException;
|
||||||
@@ -18,9 +21,9 @@ import pm.util.ArrayCycle;
|
|||||||
|
|
||||||
public class Main extends TaskListener {
|
public class Main extends TaskListener {
|
||||||
//protected String[] deviceClassArray;
|
//protected String[] deviceClassArray;
|
||||||
protected ArrayCycle<Application> applicationCycle;
|
protected ApplicationCycle applicationCycle;
|
||||||
protected ArrayList<Device> deviceList;
|
protected ArrayList<Device> deviceList;
|
||||||
|
|
||||||
public Main() {
|
public Main() {
|
||||||
super();
|
super();
|
||||||
/*deviceClassArray = new String[] {
|
/*deviceClassArray = new String[] {
|
||||||
@@ -28,16 +31,19 @@ public class Main extends TaskListener {
|
|||||||
"pm.device.javainput.rumblepad.RumblepadDevice",
|
"pm.device.javainput.rumblepad.RumblepadDevice",
|
||||||
"pm.device.javainput.extreme3d.Extreme3DDevice",
|
"pm.device.javainput.extreme3d.Extreme3DDevice",
|
||||||
"pm.device.wiimote.WiimoteDevice"};*/
|
"pm.device.wiimote.WiimoteDevice"};*/
|
||||||
applicationCycle = new ArrayCycle<Application>();
|
applicationCycle = new ApplicationCycle();
|
||||||
deviceList = new ArrayList<Device>();
|
deviceList = new ArrayList<Device>();
|
||||||
TaskGatherer.initialise(taskQueue);
|
TaskGatherer.initialise(applicationCycle);
|
||||||
|
TaskGatherer.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initialise() throws DeviceInitialiseException {
|
public void initialise() throws DeviceInitialiseException {
|
||||||
add(new JIntellitypeDevice());
|
add(new JIntellitypeDevice());
|
||||||
//add(new RumblepadDevice());
|
//add(new RumblepadDevice());
|
||||||
add(new WiimoteDevice());
|
//add(new WiimoteDevice());
|
||||||
//add(new GUIDevice());
|
//add(new GUIDevice());
|
||||||
|
//add(new TextDevice());
|
||||||
|
//add(new LanTextDevice());
|
||||||
for (Device device : deviceList) {
|
for (Device device : deviceList) {
|
||||||
try {
|
try {
|
||||||
device.initialise();
|
device.initialise();
|
||||||
@@ -90,32 +96,6 @@ public class Main extends TaskListener {
|
|||||||
break;
|
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 {
|
/*protected void addDevices() throws DeviceInitialiseException {
|
||||||
for (String deviceClass : deviceClassArray) {
|
for (String deviceClass : deviceClassArray) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package pm;
|
package pm;
|
||||||
|
|
||||||
public enum Target {
|
public enum Target {
|
||||||
MAIN, DEVICE, APPLICATION;
|
ALL, MAIN, DEVICES, APPLICATIONS, APPLICATION;
|
||||||
}
|
}
|
||||||
8
java/src/pm/application/ApplicationCycle.java
Normal file
8
java/src/pm/application/ApplicationCycle.java
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package pm.application;
|
||||||
|
|
||||||
|
import pm.Application;
|
||||||
|
import pm.util.ArrayCycle;
|
||||||
|
|
||||||
|
public class ApplicationCycle extends ArrayCycle<Application> {
|
||||||
|
protected static final long serialVersionUID = 1L;
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import pm.Action;
|
|||||||
import pm.Button;
|
import pm.Button;
|
||||||
import pm.Macro;
|
import pm.Macro;
|
||||||
import pm.Target;
|
import pm.Target;
|
||||||
|
import pm.Task;
|
||||||
import pm.device.javainput.DirectionButton;
|
import pm.device.javainput.DirectionButton;
|
||||||
import pm.device.javainput.JavaInputDevice;
|
import pm.device.javainput.JavaInputDevice;
|
||||||
import pm.exception.MacroException;
|
import pm.exception.MacroException;
|
||||||
@@ -24,14 +25,14 @@ public class Extreme3DDevice extends JavaInputDevice {
|
|||||||
try {
|
try {
|
||||||
add(
|
add(
|
||||||
new Press(Extreme3DButton.TWELVE),
|
new Press(Extreme3DButton.TWELVE),
|
||||||
Action.TEST.setTarget(Target.APPLICATION));
|
new Task(Action.TEST, Target.APPLICATION));
|
||||||
add(
|
add(
|
||||||
new Macro(
|
new Macro(
|
||||||
new Hold(Extreme3DButton.ONE),
|
new Hold(Extreme3DButton.ONE),
|
||||||
new Press(Extreme3DButton.TWO),
|
new Press(Extreme3DButton.TWO),
|
||||||
new Press(Extreme3DButton.ELEVEN),
|
new Press(Extreme3DButton.ELEVEN),
|
||||||
new Release(Extreme3DButton.ONE)),
|
new Release(Extreme3DButton.ONE)),
|
||||||
Action.EXIT.setTarget(Target.MAIN));
|
new Task(Action.EXIT, Target.MAIN));
|
||||||
} catch (MacroException e) {
|
} catch (MacroException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,61 @@
|
|||||||
package pm.task;
|
package pm.task;
|
||||||
|
|
||||||
import java.util.Queue;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import pm.Application;
|
||||||
import pm.Device;
|
import pm.Device;
|
||||||
|
import pm.Main;
|
||||||
|
import pm.Target;
|
||||||
import pm.Task;
|
import pm.Task;
|
||||||
|
import pm.application.ApplicationCycle;
|
||||||
|
|
||||||
public class TaskGatherer {
|
public class TaskGatherer {
|
||||||
protected static Queue<Task> taskQueue;
|
protected static ArrayList<TaskListener> taskListenerList;
|
||||||
|
protected static ApplicationCycle applicationCycle;
|
||||||
public static void initialise(Queue<Task> taskQueue) {
|
|
||||||
TaskGatherer.taskQueue = taskQueue;
|
public static void initialise(ApplicationCycle applicationCycle) {
|
||||||
|
taskListenerList = new ArrayList<TaskListener>();
|
||||||
|
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) {
|
public static void add(Task task) {
|
||||||
if (task instanceof Stopper) {
|
if (task instanceof Stopper) {
|
||||||
Stopper stopper = (Stopper) task;
|
Stopper stopper = (Stopper) task;
|
||||||
stopper.stop();
|
stopper.stop();
|
||||||
} else {
|
} 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ package pm.task;
|
|||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
|
|
||||||
|
import pm.Action;
|
||||||
import pm.Task;
|
import pm.Task;
|
||||||
|
|
||||||
public abstract class TaskListener implements Runnable {
|
public abstract class TaskListener implements Runnable {
|
||||||
@@ -47,5 +48,20 @@ public abstract class TaskListener implements Runnable {
|
|||||||
} catch (InterruptedException e) {}
|
} 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) {}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user