Aantal reorganisaties om implementatie van macro's ondubbelzinnig duidelijk te maken.

This commit is contained in:
2011-02-07 18:42:18 +00:00
parent aef86668c6
commit 0e8c212999
24 changed files with 95 additions and 160 deletions

View File

@@ -1,4 +1,4 @@
package pm.device.macro; package pm;
public interface Button { public interface Button {

15
java/src/pm/Macro.java Normal file
View File

@@ -0,0 +1,15 @@
package pm;
import pm.macro.Event;
public class Macro {
protected Event[] eventArray;
public Macro(Event... eventArray) {
this.eventArray = eventArray;
}
public int count() {
return eventArray.length;
}
}

View File

@@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import pm.action.Action; import pm.action.Actions;
import pm.application.Application; import pm.application.Application;
import pm.application.voorbeeld.VoorbeeldApplication; import pm.application.voorbeeld.VoorbeeldApplication;
import pm.device.Device; import pm.device.Device;
@@ -19,7 +19,7 @@ public class Main extends Target {
ArrayList<Application> applicationList; ArrayList<Application> applicationList;
ArrayList<Device> deviceList; ArrayList<Device> deviceList;
Queue<Action> actionQueue; Queue<Actions> actionQueue;
boolean run; boolean run;
Application currentApplication; Application currentApplication;
@@ -28,7 +28,7 @@ public class Main extends Target {
applicationList = new ArrayList<Application>(); applicationList = new ArrayList<Application>();
//applicationList.iterator(); //applicationList.iterator();
deviceList = new ArrayList<Device>(); deviceList = new ArrayList<Device>();
actionQueue = new ConcurrentLinkedQueue<Action>(); actionQueue = new ConcurrentLinkedQueue<Actions>();
//JavaInputService.initialize(); //JavaInputService.initialize();
Device.initialise(actionQueue); Device.initialise(actionQueue);
} }
@@ -74,12 +74,11 @@ public class Main extends Target {
Thread.sleep(SLEEP); Thread.sleep(SLEEP);
} catch (InterruptedException e) {} } catch (InterruptedException e) {}
} else { } else {
Action action = actionQueue.poll(); Actions action = actionQueue.poll();
Target target; Target target;
switch (action.getTarget()) { switch (action.getTarget()) {
case MAIN: case MAIN:
target = this; target = this;
invoke(action);
break; break;
case APPLICATION: case APPLICATION:
target = currentApplication; target = currentApplication;

View File

@@ -2,12 +2,12 @@ package pm;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import pm.action.Action; import pm.action.Actions;
import pm.exception.ActionException; import pm.exception.ActionException;
import pm.exception.action.InvokeActionException; import pm.exception.action.InvokeActionException;
public abstract class Target { public abstract class Target {
public void invoke(Action action) throws ActionException { public void invoke(Actions action) throws ActionException {
try { try {
action.getMethod(this).invoke(this); action.getMethod(this).invoke(this);
return; return;

View File

@@ -2,26 +2,25 @@ package pm.action;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import pm.event.Target;
import pm.exception.action.NotImplementedActionException; import pm.exception.action.NotImplementedActionException;
public enum Action { public enum Actions {
START ("start"), START ("start"),
TEST ("test"), TEST ("test"),
EXIT ("exit"); EXIT ("exit");
protected String action; protected String action;
protected Target target; protected Targets target;
Action(String action) { Actions(String action) {
this.action = action; this.action = action;
} }
public void setTarget(Target target) { public void setTarget(Targets target) {
this.target = target; this.target = target;
} }
public Target getTarget() { public Targets getTarget() {
return target; return target;
} }

View File

@@ -0,0 +1,5 @@
package pm.action;
public enum Targets {
MAIN, DEVICE, APPLICATION;
}

View File

@@ -2,11 +2,11 @@ package pm.device;
import java.util.Queue; import java.util.Queue;
import pm.action.Action; import pm.action.Actions;
import pm.event.Target; import pm.action.Targets;
public abstract class Device { public abstract class Device {
protected static Queue<Action> actionQueue; protected static Queue<Actions> actionQueue;
protected MacroListener macroListener; protected MacroListener macroListener;
public Device() { public Device() {
@@ -14,12 +14,12 @@ public abstract class Device {
macroListener.start(); macroListener.start();
} }
public void addAction(Action action, Target target) { public void addAction(Actions action, Targets target) {
action.setTarget(target); action.setTarget(target);
actionQueue.add(action); actionQueue.add(action);
} }
public static void initialise(Queue<Action> actionQueue) { public static void initialise(Queue<Actions> actionQueue) {
Device.actionQueue = actionQueue; Device.actionQueue = actionQueue;
} }

View File

@@ -1,9 +1,13 @@
package pm.device; package pm.device;
import pm.device.macro.Macro; import pm.Macro;
import pm.action.Actions;
import pm.action.Targets;
public class MacroListener extends Thread { public class MacroListener extends Thread {
/*public void add(Macro macro, Action action, Target target) { public void add(Macro macro, Actions action, Targets target) {
}*/ }
} }

View File

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

View File

@@ -1,7 +1,7 @@
package pm.device.javainput.extreme3d; package pm.device.javainput.extreme3d;
import de.hardcode.jxinput.event.JXInputButtonEvent; import de.hardcode.jxinput.event.JXInputButtonEvent;
import pm.device.macro.Button; import pm.Button;
import pm.exception.event.UnknownButtonException; import pm.exception.event.UnknownButtonException;
public enum Extreme3DButton implements Button { public enum Extreme3DButton implements Button {

View File

@@ -1,11 +1,10 @@
package pm.device.javainput.extreme3d; package pm.device.javainput.extreme3d;
import de.hardcode.jxinput.Button;
import de.hardcode.jxinput.Directional;
import de.hardcode.jxinput.event.JXInputAxisEvent; import de.hardcode.jxinput.event.JXInputAxisEvent;
import de.hardcode.jxinput.event.JXInputButtonEvent; import de.hardcode.jxinput.event.JXInputButtonEvent;
import de.hardcode.jxinput.event.JXInputDirectionalEvent; import de.hardcode.jxinput.event.JXInputDirectionalEvent;
import pm.Macro;
import pm.device.javainput.JavaInputDevice; import pm.device.javainput.JavaInputDevice;
import pm.exception.DeviceException; import pm.exception.DeviceException;
import pm.exception.EventException; import pm.exception.EventException;
@@ -21,13 +20,13 @@ public class Extreme3DDevice extends JavaInputDevice {
public void start() { public void start() {
super.start(); super.start();
/*macroListener.addMacro( macroListener.addMacro(
new Macro( new Macro(
new Hold(Button.A), new Hold(Button.A),
new Press(Button.B), new Press(Button.B),
new Press(Button.TWO), new Press(Button.TWO),
new Release(Button.A)), new Release(Button.A)),
Action.EXIT, Target.APPLICATION));*/ Action.EXIT, Target.APPLICATION));
} }
public void processEvent(JXInputAxisEvent event) { public void processEvent(JXInputAxisEvent event) {

View File

@@ -1,7 +1,7 @@
package pm.device.javainput.extreme3d; package pm.device.javainput.extreme3d;
import de.hardcode.jxinput.event.JXInputDirectionalEvent; import de.hardcode.jxinput.event.JXInputDirectionalEvent;
import pm.device.macro.Button; import pm.Button;
import pm.exception.event.UnknownDirectionException; import pm.exception.event.UnknownDirectionException;
public enum Extreme3DDirection implements Button { public enum Extreme3DDirection implements Button {

View File

@@ -1,5 +0,0 @@
package pm.device.macro;
public interface Action {
public Button button = null;
}

View File

@@ -1,57 +0,0 @@
package pm.device.macro;
import java.util.ArrayList;
import wiitunes.interaction.macro.Action;
import wiitunes.interaction.macro.Button;
import wiitunes.interaction.macro.Buttons;
import wiitunes.interaction.macro.Combination;
import wiitunes.interaction.macro.action.Hold;
import wiitunes.interaction.macro.action.Press;
import wiitunes.interaction.macro.action.Release;
public class Actions {
protected Combination[] combinationArray;
public Actions(Action... actionArray) {
ArrayList<Combination> combinationList = new ArrayList<Combination>();
Buttons heldButtons = new Buttons();
for (Action action : actionArray) {
if (action instanceof Press) {
Button button = ((Press) action).button;
Buttons buttons = new Buttons(button);
combinationList.add(new Combination(buttons, null, heldButtons));
combinationList.add(new Combination(null, buttons, heldButtons));
} else if (action instanceof Release) {
Button button = ((Release) action).button;
Buttons buttons = new Buttons(button);
heldButtons = heldButtons.clone();
heldButtons.remove(button);
combinationList.add(new Combination(null, buttons, heldButtons));
} else if (action instanceof Hold) {
Button button = ((Hold) action).button;
Buttons buttons = new Buttons(button);
combinationList.add(new Combination(buttons, null, heldButtons));
heldButtons = heldButtons.clone();
heldButtons.add(button);
}
}
combinationArray = (Combination[]) combinationList.toArray(new Combination[0]);
}
public Combination get(int step) {
return combinationArray[step];
}
public int count() {
return combinationArray.length;
}
public String toString() {
String string = String.format("Gesture contains %d actions:\n", combinationArray.length);;
for (Combination combination : combinationArray) {
string += String.format("> %s\n", combination);
}
return string;
}
}

View File

@@ -1,5 +0,0 @@
package pm.device.macro;
public class Macro {
}

View File

@@ -1,12 +0,0 @@
package pm.device.macro.action;
import pm.device.macro.Action;
import pm.device.macro.Button;
public class Hold implements Action {
public Button button;
public Hold(Button button) {
this.button = button;
}
}

View File

@@ -1,12 +0,0 @@
package pm.device.macro.action;
import pm.device.macro.Action;
import pm.device.macro.Button;
public class Press implements Action {
public Button button;
public Press(Button button) {
this.button = button;
}
}

View File

@@ -1,12 +0,0 @@
package pm.device.macro.action;
import pm.device.macro.Action;
import pm.device.macro.Button;
public class Release implements Action {
public Button button;
public Release(Button button) {
this.button = button;
}
}

View File

@@ -1,21 +0,0 @@
package pm.event;
import pm.action.Action;
public class Event {
protected Target type;
protected Action action;
public Event(Target type, Action action) {
this.type = type;
this.action = action;
}
public Target getType() {
return type;
}
public Action getAction() {
return action;
}
}

View File

@@ -1,5 +0,0 @@
package pm.event;
public enum Target {
MAIN, DEVICE, APPLICATION;
}

View File

@@ -0,0 +1,7 @@
package pm.macro;
import pm.Button;
public interface Event {
public Button button = null;
}

View File

@@ -0,0 +1,12 @@
package pm.macro.event;
import pm.Button;
import pm.macro.Event;
public class Hold implements Event {
public Button button;
public Hold(Button button) {
this.button = button;
}
}

View File

@@ -0,0 +1,12 @@
package pm.macro.event;
import pm.Button;
import pm.macro.Event;
public class Press implements Event {
public Button button;
public Press(Button button) {
this.button = button;
}
}

View File

@@ -0,0 +1,12 @@
package pm.macro.event;
import pm.Button;
import pm.macro.Event;
public class Release implements Event {
public Button button;
public Release(Button button) {
this.button = button;
}
}