Begin/End verder geimplementeerd -> moet nog in alle applicaties aangepast/getest worden.

This commit is contained in:
Bram Veenboer
2011-06-05 15:41:43 +00:00
parent a323a35c62
commit c3a506c2b6
25 changed files with 77 additions and 95 deletions

View File

@@ -14,7 +14,6 @@ public abstract class Application extends EventHandler implements Titled, Exitab
public Application(String title) {
this.title = title;
//initialise();
}
public String title() {

View File

@@ -4,12 +4,12 @@ import mimis.event.EventHandler;
import mimis.event.Task;
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.Press;
import mimis.manager.Exitable;
import mimis.manager.Titled;
import mimis.sequence.Sequence;
import mimis.sequence.SequenceListener;
import mimis.sequence.State;
import mimis.sequence.state.Press;
public abstract class Device extends EventHandler implements Titled, Exitable {
protected String title;

View File

@@ -3,11 +3,11 @@ package mimis;
import java.util.ArrayList;
import mimis.exception.macro.StateOrderException;
import mimis.macro.Sequence;
import mimis.macro.State;
import mimis.macro.state.Hold;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.sequence.Sequence;
import mimis.sequence.State;
import mimis.sequence.state.Hold;
import mimis.sequence.state.Press;
import mimis.sequence.state.Release;
public class Macro extends Sequence {

View File

@@ -5,7 +5,7 @@ import mimis.event.EventRouter;
import mimis.event.Feedback;
import mimis.exception.worker.ActivateException;
import mimis.feedback.TextFeedback;
import mimis.macro.SequenceListener;
import mimis.sequence.SequenceListener;
import mimis.util.ArrayCycle;
import mimis.value.Action;

View File

@@ -39,7 +39,7 @@ public class WinampApplication extends WindowsApplication {
muted = volume == 0;
}
public void action(Action action) {
public void end(Action action) {
log.fatal(handle);
log.trace("WinampApplication: " + action);
switch (action) {

View File

@@ -8,8 +8,8 @@ import mimis.exception.button.UnknownDirectionException;
import mimis.exception.device.DeviceNotFoundException;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.sequence.state.Press;
import mimis.sequence.state.Release;
import de.hardcode.jxinput.JXInputDevice;
import de.hardcode.jxinput.JXInputManager;

View File

@@ -9,9 +9,9 @@ import mimis.exception.MacroException;
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.macro.state.Release;
import mimis.sequence.state.Hold;
import mimis.sequence.state.Press;
import mimis.sequence.state.Release;
import mimis.value.Action;
import mimis.value.Target;
import de.hardcode.jxinput.event.JXInputButtonEvent;

View File

@@ -7,7 +7,7 @@ import mimis.event.Task;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.button.UnknownDirectionException;
import mimis.exception.worker.ActivateException;
import mimis.macro.state.Press;
import mimis.sequence.state.Press;
import mimis.value.Action;
import mimis.value.Target;

View File

@@ -6,8 +6,8 @@ import mimis.Device;
import mimis.event.Task;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.worker.ActivateException;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.sequence.state.Press;
import mimis.sequence.state.Release;
import mimis.value.Action;
import mimis.value.Key;
import mimis.value.Target;

View File

@@ -8,8 +8,8 @@ import mimis.device.lirc.button.DenonRC176;
import mimis.device.lirc.button.PhiliphsRCLE011Button;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.sequence.state.Press;
import mimis.sequence.state.Release;
import mimis.util.Multiplexer;
import mimis.util.multiplexer.SignalListener;
import mimis.value.Signal;

View File

@@ -7,8 +7,8 @@ import javax.swing.WindowConstants;
import mimis.Device;
import mimis.event.Task;
import mimis.exception.worker.ActivateException;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.sequence.state.Press;
import mimis.sequence.state.Release;
import mimis.value.Action;
import mimis.value.Target;

View File

@@ -8,8 +8,8 @@ import mimis.event.Task;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.device.DeviceNotFoundException;
import mimis.exception.worker.ActivateException;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.sequence.state.Press;
import mimis.sequence.state.Release;
import mimis.value.Action;
import org.wiigee.event.GestureEvent;

View File

@@ -34,5 +34,4 @@ public abstract class EventHandler extends EventListener {
protected void begin(Action action) {}
protected void end(Action action) {}
protected void action(Action action) {}
}

View File

@@ -4,7 +4,6 @@ import java.util.ArrayList;
import mimis.Application;
public abstract class EventRouter extends EventListener {
protected ArrayList<EventListener> eventListenerList;
protected Application application;

View File

@@ -6,8 +6,7 @@ import mimis.value.Signal;
import mimis.value.Target;
public class Task extends Event {
public static Target TARGET = Target.SELF;
public static Signal SIGNAL = Signal.END;
public static final Target TARGET = Target.SELF;
protected Action action;
protected Signal signal;
@@ -17,12 +16,8 @@ public class Task extends Event {
}
public Task(Target target, Action action) {
this(target, action, SIGNAL);
}
public Task(Target target, Action action, Signal signal) {
super(target);
this.action = action;
super(target);
this.action = action;
}
public Action getAction() {
@@ -32,4 +27,8 @@ public class Task extends Event {
public Signal getSignal() {
return signal;
}
public void setSignal(Signal signal) {
this.signal = signal;
}
}

View File

@@ -33,25 +33,26 @@ public class GlobalRouter extends EventRouter {
}
} while (object != null);
} catch (IOException e) {
e.printStackTrace();
log.error(e);
} catch (ClassNotFoundException e) {
e.printStackTrace();
log.error(e);
}
}
};
return;
} catch (UnknownHostException e) {
} catch (IOException e) {}
log.error(e);
} catch (IOException e) {
log.error(e);
}
throw new GlobalRouterException();
}
public void event(Event event) {
System.out.println("NetworkSpreader: event!");
//System.out.println(socket.isConnected());
try {
objectOutputStream.writeObject(event);
} catch (IOException e) {
e.printStackTrace();
log.error(e);
}
}
}

View File

@@ -1,4 +1,4 @@
package mimis.macro;
package mimis.sequence;
public class Active {
@@ -25,6 +25,10 @@ public class Active {
State next = sequence.get(++step);
return next == null ? false : state.equals(next);
}
public boolean first() {
return step == 0;
}
public boolean last() {
return step == sequence.count() - 1;

View File

@@ -1,4 +1,4 @@
package mimis.macro;
package mimis.sequence;
public class Sequence {
protected State[] eventArray;

View File

@@ -1,4 +1,4 @@
package mimis.macro;
package mimis.sequence;
import java.util.ArrayList;
import java.util.HashMap;
@@ -10,20 +10,21 @@ import mimis.Event;
import mimis.event.EventHandler;
import mimis.event.EventListener;
import mimis.event.Task;
import mimis.value.Signal;
import mimis.value.Target;
public class SequenceListener {
protected Log log = LogFactory.getLog(getClass());
protected EventHandler eventHandler;
protected EventHandler self;
protected ArrayList<Sequence> sequenceList;
protected HashMap<Sequence, Event> eventMap;
protected ArrayList<Active> activeList;
protected static EventListener eventListener;
public SequenceListener(EventHandler eventHandler) {
this.eventHandler = eventHandler;
public SequenceListener(EventHandler self) {
this.self = self;
sequenceList = new ArrayList<Sequence>();
eventMap = new HashMap<Sequence, Event>();
activeList = new ArrayList<Active>();
@@ -48,13 +49,11 @@ public class SequenceListener {
ArrayList<Active> removeList = new ArrayList<Active>();
for (Active active : activeList) {
if (active.next(state)) {
if (active.last()) {
Event event = eventMap.get(active.getSequence());
if (event.getTarget().equals(Target.SELF)) {
eventHandler.event(event);
} else {
eventListener.add(event);
}
Event event = eventMap.get(active.getSequence());
if (active.first()) {
add(event, Signal.BEGIN);
} else if (active.last()) {
add(event, Signal.END);
removeList.add(active);
}
} else {
@@ -65,4 +64,16 @@ public class SequenceListener {
activeList.remove(active);
}
}
protected void add(Event event, Signal signal) {
if (event instanceof Task) {
Task task = (Task) event;
task.setSignal(signal);
}
if (event.getTarget().equals(Target.SELF)) {
eventListener.add(event);
} else {
self.add(event);
}
}
}

View File

@@ -1,4 +1,4 @@
package mimis.macro;
package mimis.sequence;
import mimis.Button;

View File

@@ -1,7 +1,7 @@
package mimis.macro.state;
package mimis.sequence.state;
import mimis.Button;
import mimis.macro.State;
import mimis.sequence.State;
public class Hold extends State {
public Hold(Button button) {

View File

@@ -1,7 +1,7 @@
package mimis.macro.state;
package mimis.sequence.state;
import mimis.Button;
import mimis.macro.State;
import mimis.sequence.State;
public class Press extends State {
public Press(Button button) {

View File

@@ -1,7 +1,7 @@
package mimis.macro.state;
package mimis.sequence.state;
import mimis.Button;
import mimis.macro.State;
import mimis.sequence.State;
public class Release extends State {
public Release(Button button) {

View File

@@ -1,46 +1,15 @@
TODO
------------
mappings lezen vanuit config bestand
exeptions en foutmeldingen nakijken/afhandelen/loggen
initialises en exits controleren op succes. tussendoor afgesloten apps en devs herkennen en restarten? op runtime nieuwe applicaties of devices toevoegen of sluiten.
nummerinfo weergeven, waar? via feedback?
javadoc maken, class diagram opstellen enz.....
meer applicaties implementeren, zoals VLC, WMP, Youtube? (interface naar flash?)
client maken die remote devices kan beheren en lokaal acties kan uitvoeren
feedback?
mogelijkheid tot webstart onderzoeken
alle listeners in gezamelijk pakket plaatsen?
IN PROGRESS
-------------
naamgeving en indeling classes/packages controleren
+TaskGatherererer hernoemt naar TaskManager
+value package waar algemene (gedeelde) enums in komen
exporteren naar uitvoerbare jar file
+Eclipse kan exporteren, maar bij uitvoeren gebeurd er niets. Moet er een status scherm komen? (Een swing console bijvoorbeeld)
logo ontwerpen
+logo is af, favicon maken?
feedback systeem implementeren, rumble voor zowel wiimote als rumblepad
+feedback voor rumblepad komt er niet, te veel werk en gebruikte api lijkt niet eenvoudig aanpasbaar
algemene listener parent class / interface maken? die zou standaard thread functies implementeren / vereisen: start, run, stop
+hier zijn al enkele aanpassingen aan gemaakt, de main stuurt nu direct de TaskManager aan in plaats van dat het vannuit een Device of Application gebeurd
log bijhouden
+werkt via apache commons logging, nu nog boodschappen toevoegen!
DONE
-------------
lantextdevice generiek maken met normale textdevice
favicon maken?