Continuous, Dynamic en Stopper Task-afgeleiden verwijderd. Op weg naar een eenvoudig systeem waarbij een task een start en een stop signaal mee krijgt.

This commit is contained in:
2011-06-04 13:31:49 +00:00
parent 789657518c
commit 3b6c1cf1ee
7 changed files with 7 additions and 137 deletions

View File

@@ -2,16 +2,12 @@ package mimis;
import mimis.event.EventHandler;
import mimis.event.Task;
import mimis.event.task.Continuous;
import mimis.event.task.Stopper;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
import mimis.macro.Sequence;
import mimis.macro.SequenceListener;
import mimis.macro.State;
import mimis.macro.state.Hold;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.manager.Titled;
public abstract class Device extends EventHandler implements Titled, Exitable {
@@ -48,32 +44,6 @@ public abstract class Device extends EventHandler implements Titled, Exitable {
add(press, task, true);
}
protected void add(Hold hold, Task pressTask, Task releaseTask) {
Button button = hold.getButton();
add(new Press(button), pressTask, false);
add(new Release(button), releaseTask);
}
protected void add(Sequence startSequence, Sequence stopSequence, Continuous continuous) {
add(startSequence, continuous);
add(stopSequence, new Stopper(continuous));
}
protected void add(State startEvent, State stopEvent, Continuous continuous) {
add(startEvent, continuous);
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);
}
/* Recognize events */
protected void add(State state) {
log.debug(state.toString() + " " + state.getButton());

View File

@@ -4,15 +4,13 @@ import mimis.Button;
import mimis.device.javainput.DirectionButton;
import mimis.device.javainput.JavaInputDevice;
import mimis.event.Task;
import mimis.event.task.Continuous;
import mimis.event.task.Dynamic;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.button.UnknownDirectionException;
import mimis.exception.worker.ActivateException;
import mimis.macro.state.Hold;
import mimis.macro.state.Press;
import mimis.value.Action;
import mimis.value.Target;
import de.hardcode.jxinput.event.JXInputButtonEvent;
import de.hardcode.jxinput.event.JXInputDirectionalEvent;
@@ -41,7 +39,7 @@ public class RumblepadDevice extends JavaInputDevice {
add(
new Press(RumblepadButton.EIGHT),
new Task(Target.MIMIS, Action.PREVIOUS));
add(
/*add(
new Hold(RumblepadButton.FIVE),
new Dynamic(Action.FORWARD, Target.APPLICATION, 200, -30));
add(
@@ -52,7 +50,7 @@ public class RumblepadDevice extends JavaInputDevice {
new Continuous(Action.VOLUME_DOWN, Target.APPLICATION, 100));
add(
new Hold(RumblepadButton.TEN),
new Continuous(Action.VOLUME_UP, Target.APPLICATION, 100));
new Continuous(Action.VOLUME_UP, Target.APPLICATION, 100));*/
}
protected Button getButton(JXInputButtonEvent event) throws UnknownButtonException {

View File

@@ -8,7 +8,6 @@ import mimis.event.Task;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.device.DeviceNotFoundException;
import mimis.exception.worker.ActivateException;
import mimis.macro.state.Hold;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.value.Action;
@@ -56,17 +55,17 @@ public class WiimoteDevice extends Device implements GestureListener {
}
wiimote.activateMotionSensing();
add(
/*add(
new Hold(WiimoteButton.A),
new Task(Action.TRAIN),
new Task(Action.STOP));
new Task(Action.STOP));*/
add(
new Press(WiimoteButton.B),
new Task(Action.SAVE));
add(
new Press(WiimoteButton.DOWN),
new Task(Action.LOAD));
add(
/*add(
new Hold(WiimoteButton.HOME),
new Task(Action.RECOGNIZE),
new Task(Action.STOP));/*

View File

@@ -1,7 +1,6 @@
package mimis.event;
import mimis.Event;
import mimis.event.task.Continuous;
import mimis.value.Action;
public abstract class EventHandler extends EventListener {
@@ -12,7 +11,6 @@ public abstract class EventHandler extends EventListener {
}
public void event(Event event) {
log.debug("aaa" + event);
if (event instanceof Feedback) {
feedback((Feedback) event);
} else if (event instanceof Task) {
@@ -23,18 +21,7 @@ public abstract class EventHandler extends EventListener {
protected void feedback(Feedback feedback) {}
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 (running && !continuous.getStop());
continuous.reset();
} else {
action(action);
}
action(task.getAction());
}
protected void action(Action action) {}

View File

@@ -1,44 +0,0 @@
package mimis.event.task;
import mimis.event.Task;
import mimis.value.Action;
import mimis.value.Target;
public class Continuous extends Task {
protected static final int SLEEP = 0;
protected int sleep;
protected int iteration;
protected boolean stop;
public Continuous(Action action, Target target, int sleep) {
super(target, action);
this.sleep = sleep;
reset();
}
public Continuous(Action action, Target target) {
this(action, target, SLEEP);
}
public void nextIteration() {
++iteration;
}
public void stop() {
stop = true;
}
public void reset() {
iteration = 0;
stop = false;
}
public int getSleep() {
return sleep;
}
public boolean getStop() {
return stop;
}
}

View File

@@ -1,24 +0,0 @@
package mimis.event.task;
import mimis.value.Action;
import mimis.value.Target;
public class Dynamic extends Continuous {
protected static final int RATE = 10;
protected int rate;
public Dynamic(Action action, Target target, int sleep, int rate) {
super(action, target, sleep);
this.rate = rate;
}
public Dynamic(Action action, Target target, int sleep) {
super(action, target, sleep);
this.rate = RATE;
}
public int getSleep() {
return sleep + rate * iteration;
}
}

View File

@@ -1,16 +0,0 @@
package mimis.event.task;
import mimis.event.Task;
public class Stopper extends Task {
protected Continuous continuous;
public Stopper(Continuous continuous) {
super(null, null);
this.continuous = continuous;
}
public void stop() {
continuous.stop(); // Todo: check if the task is really started?
}
}