diff --git a/cpp/mimis/.cproject b/cpp/mimis/.cproject
deleted file mode 100644
index e09c8b1..0000000
--- a/cpp/mimis/.cproject
+++ /dev/null
@@ -1,891 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cpp/mimis/.project b/cpp/mimis/.project
deleted file mode 100644
index 5d358ee..0000000
--- a/cpp/mimis/.project
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- Mimis JNI
-
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.genmakebuilder
- clean,full,incremental,
-
-
- ?name?
-
-
-
- org.eclipse.cdt.make.core.append_environment
- true
-
-
- org.eclipse.cdt.make.core.buildArguments
-
-
-
- org.eclipse.cdt.make.core.buildCommand
- make
-
-
- org.eclipse.cdt.make.core.buildLocation
- ${workspace_loc:/Mimis JNI/Debug}
-
-
- org.eclipse.cdt.make.core.contents
- org.eclipse.cdt.make.core.activeConfigSettings
-
-
- org.eclipse.cdt.make.core.enableAutoBuild
- false
-
-
- org.eclipse.cdt.make.core.enableCleanBuild
- true
-
-
- org.eclipse.cdt.make.core.enableFullBuild
- true
-
-
- org.eclipse.cdt.make.core.stopOnError
- true
-
-
- org.eclipse.cdt.make.core.useDefaultBuildCmd
- true
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
- full,incremental,
-
-
-
-
-
- org.eclipse.cdt.core.cnature
- org.eclipse.cdt.core.ccnature
- org.eclipse.cdt.managedbuilder.core.managedBuildNature
- org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
-
-
diff --git a/java/cfg/log4j.properties b/java/cfg/log4j.properties
index f8a8ad4..0430f10 100644
--- a/java/cfg/log4j.properties
+++ b/java/cfg/log4j.properties
@@ -1,4 +1,4 @@
-log4j.rootLogger=TRACE, CA
+log4j.rootLogger=DEBUG, CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
\ No newline at end of file
diff --git a/java/src/mimis/Application.java b/java/src/mimis/Application.java
deleted file mode 100644
index f9c1dd2..0000000
--- a/java/src/mimis/Application.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package mimis;
-
-import mimis.event.EventHandler;
-import mimis.event.Task;
-import mimis.event.feedback.TextFeedback;
-import mimis.manager.Titled;
-import mimis.value.Action;
-import mimis.value.Signal;
-
-public abstract class Application extends EventHandler implements Titled {
- protected String title;
- protected boolean active;
-
- public Application(String title) {
- this.title = title;
- }
-
- public String title() {
- return title;
- }
-
- public void add(Event event) {
- if (event instanceof Task) {
- Task task = (Task) event;
- Action action = task.getAction();
- switch (action) {
- case START:
- if (task.getSignal().equals(Signal.BEGIN)) {
- if (active()) {
- eventRouter.add(new TextFeedback("Stop application"));
- stop();
- } else {
- eventRouter.add(new TextFeedback("Start application"));
- start();
- }
- }
- return;
- }
- }
- super.event(event);
- }
-}
\ No newline at end of file
diff --git a/java/src/mimis/Button.java b/java/src/mimis/Button.java
index 0fbafb8..6e26e42 100644
--- a/java/src/mimis/Button.java
+++ b/java/src/mimis/Button.java
@@ -1,3 +1,7 @@
package mimis;
-public interface Button {}
+import mimis.input.Input;
+
+public interface Button extends Input {
+ //public String getCode();
+}
diff --git a/java/src/mimis/Client.java b/java/src/mimis/Client.java
index 74ca389..1225539 100644
--- a/java/src/mimis/Client.java
+++ b/java/src/mimis/Client.java
@@ -1,14 +1,5 @@
package mimis;
-import mimis.device.javainput.extreme3d.Extreme3DDevice;
-import mimis.device.javainput.rumblepad.RumblepadDevice;
-import mimis.device.jintellitype.JIntellitypeDevice;
-import mimis.device.lirc.LircDevice;
-import mimis.device.network.NetworkDevice;
-import mimis.device.panel.PanelDevice;
-import mimis.device.wiimote.WiimoteDevice;
-import mimis.event.EventRouter;
-import mimis.event.router.GlobalRouter;
import mimis.util.swing.Dialog;
import org.apache.commons.logging.Log;
@@ -20,30 +11,13 @@ public class Client {
public static final String IP = "127.0.0.1";
public static final int PORT = 6789;
- protected EventRouter eventRouter;
- protected Device[] deviceArray;
-
public Client(String ip, int port) {
- eventRouter = new GlobalRouter(ip, port);
- deviceArray = new Device[] {
- new LircDevice(),
- new WiimoteDevice(),
- new PanelDevice(),
- new JIntellitypeDevice(),
- new RumblepadDevice(),
- new Extreme3DDevice(),
- new NetworkDevice()};
- }
-
- public void start() {
- log.debug("Client");
- Mimis mimis = new Mimis(eventRouter, deviceArray);
- mimis.start();
+ //eventRouter = new GlobalRouter(ip, port);
}
public static void main(String[] args) {
String ip = Dialog.question("Server IP:", IP);
int port = Integer.valueOf(Dialog.question("Server Port:", PORT));
- new Client(ip, port).start();
+ //new Client(ip, port).start();
}
}
diff --git a/java/src/mimis/Device.java b/java/src/mimis/Device.java
deleted file mode 100644
index 09bd5e6..0000000
--- a/java/src/mimis/Device.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package mimis;
-
-import mimis.event.EventHandler;
-import mimis.exception.worker.DeactivateException;
-import mimis.manager.Titled;
-import mimis.sequence.EventMap;
-import mimis.sequence.SequenceParser;
-import mimis.sequence.State;
-
-public abstract class Device extends EventHandler implements Titled {
- protected String title;
- protected SequenceParser sequenceParser;
-
- public Device(String title) {
- this.title = title;
- sequenceParser = new SequenceParser(this);
- }
-
- public String title() {
- return title;
- }
-
- /* Worker */
- protected void deactivate() throws DeactivateException {
- super.deactivate();
- sequenceParser.reset();
- }
-
- /* SequenceParser */
- protected void add(EventMap eventMap) {
- sequenceParser.add(eventMap);
- }
-
- protected void remove(EventMap eventMap) {
- sequenceParser.remove(eventMap);
- }
-
- protected void reset() {
- sequenceParser.reset();
- }
-
- protected void add(State state) {
- sequenceParser.add(state);
- }
-}
diff --git a/java/src/mimis/Event.java b/java/src/mimis/Event.java
deleted file mode 100644
index 2aa9d98..0000000
--- a/java/src/mimis/Event.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package mimis;
-
-import java.io.Serializable;
-
-import mimis.event.EventListener;
-import mimis.value.Target;
-
-public class Event implements Serializable {
- protected static final long serialVersionUID = 1L;
-
- protected Target target;
-
- public Event(Target target) {
- this.target = target;
- }
-
- public Target getTarget() {
- return target;
- }
-
- public boolean compatible(EventListener eventListener) {
- switch (target) {
- case ALL:
- return true;
- case MIMIS:
- return eventListener instanceof Mimis;
- case DEVICES:
- return eventListener instanceof Device;
- case APPLICATIONS:
- return eventListener instanceof Application;
- default:
- return false;
- }
- }
-}
diff --git a/java/src/mimis/GUI.java b/java/src/mimis/GUI.java
deleted file mode 100644
index 837c2ae..0000000
--- a/java/src/mimis/GUI.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package mimis;
-
-import java.awt.GridLayout;
-import java.awt.TextArea;
-import java.awt.event.WindowEvent;
-
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JToggleButton;
-import javax.swing.SwingConstants;
-import javax.swing.WindowConstants;
-
-import mimis.util.Swing;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class GUI extends JFrame {
- protected static final long serialVersionUID = 1L;
- protected Log log = LogFactory.getLog(getClass());
-
- protected static final String TITLE = "MIMIS Manager";
- protected static final String APPLICATION_TITLE = "Applications";
- protected static final String DEVICE_TITLE = "Devices";
-
- protected Mimis mimis;
- protected TextArea textArea;
-
- public GUI(Mimis mimis, Manager applicationManager, Manager deviceManager) {
- super(TITLE);
- this.mimis = mimis;
- setIconImage(Swing.getImage(Mimis.ICON));
- createFrame(applicationManager, deviceManager);
- }
-
- protected void createFrame(Manager applicationManager, Manager deviceManager) {
- setLayout(new GridLayout(0, 1));
- JPanel controlPanel = createControlPanel(applicationManager, deviceManager);
- add(controlPanel);
- JPanel feedbackPanel = createTextPanel();
- add(feedbackPanel);
- setResizable(false);
- setVisible(true);
- setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
- pack();
- }
-
- protected JPanel createControlPanel(Manager applicationManager, Manager deviceManager) {
- JPanel controlPanel = new JPanel(new GridLayout(1, 0));
- if (applicationManager.count() > 0) {
- JPanel applicationPanel = createManagerPanel(applicationManager, APPLICATION_TITLE);
- controlPanel.add(applicationPanel);
- }
- if (deviceManager.count() > 0) {
- JPanel devicePanel = createManagerPanel(deviceManager, DEVICE_TITLE);
- controlPanel.add(devicePanel);
- }
- return controlPanel;
- }
-
- protected JPanel createManagerPanel(Manager> manager, String title) {
- JPanel panel = new JPanel(new GridLayout(0, 1));
- panel.add(new JLabel(title, SwingConstants.CENTER));
- for (JToggleButton button : manager.getButtons()) {
- panel.add(button);
- }
- return panel;
- }
-
- protected JPanel createTextPanel() {
- JPanel textPanel = new JPanel();
- textArea = new TextArea();
- textArea.setEditable(false);
- textPanel.add(textArea);
- return textPanel;
- }
-
- protected void processWindowEvent(WindowEvent event) {
- if (event.getID() == WindowEvent.WINDOW_CLOSING) {
- log.debug("Window closing");
- mimis.exit();
- }
- }
-
- protected void stop() {
- dispose();
- }
-
- public void write(String string) {
- textArea.append(string);
- }
-
- public void writeLine(String string) {
- write(string + "\n");
- }
-
- public void clear() {
- textArea.setText(null);
- }
-}
diff --git a/java/src/mimis/Gui.java b/java/src/mimis/Gui.java
new file mode 100644
index 0000000..97a0216
--- /dev/null
+++ b/java/src/mimis/Gui.java
@@ -0,0 +1,106 @@
+package mimis;
+
+import java.awt.GridLayout;
+import java.awt.TextArea;
+import java.awt.event.WindowEvent;
+
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JToggleButton;
+import javax.swing.SwingConstants;
+import javax.swing.WindowConstants;
+
+import mimis.exception.worker.ActivateException;
+import mimis.input.Feedback;
+import mimis.input.Input;
+import mimis.manager.ButtonManager;
+import mimis.util.Swing;
+import mimis.worker.Component;
+
+public class Gui extends Component {
+ public static final String ICON = "M.png";
+ public static final String TITLE = "MIMIS Manager";
+
+ protected JFrame frame;
+ protected Component component;
+ protected TextArea textArea;
+
+ public Gui(final Component component, ButtonManager... buttonManagerArray) {
+ frame = new JFrame(TITLE) {
+ protected static final long serialVersionUID = 1L;
+ protected void processWindowEvent(WindowEvent event) {
+ if (event.getID() == WindowEvent.WINDOW_CLOSING) {
+ log.debug("Window closing");
+ component.exit();
+ }
+ }
+ };
+ this.component = component;
+ frame.setIconImage(Swing.getImage(ICON));
+ createFrame(buttonManagerArray);
+ }
+
+ public void activate() throws ActivateException {
+ listen(Feedback.class);
+ super.activate();
+ }
+
+ public void exit() {
+ super.exit();
+ frame.dispose();
+ }
+
+ protected void createFrame(ButtonManager... buttonManagerArray) {
+ frame.setLayout(new GridLayout(0, 1));
+ JPanel controlPanel = createControlPanel(buttonManagerArray);
+ frame.add(controlPanel);
+ JPanel feedbackPanel = createTextPanel();
+ frame.add(feedbackPanel);
+ frame.setResizable(false);
+ frame.setVisible(true);
+ frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+ frame.pack();
+ }
+
+ protected JPanel createControlPanel(ButtonManager... buttonManagerArray) {
+ JPanel controlPanel = new JPanel(new GridLayout(1, 0));
+ for (ButtonManager buttonManager : buttonManagerArray) {
+ if (buttonManager.count() > 0) {
+ JPanel panel = new JPanel(new GridLayout(0, 1));
+ panel.add(new JLabel(buttonManager.getTitle(), SwingConstants.CENTER));
+ for (JToggleButton button : buttonManager.getButtons()) {
+ panel.add(button);
+ }
+ controlPanel.add(panel);
+ }
+ }
+ return controlPanel;
+ }
+
+ protected JPanel createTextPanel() {
+ JPanel textPanel = new JPanel();
+ textArea = new TextArea();
+ textArea.setEditable(false);
+ textPanel.add(textArea);
+ return textPanel;
+ }
+
+ public void input(Input input) {
+ if (input instanceof Feedback) {
+ writeLine(((Feedback) input).getText());
+ }
+ }
+
+ public void write(String string) {
+ textArea.append(string);
+ }
+
+ public void writeLine(String string) {
+ write(string + "\n");
+ }
+
+ public void clear() {
+ textArea.setText(null);
+ }
+}
diff --git a/java/src/mimis/Main.java b/java/src/mimis/Main.java
index 61d640a..ede1320 100644
--- a/java/src/mimis/Main.java
+++ b/java/src/mimis/Main.java
@@ -1,61 +1,111 @@
package mimis;
-import mimis.application.PhotoViewerApplication;
-import mimis.application.cmd.windows.gomplayer.GomPlayerApplication;
-import mimis.application.cmd.windows.winamp.WinampApplication;
-import mimis.application.cmd.windows.wmp.WMPApplication;
+import mimis.application.TestApplication;
import mimis.application.itunes.iTunesApplication;
-import mimis.application.lirc.ipod.iPodApplication;
-import mimis.application.mpc.MPCApplication;
-import mimis.application.vlc.VLCApplication;
-import mimis.device.javainput.extreme3d.Extreme3DDevice;
-import mimis.device.javainput.rumblepad.RumblepadDevice;
-import mimis.device.jintellitype.JIntellitypeDevice;
import mimis.device.lirc.LircDevice;
-import mimis.device.network.NetworkDevice;
import mimis.device.panel.PanelDevice;
-import mimis.device.wiimote.WiimoteDevice;
-import mimis.event.EventRouter;
-import mimis.event.router.LocalRouter;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
+import mimis.input.Feedback;
+import mimis.input.Task;
+import mimis.manager.ButtonManager;
+import mimis.manager.Manager;
+import mimis.parser.Parser;
+import mimis.router.Router;
+import mimis.util.ArrayCycle;
+import mimis.value.Action;
+import mimis.value.Target;
+import mimis.worker.Component;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class Main {
- protected Log log = LogFactory.getLog(getClass());
-
- protected EventRouter eventRouter;
- protected Application[] applicationArray;
- protected Device[] deviceArray;
+public class Main extends Component {
+ protected TestApplication app;
+ protected Manager manager;
+ protected ButtonManager applicationManager, deviceManager;
+ protected Gui gui;
+ protected ArrayCycle componentCycle;
public Main() {
- eventRouter = new LocalRouter();
- applicationArray = new Application[] {
- new iTunesApplication(),
- new GomPlayerApplication(),
- new WMPApplication(),
- new MPCApplication(),
- new VLCApplication(),
- new WinampApplication(),
- new iPodApplication(),
- new PhotoViewerApplication()};
- deviceArray = new Device[] {
- new LircDevice(),
- new WiimoteDevice(),
- new PanelDevice(),
- new JIntellitypeDevice(),
- new RumblepadDevice(),
- new Extreme3DDevice(),
- new NetworkDevice()};
+ this.router = new Router();
}
- public void start() {
- log.debug("Main");
- Mimis mimis = new Mimis(eventRouter, applicationArray, deviceArray);
- mimis.start();
+ public void activate() throws ActivateException {
+ /* Create gui from application and device managers */
+ Component[] applicationArray = initialize(false, app = new TestApplication(), new iTunesApplication());
+ applicationManager = new ButtonManager("Applications", applicationArray);
+ deviceManager = new ButtonManager("Devices", initialize(false, new PanelDevice(), new LircDevice()));
+ gui = new Gui(this, applicationManager, deviceManager);
+
+ /* Create general manager */
+ manager = new Manager(initialize(true, router, new Parser(), gui));
+
+ /* Start managers */
+ applicationManager.start();
+ deviceManager.start();
+ manager.start();
+
+ /* Initialize component cycle */
+ componentCycle = new ArrayCycle(applicationArray);
+
+ listen(Task.class);
+ super.activate();
+
+ app.start();
+ app.test();
+ }
+
+ protected void deactivate() throws DeactivateException {
+ super.deactivate();
+
+ log.debug("Stop managers");
+ applicationManager.stop();
+ deviceManager.stop();
+ manager.stop();
+ }
+
+ public void exit() {
+ super.exit();
+
+ log.debug("Exit managers");
+ applicationManager.exit();
+ deviceManager.exit();
+ manager.exit();
+ }
+
+ public Component[] initialize(boolean start, Component... componentArray) {
+ for (Component component : componentArray) {
+ component.setRouter(router);
+ if (start) {
+ component.start();
+ }
+ }
+ return componentArray;
+ }
+
+ public void task(Task task) {
+ if (task.getTarget().equals(Target.CURRENT)) {
+ componentCycle.current().add(task);
+ } else {
+ super.task(task);
+ }
+ }
+
+ public void end(Action action) {
+ switch (action) {
+ case NEXT:
+ log.debug("Next component");
+ route(new Feedback("Next component: " + componentCycle.next().getTitle()));
+ break;
+ case PREVIOUS:
+ log.debug("Previous component");
+ route(new Feedback("Previous component: " + componentCycle.previous().getTitle()));
+ break;
+ case EXIT:
+ exit();
+ break;
+ }
}
public static void main(String[] args) {
- new Main().start();
+ new Main().start(false);
}
}
diff --git a/java/src/mimis/Manager.java b/java/src/mimis/Manager.java
deleted file mode 100644
index 626deb7..0000000
--- a/java/src/mimis/Manager.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package mimis;
-
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.swing.JToggleButton;
-
-import mimis.exception.worker.DeactivateException;
-import mimis.manager.WorkerButton;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class Manager extends Worker {
- protected Log log = LogFactory.getLog(getClass());
- protected static final long serialVersionUID = 1L;
- protected static final int INTERVAL = 1000;
-
- protected Worker[] workerArray;
- protected Map buttonMap;
-
- public Manager(T[] workerArray) {
- this.workerArray = workerArray;
- createButtons();
- }
-
- protected void deactivate() throws DeactivateException {
- super.deactivate();
- for (Worker manageable : workerArray) {
- manageable.stop();
- }
- }
-
- public void exit() {
- super.exit();
- for (Worker manageable : workerArray) {
- manageable.exit();
- }
- }
-
- public int count() {
- return workerArray.length;
- }
-
- protected void createButtons() {
- buttonMap = new HashMap();
- for (Worker manageable : workerArray) {
- WorkerButton button = new WorkerButton(manageable);
- buttonMap.put(manageable, button);
- }
- }
-
- protected JToggleButton[] getButtons() {
- return buttonMap.values().toArray(new JToggleButton[]{});
- }
-
- protected void work() {
- long before = Calendar.getInstance().getTimeInMillis();
- for (Worker manageable : workerArray) {
- boolean active = manageable.active();
- WorkerButton button = buttonMap.get(manageable);
- button.setPressed(active);
- }
- long after = Calendar.getInstance().getTimeInMillis();
- int sleep = INTERVAL - (int) (after - before);
- sleep(sleep);
- }
-}
\ No newline at end of file
diff --git a/java/src/mimis/Mimis.java b/java/src/mimis/Mimis.java
deleted file mode 100644
index 9bf0076..0000000
--- a/java/src/mimis/Mimis.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package mimis;
-
-import mimis.event.EventHandler;
-import mimis.event.EventRouter;
-import mimis.event.Feedback;
-import mimis.event.feedback.TextFeedback;
-import mimis.exception.worker.ActivateException;
-import mimis.exception.worker.DeactivateException;
-import mimis.sequence.SequenceParser;
-import mimis.util.ArrayCycle;
-import mimis.value.Action;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class Mimis extends EventHandler {
- protected Log log = LogFactory.getLog(getClass());
- public static final String ICON = "M.png";
-
- protected ArrayCycle applicationCycle;
- protected Device[] deviceArray;
- protected Application[] applicationArray;
- protected GUI gui;
-
- protected Manager applicationManager;
- protected Manager deviceManager;
-
- public Mimis(EventRouter eventRouter) {
- this(eventRouter, new Application[0], new Device[0]);
- }
-
- public Mimis(EventRouter eventRouter, Application[] applicationArray) {
- this(eventRouter, applicationArray, new Device[0]);
- }
-
- public Mimis(EventRouter eventRouter, Device[] deviceArray) {
- this(eventRouter, new Application[0], deviceArray);
- }
-
- public Mimis(EventRouter eventRouter, Application[] applicationArray, Device[] deviceArray) {
- this.applicationArray = applicationArray;
- this.deviceArray = deviceArray;
- applicationCycle = new ArrayCycle(applicationArray);
-
- log.debug("Initialise EventHandler and SequenceParser");
- EventHandler.initialise(eventRouter);
- SequenceParser.initialise(eventRouter);
-
- log.debug("Add EventListeners to EventRouter");
- eventRouter.add(this);
- eventRouter.add(applicationArray);
- eventRouter.add(deviceArray);
-
- log.debug("Create managers");
- applicationManager = new Manager(applicationArray);
- deviceManager = new Manager(deviceArray);
- }
-
- protected void activate() throws ActivateException {
- log.debug("Create gui");
- gui = new GUI(this, applicationManager, deviceManager);
-
- log.debug("Activate event router");
- eventRouter.start();
-
- log.debug("Activate managers");
- applicationManager.start();
- deviceManager.start();
-
- if (applicationCycle.size() > 0) {
- log.debug("Initialise application cycle");
- eventRouter.set(applicationCycle.current());
- add(new TextFeedback("Current application: " + applicationCycle.current().title()));
- }
- super.activate();
- }
-
- protected void deactivate() throws DeactivateException {
- super.deactivate();
- log.debug("Stop GUI");
- gui.stop();
-
- log.debug("Stop event router");
- eventRouter.stop();
-
- log.debug("Stop managers");
- applicationManager.stop();
- deviceManager.stop();
- }
-
- public void exit() {
- super.exit();
- log.debug("Exit event router");
- eventRouter.exit();
-
- log.debug("Exit managers");
- applicationManager.exit();
- deviceManager.exit();
- }
-
- protected void end(Action action) {
- switch (action) {
- case NEXT:
- eventRouter.set(applicationCycle.next());
- add(new TextFeedback("Next application: " + applicationCycle.current().title()));
- break;
- case PREVIOUS:
- eventRouter.set(applicationCycle.previous());
- add(new TextFeedback("Previous application: " + applicationCycle.current().title()));
- break;
- case EXIT:
- exit();
- break;
- }
- }
-
- protected void feedback(Feedback feedback) {
- if (feedback instanceof TextFeedback) {
- gui.writeLine(((TextFeedback) feedback).getText());
- }
- }
-}
diff --git a/java/src/mimis/application/Application.java b/java/src/mimis/application/Application.java
new file mode 100644
index 0000000..747f4f6
--- /dev/null
+++ b/java/src/mimis/application/Application.java
@@ -0,0 +1,6 @@
+package mimis.application;
+
+
+public interface Application {
+
+}
diff --git a/java/src/mimis/application/PhotoViewerApplication.java b/java/src/mimis/application/PhotoViewerApplication.java
index b397031..62b42b3 100644
--- a/java/src/mimis/application/PhotoViewerApplication.java
+++ b/java/src/mimis/application/PhotoViewerApplication.java
@@ -1,10 +1,10 @@
package mimis.application;
-import mimis.Worker;
import mimis.application.robot.RobotApplication;
import mimis.exception.worker.DeactivateException;
import mimis.value.Action;
import mimis.value.Key;
+import mimis.worker.Worker;
public class PhotoViewerApplication extends RobotApplication {
protected final static String TITLE = "Photo Viewer";
diff --git a/java/src/mimis/application/TestApplication.java b/java/src/mimis/application/TestApplication.java
new file mode 100644
index 0000000..57635e6
--- /dev/null
+++ b/java/src/mimis/application/TestApplication.java
@@ -0,0 +1,53 @@
+package mimis.application;
+
+import mimis.device.lirc.button.ColorButton;
+import mimis.device.wiimote.WiimoteButton;
+import mimis.exception.worker.ActivateException;
+import mimis.input.Input;
+import mimis.input.Task;
+import mimis.input.state.Hold;
+import mimis.input.state.Press;
+import mimis.input.state.Release;
+import mimis.input.state.sequence.Sequence;
+import mimis.parser.ParserInput;
+import mimis.state.TaskMap;
+import mimis.value.Action;
+import mimis.value.Target;
+import mimis.worker.Component;
+
+public class TestApplication extends Component {
+ public TestApplication() {
+ super("Test App");
+ }
+
+ public void activate() throws ActivateException {
+ TaskMap taskMap = new TaskMap();
+ taskMap.add(new Sequence(
+ new Hold(ColorButton.BLUE), new Press(WiimoteButton.A), new Release(ColorButton.BLUE)),
+ new Task(Action.TEST, Target.CURRENT));
+ route(new ParserInput(Action.ADD, taskMap));
+
+ listen(Task.class);
+
+ super.activate();
+ }
+
+ public void test() {
+ while (!active());
+
+ route(new Press(ColorButton.BLUE));
+ /*sleep(1000);
+ route(new ParserInput(Action.RESET, this, false));*/
+ sleep(1000);
+ route(new Press(WiimoteButton.A));
+ }
+
+ public void input(Input input) {
+ if (input instanceof Task) {
+ Task task = (Task) input;
+ log.debug(task.getAction() + " " + task.getSignal() + " " + task.getTarget());
+ } else {
+ log.debug(input.getClass());
+ }
+ }
+}
diff --git a/java/src/mimis/application/cmd/CMDApplication.java b/java/src/mimis/application/cmd/CMDApplication.java
index b5032a1..33ef615 100644
--- a/java/src/mimis/application/cmd/CMDApplication.java
+++ b/java/src/mimis/application/cmd/CMDApplication.java
@@ -3,13 +3,13 @@ package mimis.application.cmd;
import java.io.IOException;
import java.util.Map;
-import mimis.Application;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
import mimis.util.Native;
import mimis.value.Registry;
+import mimis.worker.Component;
-public abstract class CMDApplication extends Application {
+public abstract class CMDApplication extends Component {
protected final static Registry REGISTRY = Registry.LOCAL_MACHINE;
protected final static String KEY = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths";
diff --git a/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java b/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java
index adaaf2f..984991a 100644
--- a/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java
+++ b/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java
@@ -1,11 +1,11 @@
package mimis.application.cmd.windows.gomplayer;
-import mimis.Worker;
import mimis.application.cmd.windows.WindowsApplication;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
import mimis.value.Action;
import mimis.value.Amount;
+import mimis.worker.Worker;
public class GomPlayerApplication extends WindowsApplication {
protected final static String PROGRAM = "GOM.exe";
diff --git a/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java b/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java
index 5a8bc3a..ac3320d 100644
--- a/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java
+++ b/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java
@@ -1,9 +1,9 @@
package mimis.application.cmd.windows.winamp;
-import mimis.Worker;
import mimis.application.cmd.windows.WindowsApplication;
import mimis.exception.worker.DeactivateException;
import mimis.value.Action;
+import mimis.worker.Worker;
public class WinampApplication extends WindowsApplication {
protected final static String PROGRAM = "winamp.exe";
diff --git a/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java b/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java
index 889ab24..3e605bd 100644
--- a/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java
+++ b/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java
@@ -1,8 +1,8 @@
package mimis.application.cmd.windows.wmp;
-import mimis.Worker;
import mimis.application.cmd.windows.WindowsApplication;
import mimis.value.Action;
+import mimis.worker.Worker;
public class WMPApplication extends WindowsApplication {
protected final static String PROGRAM = "wmplayer.exe";
diff --git a/java/src/mimis/application/itunes/iTunesApplication.java b/java/src/mimis/application/itunes/iTunesApplication.java
index 80343c0..7e2ad4f 100644
--- a/java/src/mimis/application/itunes/iTunesApplication.java
+++ b/java/src/mimis/application/itunes/iTunesApplication.java
@@ -1,18 +1,18 @@
package mimis.application.itunes;
-import mimis.Application;
-import mimis.Worker;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
import mimis.util.Native;
import mimis.value.Action;
+import mimis.worker.Component;
+import mimis.worker.Worker;
import com.dt.iTunesController.ITCOMDisabledReason;
import com.dt.iTunesController.ITTrack;
import com.dt.iTunesController.iTunes;
import com.dt.iTunesController.iTunesEventsInterface;
-public class iTunesApplication extends Application implements iTunesEventsInterface {
+public class iTunesApplication extends Component implements iTunesEventsInterface {
protected static final String TITLE = "iTunes";
protected static final String PROGRAM = "iTunes.exe";
protected static final boolean QUIT = false;
diff --git a/java/src/mimis/application/lirc/LircApplication.java b/java/src/mimis/application/lirc/LircApplication.java
index d792bfe..d20bbd9 100644
--- a/java/src/mimis/application/lirc/LircApplication.java
+++ b/java/src/mimis/application/lirc/LircApplication.java
@@ -1,13 +1,13 @@
package mimis.application.lirc;
-import mimis.Application;
import mimis.device.lirc.LircButton;
import mimis.device.lirc.LircService;
import mimis.device.lirc.remote.WC02IPOButton;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
+import mimis.worker.Component;
-public class LircApplication extends Application {
+public class LircApplication extends Component {
protected LircService lircService;
public LircApplication(String title) {
diff --git a/java/src/mimis/application/lirc/ipod/iPodApplication.java b/java/src/mimis/application/lirc/ipod/iPodApplication.java
index be42ce2..aad0b3d 100644
--- a/java/src/mimis/application/lirc/ipod/iPodApplication.java
+++ b/java/src/mimis/application/lirc/ipod/iPodApplication.java
@@ -1,11 +1,11 @@
package mimis.application.lirc.ipod;
-import mimis.Worker;
import mimis.application.lirc.LircApplication;
import mimis.device.lirc.remote.WC02IPOButton;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
import mimis.value.Action;
+import mimis.worker.Worker;
public class iPodApplication extends LircApplication {
protected static final String TITLE = "iPod";
diff --git a/java/src/mimis/application/mpc/MPCApplication.java b/java/src/mimis/application/mpc/MPCApplication.java
index fee4686..9edf401 100644
--- a/java/src/mimis/application/mpc/MPCApplication.java
+++ b/java/src/mimis/application/mpc/MPCApplication.java
@@ -1,8 +1,8 @@
package mimis.application.mpc;
-import mimis.Worker;
import mimis.application.cmd.windows.WindowsApplication;
import mimis.value.Action;
+import mimis.worker.Worker;
public class MPCApplication extends WindowsApplication {
protected final static String PROGRAM = "mpc-hc.exe";
@@ -68,7 +68,7 @@ public class MPCApplication extends WindowsApplication {
}
}
- public String title() {
+ public String getTitle() {
return TITLE;
}
diff --git a/java/src/mimis/application/robot/RobotApplication.java b/java/src/mimis/application/robot/RobotApplication.java
index 8119096..4a84408 100644
--- a/java/src/mimis/application/robot/RobotApplication.java
+++ b/java/src/mimis/application/robot/RobotApplication.java
@@ -3,11 +3,11 @@ package mimis.application.robot;
import java.awt.AWTException;
import java.awt.Robot;
-import mimis.Application;
import mimis.exception.worker.ActivateException;
import mimis.value.Key;
+import mimis.worker.Component;
-public class RobotApplication extends Application {
+public class RobotApplication extends Component {
protected Robot robot;
public RobotApplication(String title) {
diff --git a/java/src/mimis/application/vlc/VLCApplication.java b/java/src/mimis/application/vlc/VLCApplication.java
index 2ad1809..48871ab 100644
--- a/java/src/mimis/application/vlc/VLCApplication.java
+++ b/java/src/mimis/application/vlc/VLCApplication.java
@@ -7,7 +7,6 @@ import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import mimis.Worker;
import mimis.application.cmd.CMDApplication;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
@@ -15,6 +14,7 @@ import mimis.util.Native;
import mimis.value.Action;
import mimis.value.Amount;
import mimis.value.Registry;
+import mimis.worker.Worker;
public class VLCApplication extends CMDApplication {
protected final static Registry REGISTRY = Registry.CLASSES_ROOT;
@@ -151,7 +151,7 @@ public class VLCApplication extends CMDApplication {
return (muted = !muted) ? 0 : volume;
}
- public String title() {
+ public String getTitle() {
return TITLE;
}
diff --git a/java/src/mimis/device/Device.java b/java/src/mimis/device/Device.java
new file mode 100644
index 0000000..42d01c5
--- /dev/null
+++ b/java/src/mimis/device/Device.java
@@ -0,0 +1,5 @@
+package mimis.device;
+
+public interface Device {
+
+}
diff --git a/java/src/mimis/device/javainput/JavaInputDevice.java b/java/src/mimis/device/javainput/JavaInputDevice.java
index ff9106b..7f8e726 100644
--- a/java/src/mimis/device/javainput/JavaInputDevice.java
+++ b/java/src/mimis/device/javainput/JavaInputDevice.java
@@ -1,22 +1,22 @@
package mimis.device.javainput;
import mimis.Button;
-import mimis.Device;
import mimis.exception.ButtonException;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.button.UnknownDirectionException;
import mimis.exception.device.DeviceNotFoundException;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
-import mimis.sequence.state.Press;
-import mimis.sequence.state.Release;
+import mimis.input.state.Press;
+import mimis.input.state.Release;
+import mimis.worker.Component;
import de.hardcode.jxinput.JXInputDevice;
import de.hardcode.jxinput.JXInputManager;
import de.hardcode.jxinput.event.JXInputAxisEvent;
import de.hardcode.jxinput.event.JXInputButtonEvent;
import de.hardcode.jxinput.event.JXInputDirectionalEvent;
-public abstract class JavaInputDevice extends Device {
+public abstract class JavaInputDevice extends Component {
protected String name;
public JavaInputDevice(String title, String name) {
diff --git a/java/src/mimis/device/javainput/JavaInputListener.java b/java/src/mimis/device/javainput/JavaInputListener.java
index 34c4b89..f439d5e 100644
--- a/java/src/mimis/device/javainput/JavaInputListener.java
+++ b/java/src/mimis/device/javainput/JavaInputListener.java
@@ -3,8 +3,8 @@ package mimis.device.javainput;
import java.util.LinkedList;
import java.util.Queue;
-import mimis.Worker;
import mimis.exception.ButtonException;
+import mimis.worker.Worker;
import de.hardcode.jxinput.Button;
import de.hardcode.jxinput.Directional;
import de.hardcode.jxinput.JXInputDevice;
diff --git a/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java b/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java
index 54d4b37..c6a8572 100644
--- a/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java
+++ b/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java
@@ -13,18 +13,18 @@ public class Extreme3DDevice extends JavaInputDevice {
protected static final String TITLE = "Extreme 3D";
protected static final String NAME = "Logitech Extreme 3D";
- protected static Extreme3DEventMapCycle eventMapCycle;
+ protected static Extreme3DTaskMapCycle taskMapCycle;
public Extreme3DDevice() {
super(TITLE, NAME);
- eventMapCycle = new Extreme3DEventMapCycle();
+ taskMapCycle = new Extreme3DTaskMapCycle();
}
protected void activate() throws ActivateException {
super.activate();
- add(eventMapCycle.mimis);
- add(eventMapCycle.player);
- add(eventMapCycle.like);
+ add(taskMapCycle.mimis);
+ add(taskMapCycle.player);
+ add(taskMapCycle.like);
}
protected Button getButton(JXInputButtonEvent event) throws UnknownButtonException {
diff --git a/java/src/mimis/device/javainput/extreme3d/Extreme3DEventMapCycle.java b/java/src/mimis/device/javainput/extreme3d/Extreme3DEventMapCycle.java
deleted file mode 100644
index 9c3a64d..0000000
--- a/java/src/mimis/device/javainput/extreme3d/Extreme3DEventMapCycle.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package mimis.device.javainput.extreme3d;
-
-import mimis.device.EventMapCycle;
-import mimis.device.javainput.DirectionButton;
-import mimis.event.Task;
-import mimis.sequence.EventMap;
-import mimis.sequence.state.Press;
-import mimis.value.Action;
-import mimis.value.Target;
-
-public class Extreme3DEventMapCycle extends EventMapCycle {
- protected static final long serialVersionUID = 1L;
-
- public EventMap mimis, player, like;
-
- public Extreme3DEventMapCycle() {
- /* Mimis */
- mimis = new EventMap();
- mimis.add(
- new Press(Extreme3DButton.SEVEN),
- new Task(Target.MIMIS, Action.PREVIOUS));
- mimis.add(
- new Press(Extreme3DButton.EIGHT),
- new Task(Target.MIMIS, Action.NEXT));
- add(mimis);
-
- /* Player */
- player = new EventMap();
- player.add(
- new Press(Extreme3DButton.ONE),
- new Task(Target.APPLICATION, Action.PLAY));
- player.add(
- new Press(Extreme3DButton.TWO),
- new Task(Target.APPLICATION, Action.MUTE));
- player.add(
- new Press(Extreme3DButton.NINE),
- new Task(Target.APPLICATION, Action.SHUFFLE));
- player.add(
- new Press(Extreme3DButton.TEN),
- new Task(Target.APPLICATION, Action.REPEAT));
- player.add(
- new Press(Extreme3DButton.SIX),
- new Task(Target.APPLICATION, Action.NEXT));
- player.add(
- new Press(Extreme3DButton.FOUR),
- new Task(Target.APPLICATION, Action.PREVIOUS));
- player.add(
- new Press(Extreme3DButton.FIVE),
- new Task(Target.APPLICATION, Action.FORWARD));
- player.add(
- new Press(Extreme3DButton.THREE),
- new Task(Target.APPLICATION, Action.REWIND));
- player.add(
- new Press(DirectionButton.SOUTH),
- new Task(Target.APPLICATION, Action.VOLUME_DOWN));
- player.add(
- new Press(DirectionButton.NORTH),
- new Task(Target.APPLICATION, Action.VOLUME_UP));
- add(player);
-
- like = new EventMap();
- like.add(
- new Press(Extreme3DButton.ELEVEN),
- new Task(Target.APPLICATION, Action.LIKE));
- like.add(
- new Press(Extreme3DButton.TWELVE),
- new Task(Target.APPLICATION, Action.DISLIKE));
- add(like);
- }
-}
diff --git a/java/src/mimis/device/javainput/extreme3d/Extreme3DTaskMapCycle.java b/java/src/mimis/device/javainput/extreme3d/Extreme3DTaskMapCycle.java
new file mode 100644
index 0000000..0fd6528
--- /dev/null
+++ b/java/src/mimis/device/javainput/extreme3d/Extreme3DTaskMapCycle.java
@@ -0,0 +1,70 @@
+package mimis.device.javainput.extreme3d;
+
+import mimis.device.javainput.DirectionButton;
+import mimis.input.Task;
+import mimis.input.state.Press;
+import mimis.state.TaskMap;
+import mimis.state.TaskMapCycle;
+import mimis.value.Action;
+import mimis.value.Target;
+
+public class Extreme3DTaskMapCycle extends TaskMapCycle {
+ protected static final long serialVersionUID = 1L;
+
+ public TaskMap mimis, player, like;
+
+ public Extreme3DTaskMapCycle() {
+ /* Mimis */
+ mimis = new TaskMap();
+ mimis.add(
+ new Press(Extreme3DButton.SEVEN),
+ new Task(Action.PREVIOUS, Target.MAIN));
+ mimis.add(
+ new Press(Extreme3DButton.EIGHT),
+ new Task(Action.NEXT, Target.MAIN));
+ add(mimis);
+
+ /* Player */
+ player = new TaskMap();
+ player.add(
+ new Press(Extreme3DButton.ONE),
+ new Task(Action.PLAY, Target.CURRENT));
+ player.add(
+ new Press(Extreme3DButton.TWO),
+ new Task(Action.MUTE, Target.CURRENT));
+ player.add(
+ new Press(Extreme3DButton.NINE),
+ new Task(Action.SHUFFLE, Target.CURRENT));
+ player.add(
+ new Press(Extreme3DButton.TEN),
+ new Task(Action.REPEAT, Target.CURRENT));
+ player.add(
+ new Press(Extreme3DButton.SIX),
+ new Task(Action.NEXT, Target.CURRENT));
+ player.add(
+ new Press(Extreme3DButton.FOUR),
+ new Task(Action.PREVIOUS, Target.CURRENT));
+ player.add(
+ new Press(Extreme3DButton.FIVE),
+ new Task(Action.FORWARD, Target.CURRENT));
+ player.add(
+ new Press(Extreme3DButton.THREE),
+ new Task(Action.REWIND, Target.CURRENT));
+ player.add(
+ new Press(DirectionButton.SOUTH),
+ new Task(Action.VOLUME_DOWN, Target.CURRENT));
+ player.add(
+ new Press(DirectionButton.NORTH),
+ new Task(Action.VOLUME_UP, Target.CURRENT));
+ add(player);
+
+ like = new TaskMap();
+ like.add(
+ new Press(Extreme3DButton.ELEVEN),
+ new Task(Action.LIKE, Target.CURRENT));
+ like.add(
+ new Press(Extreme3DButton.TWELVE),
+ new Task(Action.DISLIKE, Target.CURRENT));
+ add(like);
+ }
+}
diff --git a/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java b/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java
index e9ebe6f..12e3a70 100644
--- a/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java
+++ b/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java
@@ -13,18 +13,18 @@ public class RumblepadDevice extends JavaInputDevice {
protected static final String TITLE = "RumblePad";
protected static final String NAME = "Logitech RumblePad 2 USB";
- protected static RumblepadEventMapCycle eventMapCycle;
+ protected static RumblepadTaskMapCycle taskMapCycle;
public RumblepadDevice() {
super(TITLE, NAME);
- eventMapCycle = new RumblepadEventMapCycle();
+ taskMapCycle = new RumblepadTaskMapCycle();
}
protected void activate() throws ActivateException {
super.activate();
- add(eventMapCycle.mimis);
- add(eventMapCycle.player);
- add(eventMapCycle.like);
+ add(taskMapCycle.mimis);
+ add(taskMapCycle.player);
+ add(taskMapCycle.like);
}
protected Button getButton(JXInputButtonEvent event) throws UnknownButtonException {
diff --git a/java/src/mimis/device/javainput/rumblepad/RumblepadEventMapCycle.java b/java/src/mimis/device/javainput/rumblepad/RumblepadEventMapCycle.java
deleted file mode 100644
index a3fe7f3..0000000
--- a/java/src/mimis/device/javainput/rumblepad/RumblepadEventMapCycle.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package mimis.device.javainput.rumblepad;
-
-import mimis.device.EventMapCycle;
-import mimis.device.javainput.DirectionButton;
-import mimis.event.Task;
-import mimis.sequence.EventMap;
-import mimis.sequence.state.Press;
-import mimis.value.Action;
-import mimis.value.Target;
-
-public class RumblepadEventMapCycle extends EventMapCycle {
- protected static final long serialVersionUID = 1L;
-
- public EventMap mimis, player, like;
-
- public RumblepadEventMapCycle() {
- /* Mimis */
- mimis = new EventMap();
- mimis.add(
- new Press(RumblepadButton.ONE),
- new Task(Target.MIMIS, Action.PREVIOUS));
- mimis.add(
- new Press(RumblepadButton.THREE),
- new Task(Target.MIMIS, Action.NEXT));
- add(mimis);
-
- /* Player */
- player = new EventMap();
- player.add(
- new Press(DirectionButton.WEST),
- new Task(Target.APPLICATION, Action.PLAY));
- player.add(
- new Press(DirectionButton.EAST),
- new Task(Target.APPLICATION, Action.MUTE));
- player.add(
- new Press(RumblepadButton.NINE),
- new Task(Target.APPLICATION, Action.SHUFFLE));
- player.add(
- new Press(RumblepadButton.TEN),
- new Task(Target.APPLICATION, Action.REPEAT));
- player.add(
- new Press(RumblepadButton.EIGHT),
- new Task(Target.APPLICATION, Action.NEXT));
- player.add(
- new Press(RumblepadButton.SIX),
- new Task(Target.APPLICATION, Action.PREVIOUS));
- player.add(
- new Press(RumblepadButton.SEVEN),
- new Task(Target.APPLICATION, Action.FORWARD));
- player.add(
- new Press(RumblepadButton.FIVE),
- new Task(Target.APPLICATION, Action.REWIND));
- player.add(
- new Press(DirectionButton.SOUTH),
- new Task(Target.APPLICATION, Action.VOLUME_DOWN));
- player.add(
- new Press(DirectionButton.NORTH),
- new Task(Target.APPLICATION, Action.VOLUME_UP));
- add(player);
-
- like = new EventMap();
- like.add(
- new Press(RumblepadButton.FOUR),
- new Task(Target.APPLICATION, Action.LIKE));
- like.add(
- new Press(RumblepadButton.TWO),
- new Task(Target.APPLICATION, Action.DISLIKE));
- add(like);
- }
-}
diff --git a/java/src/mimis/device/javainput/rumblepad/RumblepadTaskMapCycle.java b/java/src/mimis/device/javainput/rumblepad/RumblepadTaskMapCycle.java
new file mode 100644
index 0000000..8c3f15a
--- /dev/null
+++ b/java/src/mimis/device/javainput/rumblepad/RumblepadTaskMapCycle.java
@@ -0,0 +1,70 @@
+package mimis.device.javainput.rumblepad;
+
+import mimis.device.javainput.DirectionButton;
+import mimis.input.Task;
+import mimis.input.state.Press;
+import mimis.state.TaskMap;
+import mimis.state.TaskMapCycle;
+import mimis.value.Action;
+import mimis.value.Target;
+
+public class RumblepadTaskMapCycle extends TaskMapCycle {
+ protected static final long serialVersionUID = 1L;
+
+ public TaskMap mimis, player, like;
+
+ public RumblepadTaskMapCycle() {
+ /* Mimis */
+ mimis = new TaskMap();
+ mimis.add(
+ new Press(RumblepadButton.ONE),
+ new Task(Action.PREVIOUS, Target.MAIN));
+ mimis.add(
+ new Press(RumblepadButton.THREE),
+ new Task(Action.NEXT, Target.MAIN));
+ add(mimis);
+
+ /* Player */
+ player = new TaskMap();
+ player.add(
+ new Press(DirectionButton.WEST),
+ new Task(Action.PLAY, Target.CURRENT));
+ player.add(
+ new Press(DirectionButton.EAST),
+ new Task(Action.MUTE, Target.CURRENT));
+ player.add(
+ new Press(RumblepadButton.NINE),
+ new Task(Action.SHUFFLE, Target.CURRENT));
+ player.add(
+ new Press(RumblepadButton.TEN),
+ new Task(Action.REPEAT, Target.CURRENT));
+ player.add(
+ new Press(RumblepadButton.EIGHT),
+ new Task(Action.NEXT, Target.CURRENT));
+ player.add(
+ new Press(RumblepadButton.SIX),
+ new Task(Action.PREVIOUS, Target.CURRENT));
+ player.add(
+ new Press(RumblepadButton.SEVEN),
+ new Task(Action.FORWARD, Target.CURRENT));
+ player.add(
+ new Press(RumblepadButton.FIVE),
+ new Task(Action.REWIND, Target.CURRENT));
+ player.add(
+ new Press(DirectionButton.SOUTH),
+ new Task(Action.VOLUME_DOWN, Target.CURRENT));
+ player.add(
+ new Press(DirectionButton.NORTH),
+ new Task(Action.VOLUME_UP, Target.CURRENT));
+ add(player);
+
+ like = new TaskMap();
+ like.add(
+ new Press(RumblepadButton.FOUR),
+ new Task(Action.LIKE, Target.CURRENT));
+ like.add(
+ new Press(RumblepadButton.TWO),
+ new Task(Action.DISLIKE, Target.CURRENT));
+ add(like);
+ }
+}
diff --git a/java/src/mimis/device/jintellitype/Hotkey.java b/java/src/mimis/device/jintellitype/Hotkey.java
index a0bfe9b..1f3d877 100644
--- a/java/src/mimis/device/jintellitype/Hotkey.java
+++ b/java/src/mimis/device/jintellitype/Hotkey.java
@@ -9,6 +9,8 @@ import com.melloware.jintellitype.JIntellitype;
public class Hotkey implements Button {
+ protected static final long serialVersionUID = 1L;
+
protected static ArrayList hotkeyList;
protected static JIntellitype jit;
diff --git a/java/src/mimis/device/jintellitype/JIntellitypeDevice.java b/java/src/mimis/device/jintellitype/JIntellitypeDevice.java
index 8bc97c8..02d609d 100644
--- a/java/src/mimis/device/jintellitype/JIntellitypeDevice.java
+++ b/java/src/mimis/device/jintellitype/JIntellitypeDevice.java
@@ -2,21 +2,21 @@ package mimis.device.jintellitype;
import java.util.ArrayList;
-import mimis.Device;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
-import mimis.sequence.state.Press;
-import mimis.sequence.state.Release;
+import mimis.input.state.Press;
+import mimis.input.state.Release;
+import mimis.worker.Component;
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.IntellitypeListener;
import com.melloware.jintellitype.JIntellitype;
-public class JIntellitypeDevice extends Device implements HotkeyListener, IntellitypeListener {
+public class JIntellitypeDevice extends Component implements HotkeyListener, IntellitypeListener {
protected static final String TITLE = "Keyboard";
- protected JIntellitypeEventMapCycle eventMapCycle;
+ protected JIntellitypeTaskMapCycle taskMapCycle;
protected ArrayList hotkeyList;
protected JIntellitype jit;
@@ -25,15 +25,15 @@ public class JIntellitypeDevice extends Device implements HotkeyListener, Intell
hotkeyList = new ArrayList();
jit = JIntellitype.getInstance();
Hotkey.initialise(hotkeyList, jit);
- eventMapCycle = new JIntellitypeEventMapCycle();
+ taskMapCycle = new JIntellitypeTaskMapCycle();
}
protected void activate() throws ActivateException {
super.activate();
jit.addHotKeyListener(this);
jit.addIntellitypeListener(this);
- add(eventMapCycle.mimis);
- add(eventMapCycle.player);
+ add(taskMapCycle.mimis);
+ add(taskMapCycle.player);
}
public void onIntellitype(int command) {
diff --git a/java/src/mimis/device/jintellitype/JIntellitypeEventMapCycle.java b/java/src/mimis/device/jintellitype/JIntellitypeTaskMapCycle.java
similarity index 51%
rename from java/src/mimis/device/jintellitype/JIntellitypeEventMapCycle.java
rename to java/src/mimis/device/jintellitype/JIntellitypeTaskMapCycle.java
index 2627025..6bb7cca 100644
--- a/java/src/mimis/device/jintellitype/JIntellitypeEventMapCycle.java
+++ b/java/src/mimis/device/jintellitype/JIntellitypeTaskMapCycle.java
@@ -1,45 +1,45 @@
package mimis.device.jintellitype;
-import mimis.device.EventMapCycle;
-import mimis.event.Task;
-import mimis.sequence.EventMap;
+import mimis.input.Task;
+import mimis.state.TaskMap;
+import mimis.state.TaskMapCycle;
import mimis.value.Action;
import mimis.value.Key;
import mimis.value.Target;
-public class JIntellitypeEventMapCycle extends EventMapCycle {
+public class JIntellitypeTaskMapCycle extends TaskMapCycle {
protected static final long serialVersionUID = 1L;
- public EventMap mimis, player;
+ public TaskMap mimis, player;
- public JIntellitypeEventMapCycle() {
+ public JIntellitypeTaskMapCycle() {
/* Mimis */
- mimis = new EventMap();
+ mimis = new TaskMap();
mimis.add(
new Hotkey(Key.PRIOR),
- new Task(Target.MIMIS, Action.PREVIOUS));
+ new Task(Action.PREVIOUS, Target.MAIN));
mimis.add(
new Hotkey(Key.NEXT),
- new Task(Target.MIMIS, Action.NEXT));
+ new Task(Action.NEXT, Target.MAIN));
add(mimis);
/* Player */
- player = new EventMap();
+ player = new TaskMap();
player.add(
CommandButton.VOLUME_DOWN,
- new Task(Target.APPLICATIONS, Action.VOLUME_DOWN));
+ new Task(Action.VOLUME_DOWN, Target.APPLICATIONS));
player.add(
CommandButton.VOLUME_UP,
- new Task(Target.APPLICATIONS, Action.VOLUME_UP));
+ new Task(Action.VOLUME_UP, Target.APPLICATIONS));
player.add(
new Hotkey(Modifier.CTRL | Modifier.WIN, 'x'),
- new Task(Target.MIMIS, Action.EXIT));
+ new Task(Action.EXIT, Target.MAIN));
player.add(
new Hotkey(Modifier.CTRL | Modifier.SHIFT | Modifier.WIN, 'n'),
- new Task(Target.APPLICATION, Action.NEXT));
+ new Task(Action.NEXT, Target.CURRENT));
player.add(
new Hotkey(Modifier.CTRL | Modifier.SHIFT | Modifier.WIN, 'p'),
- new Task(Target.APPLICATION, Action.PREVIOUS));
+ new Task(Action.PREVIOUS, Target.CURRENT));
add(player);
}
}
diff --git a/java/src/mimis/device/jintellitype/Modifier.java b/java/src/mimis/device/jintellitype/Modifier.java
index 3ff5a6b..c4ef6d9 100644
--- a/java/src/mimis/device/jintellitype/Modifier.java
+++ b/java/src/mimis/device/jintellitype/Modifier.java
@@ -4,8 +4,9 @@ import mimis.Button;
import com.melloware.jintellitype.JIntellitype;
-
public class Modifier implements Button {
+ protected static final long serialVersionUID = 1L;
+
public static final int
ALT = JIntellitype.MOD_ALT,
CTRL = JIntellitype.MOD_CONTROL,
diff --git a/java/src/mimis/device/lirc/LircDevice.java b/java/src/mimis/device/lirc/LircDevice.java
index 01e85a1..014777d 100644
--- a/java/src/mimis/device/lirc/LircDevice.java
+++ b/java/src/mimis/device/lirc/LircDevice.java
@@ -1,43 +1,47 @@
package mimis.device.lirc;
import mimis.Button;
-import mimis.Device;
+import mimis.device.lirc.button.ColorButton;
+import mimis.device.lirc.button.NumberButton;
import mimis.device.lirc.remote.DenonRC176Button;
import mimis.device.lirc.remote.PhiliphsRCLE011Button;
import mimis.device.lirc.remote.SamsungBN5901015AButton;
import mimis.exception.worker.ActivateException;
import mimis.exception.worker.DeactivateException;
-import mimis.sequence.state.Press;
-import mimis.sequence.state.Release;
+import mimis.input.state.Press;
+import mimis.input.state.Release;
+import mimis.parser.ParserInput;
import mimis.util.Multiplexer;
import mimis.util.Native;
import mimis.util.multiplexer.SignalListener;
+import mimis.value.Action;
import mimis.value.Signal;
+import mimis.worker.Component;
-public class LircDevice extends Device implements LircButtonListener, SignalListener {
+public class LircDevice extends Component implements LircButtonListener, SignalListener