diff --git a/java/src/pm/Application.java b/java/src/pm/Application.java index 467bbf4..7d7f604 100644 --- a/java/src/pm/Application.java +++ b/java/src/pm/Application.java @@ -11,7 +11,7 @@ public abstract class Application extends TaskListener { initialise(); super.run(); } catch (ApplicationInitialiseException e) { - e.printStackTrace(); + e.printStackTrace(); // Todo: dit "over" de thread heengooien / loggen? } } @@ -25,10 +25,10 @@ public abstract class Application extends TaskListener { Action action = task.getAction(); if (task instanceof Continuous) { Continuous continuous = (Continuous) task; - int sleep = continuous.getSleep(); do { action(action); - sleep(sleep); + continuous.nextIteration(); + sleep(continuous.getSleep()); } while (run && !continuous.getStop()); continuous.reset(); } else { diff --git a/java/src/pm/Device.java b/java/src/pm/Device.java index d2dcebb..0c84f5a 100644 --- a/java/src/pm/Device.java +++ b/java/src/pm/Device.java @@ -3,32 +3,37 @@ package pm; import pm.exception.device.DeviceExitException; import pm.exception.device.DeviceInitialiseException; import pm.macro.Event; -import pm.macro.MacroListener; import pm.macro.event.Hold; import pm.macro.event.Press; import pm.macro.event.Release; +import pm.macro.event.Sequence; +import pm.macro.event.SequenceListener; import pm.task.Continuous; import pm.task.Stopper; public abstract class Device { - protected MacroListener macroListener; + protected SequenceListener sequenceListener; public Device() { - macroListener = new MacroListener(); + sequenceListener = new SequenceListener(); } /* Register macro's */ - protected void add(Macro macro, Task task) { - macroListener.add(macro, task); + protected void add(Sequence sequence, Task task) { + sequenceListener.add(sequence, task); + } + + protected void add(Press press, Task task) { + add(new Macro(press), task); } protected void add(Event event, Task task) { - add(new Macro(event), task); + add(new Sequence(event), task); } - protected void add(Macro startMacro, Macro stopMacro, Continuous continuous) { - add(startMacro, continuous); - add(stopMacro, new Stopper(continuous)); + protected void add(Sequence startSequence, Sequence stopSequence, Continuous continuous) { + add(startSequence, continuous); + add(stopSequence, new Stopper(continuous)); } protected void add(Event startEvent, Event stopEvent, Continuous continuous) { @@ -36,6 +41,11 @@ public abstract class Device { add(stopEvent, new Stopper(continuous)); } + protected void add(Press startPress, Press stopPress, Continuous continuous) { + add(new Macro(startPress), continuous); + add(new Macro(stopPress), new Stopper(continuous)); + } + protected void add(Hold hold, Continuous continuous) { Button button = hold.getButton(); add(new Press(button), new Release(button), continuous); @@ -43,7 +53,7 @@ public abstract class Device { /* Recognize events */ protected void add(Event event) { - macroListener.add(event); + sequenceListener.add(event); } /* Device default methods */ diff --git a/java/src/pm/Macro.java b/java/src/pm/Macro.java index 9b79d7e..b4e5e06 100644 --- a/java/src/pm/Macro.java +++ b/java/src/pm/Macro.java @@ -5,15 +5,15 @@ import java.util.ArrayList; import pm.exception.MacroException; import pm.exception.macro.MacroEventOrderException; import pm.macro.Event; +import pm.macro.event.Sequence; import pm.macro.event.Hold; import pm.macro.event.Press; import pm.macro.event.Release; -public class Macro { - protected Event[] eventArray; - - public Macro(Event event) { - eventArray = new Event[]{event}; +public class Macro extends Sequence { + public Macro(Press press) { + Button button = press.getButton(); + this.eventArray = new Event[] {press, new Release(button)}; } public Macro(Event... eventArray) throws MacroException { @@ -44,14 +44,6 @@ public class Macro { if (!holdList.isEmpty()) { throw new MacroEventOrderException("One or more buttons are not released."); } - this.eventArray = (Event[]) eventList.toArray(new Event[0]); - } - - public int count() { - return eventArray.length; - } - - public Event get(int i) { - return eventArray[i]; + eventArray = (Event[]) eventList.toArray(new Event[0]); } } \ No newline at end of file diff --git a/java/src/pm/application/iTunes/iTunesApplication.java b/java/src/pm/application/iTunes/iTunesApplication.java index f8ff59f..db44aa1 100644 --- a/java/src/pm/application/iTunes/iTunesApplication.java +++ b/java/src/pm/application/iTunes/iTunesApplication.java @@ -10,7 +10,7 @@ import com.dt.iTunesController.iTunes; import com.dt.iTunesController.iTunesEventsInterface; public class iTunesApplication extends Application implements iTunesEventsInterface { - protected static final int POSTION_CHANGE_RATE = 5; + protected static final int POSTION_CHANGE_RATE = 1; protected static final int VOLUME_CHANGE_RATE = 5; protected static final int SEEK_TIME = 1000; diff --git a/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java b/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java index 1a08e42..3ef232e 100644 --- a/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java +++ b/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java @@ -37,10 +37,12 @@ public class RumblepadDevice extends JavaInputDevice { new Task(Action.PREVIOUS, Target.APPLICATION)); add( new Hold(RumblepadButton.FIVE), - new Continuous(Action.FORWARD, Target.APPLICATION, 300)); + new Continuous(Action.FORWARD, Target.APPLICATION, 200){ + public int getSleep() {return sleep - 30 * iteration;}}); add( new Hold(RumblepadButton.SEVEN), - new Continuous(Action.REWIND, Target.APPLICATION, 300)); + new Continuous(Action.REWIND, Target.APPLICATION, 200){ + public int getSleep() {return sleep - 30 * iteration;}}); add( new Hold(RumblepadButton.NINE), new Continuous(Action.VOLUME_DOWN, Target.APPLICATION, 100)); diff --git a/java/src/pm/macro/Active.java b/java/src/pm/macro/Active.java index f618048..96a203d 100644 --- a/java/src/pm/macro/Active.java +++ b/java/src/pm/macro/Active.java @@ -1,26 +1,26 @@ package pm.macro; -import pm.Macro; +import pm.macro.event.Sequence; public class Active { - protected Macro macro; + protected Sequence sequence; protected int step; - public Active(Macro macro) { - this.macro = macro; + public Active(Sequence sequence) { + this.sequence = sequence; step = -1; } - public Macro getMacro() { - return macro; + public Sequence getSequence() { + return sequence; } public boolean next(Event event) { - Event next = macro.get(++step); + Event next = sequence.get(++step); return next == null ? false : event.equals(next); } public boolean last() { - return step == macro.count() - 1; + return step == sequence.count() - 1; } } diff --git a/java/src/pm/macro/event/Sequence.java b/java/src/pm/macro/event/Sequence.java new file mode 100644 index 0000000..aec8a86 --- /dev/null +++ b/java/src/pm/macro/event/Sequence.java @@ -0,0 +1,20 @@ +package pm.macro.event; + +import pm.macro.Event; + + +public class Sequence { + protected Event[] eventArray; + + public Sequence(Event... eventArray) { + this.eventArray = eventArray; + } + + public int count() { + return eventArray.length; + } + + public Event get(int i) { + return eventArray.length > 0 ? eventArray[i] : null; + } +} diff --git a/java/src/pm/macro/MacroListener.java b/java/src/pm/macro/event/SequenceListener.java similarity index 52% rename from java/src/pm/macro/MacroListener.java rename to java/src/pm/macro/event/SequenceListener.java index ecc6acc..b3dd449 100644 --- a/java/src/pm/macro/MacroListener.java +++ b/java/src/pm/macro/event/SequenceListener.java @@ -1,37 +1,38 @@ -package pm.macro; +package pm.macro.event; import java.util.ArrayList; import java.util.HashMap; -import pm.Macro; import pm.Task; +import pm.macro.Active; +import pm.macro.Event; import pm.task.TaskGatherer; -public class MacroListener { - public ArrayList macroList; - public HashMap taskMap; +public class SequenceListener { + public ArrayList sequenceList; + public HashMap taskMap; public ArrayList activeList; - public MacroListener() { - macroList = new ArrayList(); - taskMap = new HashMap(); + public SequenceListener() { + sequenceList = new ArrayList(); + taskMap = new HashMap(); activeList = new ArrayList(); } - public void add(Macro macro, Task task) { - macroList.add(macro); - taskMap.put(macro, task); + public void add(Sequence sequence, Task task) { + sequenceList.add(sequence); + taskMap.put(sequence, task); } public void add(Event event) { - for (Macro macro : macroList) { - activeList.add(new Active(macro)); + for (Sequence sequence : sequenceList) { + activeList.add(new Active(sequence)); } ArrayList removeList = new ArrayList(); for (Active active : activeList) { if (active.next(event)) { if (active.last()) { - Task task = taskMap.get(active.getMacro()); + Task task = taskMap.get(active.getSequence()); TaskGatherer.add(task); removeList.add(active); } diff --git a/java/src/pm/task/Continuous.java b/java/src/pm/task/Continuous.java index 1ab641a..8d8d303 100644 --- a/java/src/pm/task/Continuous.java +++ b/java/src/pm/task/Continuous.java @@ -6,6 +6,7 @@ import pm.Task; public class Continuous extends Task { protected int sleep; + protected int iteration; protected boolean stop; public Continuous(Action action, Target target, int sleep) { @@ -18,11 +19,16 @@ public class Continuous extends Task { this(action, target, 0); } + public void nextIteration() { + ++iteration; + } + public void stop() { stop = true; } public void reset() { + iteration = 0; stop = false; } diff --git a/java/src/pm/task/TaskListener.java b/java/src/pm/task/TaskListener.java index fbc9d73..a5f7ec7 100644 --- a/java/src/pm/task/TaskListener.java +++ b/java/src/pm/task/TaskListener.java @@ -41,7 +41,9 @@ public abstract class TaskListener implements Runnable { protected void sleep(int time) { try { - Thread.sleep(time); + if (time > 0) { + Thread.sleep(time); + } } catch (InterruptedException e) {} }