Action en Target systeem omgepast naar rudimentair Task systeem om Continuous Tasks straks mogelijk te maken. Momenteel zijn de aanpassingen alleen doorgevoerd in de JIntellitypeDevice en ExampleApplication.

This commit is contained in:
2011-02-12 16:30:17 +00:00
parent 24cedc16a6
commit 6550062bc1
17 changed files with 118 additions and 112 deletions

View File

@@ -1,7 +1,5 @@
package pm;
import pm.exception.action.TargetNotSetException;
public enum Action {
START ("start"),
TEST ("test"),
@@ -15,25 +13,11 @@ public enum Action {
REWIND ("rewind"),
MUTE ("mute"),
VOLUME_UP ("volumeUp"),
VOLUME_DOWN ("volumeDown");
protected String action;
protected Target target;
VOLUME_DOWN ("volumeDown");
Action(String action) {
protected String action;
private Action(String action) {
this.action = action;
}
public Action setTarget(Target target) {
this.target = target;
return this;
}
public Target getTarget() throws TargetNotSetException {
if (target == null) {
throw new TargetNotSetException();
}
return target;
}
}

View File

@@ -1,10 +1,10 @@
package pm;
import pm.action.ActionListener;
import pm.exception.application.ApplicationExitException;
import pm.exception.application.ApplicationInitialiseException;
import pm.task.TaskListener;
public abstract class Application extends ActionListener {
public abstract class Application extends TaskListener {
public void run() {
try {
initialise();
@@ -19,4 +19,10 @@ public abstract class Application extends ActionListener {
public void exit() throws ApplicationExitException {
stop();
}
protected void task(Task task) {
action(task.getAction());
}
protected abstract void action(Action action);
}

View File

@@ -1,13 +1,11 @@
package pm.device;
package pm;
import pm.Action;
import pm.Macro;
import pm.action.ActionProvider;
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;
public abstract class Device {
protected MacroListener macroListener;
@@ -16,20 +14,20 @@ public abstract class Device {
macroListener = new MacroListener();
}
public void add(Macro macro, Action action) {
macroListener.add(macro, action);
public void add(Macro macro, Task task) {
macroListener.add(macro, task);
}
public void add(Event event, Action action) throws MacroException {
macroListener.add(event, action);
public void add(Event event, Task task) throws MacroException {
macroListener.add(event, task);
}
public void add(Event event) {
macroListener.add(event);
}
public void add(Action action) {
ActionProvider.add(action);
public void add(Task task) {
TaskProvider.add(task);
}
public void initialise() throws DeviceInitialiseException {}

View File

@@ -2,20 +2,19 @@ package pm;
import java.util.ArrayList;
import pm.action.ActionListener;
import pm.action.ActionProvider;
import pm.application.Winamp.WinampApplication;
import pm.application.example.ExampleApplication;
import pm.application.iTunes.iTunesApplication;
import pm.device.Device;
import pm.device.gui.GUIDevice;
import pm.device.jintellitype.JIntellitypeDevice;
import pm.exception.action.TargetNotSetException;
import pm.exception.application.ApplicationExitException;
import pm.exception.device.DeviceExitException;
import pm.exception.device.DeviceInitialiseException;
import pm.task.TaskListener;
import pm.util.ArrayCycle;
public class Main extends ActionListener {
public class Main extends TaskListener {
//protected String[] deviceClassArray;
protected ArrayCycle<Application> applicationCycle;
protected ArrayList<Device> deviceList;
@@ -29,20 +28,19 @@ public class Main extends ActionListener {
"pm.device.wiimote.WiimoteDevice"};*/
applicationCycle = new ArrayCycle<Application>();
deviceList = new ArrayList<Device>();
ActionProvider.initialise(actionQueue);
}
public void initialise() throws DeviceInitialiseException {
add(new JIntellitypeDevice());
//add(new RumblepadDevice());
add(new GUIDevice());
//add(new GUIDevice());
for (Device device : deviceList) {
device.initialise();
}
//add(new ExampleApplication());
add(new ExampleApplication());
//add(new WinampApplication());
add(new iTunesApplication());
//add(new iTunesApplication());
//applicationCycle.next();
for (Application application : applicationCycle) {
application.start();
@@ -66,25 +64,29 @@ public class Main extends ActionListener {
}
protected void action(Action action) {
try {
System.out.println("Action: " + action + " Target: " + action.getTarget());
switch (action.getTarget()) {
case MAIN:
switch (action) {
case EXIT:
exit();
break;
default:
break;
}
break;
case APPLICATION:
applicationCycle.current().add(action);
break;
default:
//throw new UnknownTargetException();
}
} catch (TargetNotSetException e) {}
System.out.println("Main: " + action);
switch (action) {
case EXIT:
exit();
break;
default:
break;
}
}
protected void task(Task task) {
Action action = task.getAction();
Target target = task.getTarget();
System.out.println("Action: " + action + " Target: " + target);
switch (target) {
case MAIN:
action(action);
break;
case APPLICATION:
applicationCycle.current().add(task);
break;
}
}
/*protected void addDevices() throws DeviceInitialiseException {

19
java/src/pm/Task.java Normal file
View File

@@ -0,0 +1,19 @@
package pm;
public class Task {
Action action;
Target target;
public Task(Action action, Target target) {
this.action = action;
this.target = target;
}
public Action getAction() {
return action;
}
public Target getTarget() {
return target;
}
}

View File

@@ -1,17 +0,0 @@
package pm.action;
import java.util.Queue;
import pm.Action;
public class ActionProvider {
protected static Queue<Action> actionQueue;
public static void initialise(Queue<Action> actionQueue) {
ActionProvider.actionQueue = actionQueue;
}
public static void add(Action action) {
actionQueue.add(action);
}
}

View File

@@ -6,10 +6,5 @@ import pm.Application;
public class ExampleApplication extends Application {
protected void action(Action action) {
System.out.println("ExampleApplication: " + action);
switch (action) {
case TEST:
System.out.println("test");
break;
}
}
}

View File

@@ -1,8 +1,8 @@
package pm.device.example;
import pm.Action;
import pm.Device;
import pm.Target;
import pm.device.Device;
public class ExampleDevice extends Device {
public void initialise() {

View File

@@ -1,6 +1,6 @@
package pm.device.gui;
import pm.device.Device;
import pm.Device;
public class GUIDevice extends Device {

View File

@@ -7,7 +7,7 @@ import javax.swing.JButton;
import javax.swing.JFrame;
import pm.Action;
import pm.Target;
import pm.action.ActionProvider;
import pm.task.ActionProvider;
import layout.TableLayout;
import layout.TableLayoutConstraints;

View File

@@ -7,7 +7,7 @@ import de.hardcode.jxinput.event.JXInputButtonEvent;
import de.hardcode.jxinput.event.JXInputDirectionalEvent;
import pm.Button;
import pm.device.Device;
import pm.Device;
import pm.exception.EventException;
import pm.exception.device.DeviceInitialiseException;
import pm.exception.device.DeviceNotFoundException;

View File

@@ -7,8 +7,9 @@ import com.melloware.jintellitype.IntellitypeListener;
import com.melloware.jintellitype.JIntellitype;
import pm.Action;
import pm.Device;
import pm.Target;
import pm.device.Device;
import pm.Task;
import pm.exception.EventException;
import pm.exception.MacroException;
import pm.exception.device.DeviceInitialiseException;
@@ -31,10 +32,10 @@ public class JIntellitypeDevice extends Device implements HotkeyListener, Intell
try {
add(
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 'x'),
Action.EXIT.setTarget(Target.MAIN));
new Task(Action.EXIT, Target.MAIN));
add(
new Press(CommandButton.VOLUME_UP),
Action.EXIT.setTarget(Target.MAIN));
new Hotkey(HotkeyButton.CTRL | HotkeyButton.WIN, 't'),
new Task(Action.TEST, Target.MAIN));
} catch (MacroException e) {
e.printStackTrace();
}

View File

@@ -2,7 +2,7 @@ package pm.device.textinput;
import java.util.Scanner;
import pm.device.Device;
import pm.Device;
public class TextinputDevice extends Device {
static final int SLEEP = 50;

View File

@@ -1,8 +1,8 @@
package pm.device.wiimote;
import pm.Action;
import pm.Device;
import pm.Target;
import pm.device.Device;
import pm.exception.MacroException;
import pm.exception.device.DeviceInitialiseException;
import pm.macro.event.Press;

View File

@@ -3,29 +3,29 @@ package pm.macro;
import java.util.ArrayList;
import java.util.HashMap;
import pm.Action;
import pm.Macro;
import pm.action.ActionProvider;
import pm.Task;
import pm.exception.MacroException;
import pm.task.TaskProvider;
public class MacroListener {
public ArrayList<Macro> macroList;
public HashMap<Macro, Action> actionMap;
public HashMap<Macro, Task> taskMap;
public ArrayList<Active> activeList;
public MacroListener() {
macroList = new ArrayList<Macro>();
actionMap = new HashMap<Macro, Action>();
taskMap = new HashMap<Macro, Task>();
activeList = new ArrayList<Active>();
}
public void add(Macro macro, Action action) {
public void add(Macro macro, Task task) {
macroList.add(macro);
actionMap.put(macro, action);
taskMap.put(macro, task);
}
public void add(Event event, Action action) throws MacroException {
add(new Macro(event), action);
public void add(Event event, Task task) throws MacroException {
add(new Macro(event), task);
}
public void add(Event event) {
@@ -36,7 +36,7 @@ public class MacroListener {
for (Active active : activeList) {
if (active.next(event)) {
if (active.last()) {
ActionProvider.add(actionMap.get(active.getMacro()));
TaskProvider.add(taskMap.get(active.getMacro()));
removeList.add(active);
}
} else {

View File

@@ -1,18 +1,19 @@
package pm.action;
package pm.task;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import pm.Action;
import pm.Task;
public abstract class ActionListener implements Runnable {
public abstract class TaskListener implements Runnable {
protected static final int SLEEP = 100;
protected Queue<Action> actionQueue;
protected Queue<Task> taskQueue;
protected boolean run;
public ActionListener() {
actionQueue = new ConcurrentLinkedQueue<Action>();
public TaskListener() {
taskQueue = new ConcurrentLinkedQueue<Task>();
TaskProvider.initialise(taskQueue);
run = true;
}
@@ -22,10 +23,10 @@ public abstract class ActionListener implements Runnable {
public void run() {
while (run) {
if (actionQueue.isEmpty()) {
if (taskQueue.isEmpty()) {
sleep(SLEEP);
} else {
action(actionQueue.poll());
task(taskQueue.poll());
}
}
}
@@ -34,8 +35,8 @@ public abstract class ActionListener implements Runnable {
run = false;
}
public void add(Action action) {
actionQueue.add(action);
public void add(Task task) {
taskQueue.add(task);
}
protected void sleep(int time) {
@@ -44,5 +45,5 @@ public abstract class ActionListener implements Runnable {
} catch (InterruptedException e) {}
}
abstract protected void action(Action action);
abstract protected void task(Task task);
}

View File

@@ -0,0 +1,17 @@
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);
}
}