From fe8950ba166c4018a782c0ebf1df9c93710778c2 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Thu, 2 Jun 2011 11:05:22 +0000 Subject: [PATCH] Pakket pm naar mimis hernoemd. --- java/src/mimis/Application.java | 25 +++ java/src/mimis/Button.java | 3 + java/src/mimis/Client.java | 54 +++++ java/src/mimis/Device.java | 92 ++++++++ java/src/mimis/Event.java | 33 +++ java/src/mimis/Exitable.java | 5 + java/src/mimis/GUI.java | 83 +++++++ java/src/mimis/Macro.java | 49 ++++ java/src/mimis/Main.java | 60 +++++ java/src/mimis/Manager.java | 63 ++++++ java/src/mimis/Mimis.java | 87 +++++++ java/src/mimis/Test.java | 18 ++ java/src/mimis/Worker.java | 93 ++++++++ .../mimis/application/cmd/CMDApplication.java | 52 +++++ .../cmd/windows/WindowsApplication.java | 61 +++++ .../gomplayer/GomPlayerApplication.java | 38 ++++ .../cmd/windows/winamp/WinampApplication.java | 120 ++++++++++ .../cmd/windows/wmp/WMPApplication.java | 51 +++++ .../application/itunes/iTunesApplication.java | 131 +++++++++++ .../mimis/application/mpc/MPCApplication.java | 53 +++++ .../mimis/application/vlc/VLCApplication.java | 102 +++++++++ .../device/javainput/DirectionButton.java | 39 ++++ .../device/javainput/JavaInputDevice.java | 82 +++++++ .../device/javainput/JavaInputListener.java | 110 +++++++++ .../javainput/extreme3d/Extreme3DButton.java | 43 ++++ .../javainput/extreme3d/Extreme3DDevice.java | 50 +++++ .../javainput/rumblepad/RumblepadButton.java | 41 ++++ .../javainput/rumblepad/RumblepadDevice.java | 62 +++++ .../device/jintellitype/CommandButton.java | 74 ++++++ .../src/mimis/device/jintellitype/Hotkey.java | 41 ++++ .../jintellitype/JIntellitypeDevice.java | 91 ++++++++ .../mimis/device/jintellitype/Modifier.java | 24 ++ java/src/mimis/device/lirc/LircButton.java | 7 + .../mimis/device/lirc/LircButtonListener.java | 5 + java/src/mimis/device/lirc/LircDevice.java | 43 ++++ java/src/mimis/device/lirc/LircService.java | 121 ++++++++++ .../mimis/device/lirc/button/DenonRC176.java | 21 ++ .../lirc/button/PhiliphsRCLE011Button.java | 63 ++++++ .../mimis/device/network/NetworkDevice.java | 137 +++++++++++ java/src/mimis/device/panel/Panel.java | 212 ++++++++++++++++++ java/src/mimis/device/panel/PanelButton.java | 18 ++ .../device/panel/PanelButtonListener.java | 6 + java/src/mimis/device/panel/PanelDevice.java | 71 ++++++ .../src/mimis/device/player/PlayerDevice.java | 23 ++ .../mimis/device/wiimote/WiimoteButton.java | 38 ++++ .../mimis/device/wiimote/WiimoteDevice.java | 188 ++++++++++++++++ .../mimis/device/wiimote/WiimoteService.java | 91 ++++++++ .../device/wiimote/gesture/GestureDevice.java | 80 +++++++ .../device/wiimote/gesture/event/Close.java | 24 ++ .../wiimote/gesture/event/Recognize.java | 24 ++ .../device/wiimote/gesture/event/Train.java | 24 ++ java/src/mimis/event/EventHandler.java | 45 ++++ java/src/mimis/event/EventListener.java | 47 ++++ java/src/mimis/event/EventRouter.java | 27 +++ java/src/mimis/event/Feedback.java | 10 + java/src/mimis/event/Task.java | 22 ++ java/src/mimis/event/router/GlobalRouter.java | 57 +++++ java/src/mimis/event/router/LocalRouter.java | 27 +++ java/src/mimis/event/task/Continuous.java | 44 ++++ java/src/mimis/event/task/Dynamic.java | 24 ++ java/src/mimis/event/task/Stopper.java | 16 ++ .../mimis/exception/ApplicationException.java | 5 + java/src/mimis/exception/ButtonException.java | 5 + java/src/mimis/exception/DeviceException.java | 5 + java/src/mimis/exception/EventException.java | 5 + .../src/mimis/exception/HandlerException.java | 5 + .../mimis/exception/InitialiseException.java | 5 + java/src/mimis/exception/MacroException.java | 9 + java/src/mimis/exception/TaskException.java | 5 + java/src/mimis/exception/WorkerException.java | 5 + .../application/ApplicationExitException.java | 7 + .../ApplicationInitialiseException.java | 7 + .../windows/WindowsApplicationException.java | 7 + .../button/UnknownButtonException.java | 7 + .../button/UnknownDirectionException.java | 7 + .../exception/device/DeviceExitException.java | 7 + .../device/DeviceInitialiseException.java | 7 + .../device/DeviceNotFoundException.java | 5 + .../device/JavaInputDeviceException.java | 7 + .../JavaInputDeviceSpecificException.java | 7 + .../exception/event/SpreaderException.java | 7 + .../event/router/GlobalRouterException.java | 7 + .../exception/macro/StateOrderException.java | 11 + .../mimis/exception/task/ActionException.java | 7 + .../task/TaskNotSupportedException.java | 5 + .../action/ActionDeserializeException.java | 7 + .../exception/util/SendCommandException.java | 7 + .../exception/util/SendKeyException.java | 7 + .../worker/AlreadyActiveException.java | 7 + .../worker/AlreadyRunningException.java | 7 + .../exception/worker/NotActiveException.java | 7 + .../exception/worker/NotRunningException.java | 7 + .../exception/worker/StartException.java | 7 + java/src/mimis/macro/Active.java | 37 +++ java/src/mimis/macro/Sequence.java | 17 ++ java/src/mimis/macro/SequenceListener.java | 63 ++++++ java/src/mimis/macro/State.java | 19 ++ java/src/mimis/macro/state/Hold.java | 10 + java/src/mimis/macro/state/Press.java | 10 + java/src/mimis/macro/state/Release.java | 10 + java/src/mimis/manager/SelectButton.java | 45 ++++ java/src/mimis/manager/Titled.java | 5 + java/src/mimis/todo/TODO | 46 ++++ java/src/mimis/util/ArrayCycle.java | 56 +++++ java/src/mimis/util/Multiplexer.java | 13 ++ java/src/mimis/util/Native.java | 73 ++++++ java/src/mimis/util/VBScript.java | 52 +++++ java/src/mimis/util/Windows.java | 44 ++++ java/src/mimis/util/swing/CycleButton.java | 23 ++ java/src/mimis/util/swing/HoldButton.java | 33 +++ .../mimis/util/swing/HoldButtonListener.java | 6 + java/src/mimis/util/swing/ToggleButton.java | 18 ++ java/src/mimis/value/Action.java | 34 +++ java/src/mimis/value/Command.java | 68 ++++++ java/src/mimis/value/Key.java | 180 +++++++++++++++ java/src/mimis/value/Target.java | 5 + java/src/mimis/value/Type.java | 18 ++ 117 files changed, 4540 insertions(+) create mode 100644 java/src/mimis/Application.java create mode 100644 java/src/mimis/Button.java create mode 100644 java/src/mimis/Client.java create mode 100644 java/src/mimis/Device.java create mode 100644 java/src/mimis/Event.java create mode 100644 java/src/mimis/Exitable.java create mode 100644 java/src/mimis/GUI.java create mode 100644 java/src/mimis/Macro.java create mode 100644 java/src/mimis/Main.java create mode 100644 java/src/mimis/Manager.java create mode 100644 java/src/mimis/Mimis.java create mode 100644 java/src/mimis/Test.java create mode 100644 java/src/mimis/Worker.java create mode 100644 java/src/mimis/application/cmd/CMDApplication.java create mode 100644 java/src/mimis/application/cmd/windows/WindowsApplication.java create mode 100644 java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java create mode 100644 java/src/mimis/application/cmd/windows/winamp/WinampApplication.java create mode 100644 java/src/mimis/application/cmd/windows/wmp/WMPApplication.java create mode 100644 java/src/mimis/application/itunes/iTunesApplication.java create mode 100644 java/src/mimis/application/mpc/MPCApplication.java create mode 100644 java/src/mimis/application/vlc/VLCApplication.java create mode 100644 java/src/mimis/device/javainput/DirectionButton.java create mode 100644 java/src/mimis/device/javainput/JavaInputDevice.java create mode 100644 java/src/mimis/device/javainput/JavaInputListener.java create mode 100644 java/src/mimis/device/javainput/extreme3d/Extreme3DButton.java create mode 100644 java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java create mode 100644 java/src/mimis/device/javainput/rumblepad/RumblepadButton.java create mode 100644 java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java create mode 100644 java/src/mimis/device/jintellitype/CommandButton.java create mode 100644 java/src/mimis/device/jintellitype/Hotkey.java create mode 100644 java/src/mimis/device/jintellitype/JIntellitypeDevice.java create mode 100644 java/src/mimis/device/jintellitype/Modifier.java create mode 100644 java/src/mimis/device/lirc/LircButton.java create mode 100644 java/src/mimis/device/lirc/LircButtonListener.java create mode 100644 java/src/mimis/device/lirc/LircDevice.java create mode 100644 java/src/mimis/device/lirc/LircService.java create mode 100644 java/src/mimis/device/lirc/button/DenonRC176.java create mode 100644 java/src/mimis/device/lirc/button/PhiliphsRCLE011Button.java create mode 100644 java/src/mimis/device/network/NetworkDevice.java create mode 100644 java/src/mimis/device/panel/Panel.java create mode 100644 java/src/mimis/device/panel/PanelButton.java create mode 100644 java/src/mimis/device/panel/PanelButtonListener.java create mode 100644 java/src/mimis/device/panel/PanelDevice.java create mode 100644 java/src/mimis/device/player/PlayerDevice.java create mode 100644 java/src/mimis/device/wiimote/WiimoteButton.java create mode 100644 java/src/mimis/device/wiimote/WiimoteDevice.java create mode 100644 java/src/mimis/device/wiimote/WiimoteService.java create mode 100644 java/src/mimis/device/wiimote/gesture/GestureDevice.java create mode 100644 java/src/mimis/device/wiimote/gesture/event/Close.java create mode 100644 java/src/mimis/device/wiimote/gesture/event/Recognize.java create mode 100644 java/src/mimis/device/wiimote/gesture/event/Train.java create mode 100644 java/src/mimis/event/EventHandler.java create mode 100644 java/src/mimis/event/EventListener.java create mode 100644 java/src/mimis/event/EventRouter.java create mode 100644 java/src/mimis/event/Feedback.java create mode 100644 java/src/mimis/event/Task.java create mode 100644 java/src/mimis/event/router/GlobalRouter.java create mode 100644 java/src/mimis/event/router/LocalRouter.java create mode 100644 java/src/mimis/event/task/Continuous.java create mode 100644 java/src/mimis/event/task/Dynamic.java create mode 100644 java/src/mimis/event/task/Stopper.java create mode 100644 java/src/mimis/exception/ApplicationException.java create mode 100644 java/src/mimis/exception/ButtonException.java create mode 100644 java/src/mimis/exception/DeviceException.java create mode 100644 java/src/mimis/exception/EventException.java create mode 100644 java/src/mimis/exception/HandlerException.java create mode 100644 java/src/mimis/exception/InitialiseException.java create mode 100644 java/src/mimis/exception/MacroException.java create mode 100644 java/src/mimis/exception/TaskException.java create mode 100644 java/src/mimis/exception/WorkerException.java create mode 100644 java/src/mimis/exception/application/ApplicationExitException.java create mode 100644 java/src/mimis/exception/application/ApplicationInitialiseException.java create mode 100644 java/src/mimis/exception/application/windows/WindowsApplicationException.java create mode 100644 java/src/mimis/exception/button/UnknownButtonException.java create mode 100644 java/src/mimis/exception/button/UnknownDirectionException.java create mode 100644 java/src/mimis/exception/device/DeviceExitException.java create mode 100644 java/src/mimis/exception/device/DeviceInitialiseException.java create mode 100644 java/src/mimis/exception/device/DeviceNotFoundException.java create mode 100644 java/src/mimis/exception/device/JavaInputDeviceException.java create mode 100644 java/src/mimis/exception/device/javainput/JavaInputDeviceSpecificException.java create mode 100644 java/src/mimis/exception/event/SpreaderException.java create mode 100644 java/src/mimis/exception/event/router/GlobalRouterException.java create mode 100644 java/src/mimis/exception/macro/StateOrderException.java create mode 100644 java/src/mimis/exception/task/ActionException.java create mode 100644 java/src/mimis/exception/task/TaskNotSupportedException.java create mode 100644 java/src/mimis/exception/task/action/ActionDeserializeException.java create mode 100644 java/src/mimis/exception/util/SendCommandException.java create mode 100644 java/src/mimis/exception/util/SendKeyException.java create mode 100644 java/src/mimis/exception/worker/AlreadyActiveException.java create mode 100644 java/src/mimis/exception/worker/AlreadyRunningException.java create mode 100644 java/src/mimis/exception/worker/NotActiveException.java create mode 100644 java/src/mimis/exception/worker/NotRunningException.java create mode 100644 java/src/mimis/exception/worker/StartException.java create mode 100644 java/src/mimis/macro/Active.java create mode 100644 java/src/mimis/macro/Sequence.java create mode 100644 java/src/mimis/macro/SequenceListener.java create mode 100644 java/src/mimis/macro/State.java create mode 100644 java/src/mimis/macro/state/Hold.java create mode 100644 java/src/mimis/macro/state/Press.java create mode 100644 java/src/mimis/macro/state/Release.java create mode 100644 java/src/mimis/manager/SelectButton.java create mode 100644 java/src/mimis/manager/Titled.java create mode 100644 java/src/mimis/todo/TODO create mode 100644 java/src/mimis/util/ArrayCycle.java create mode 100644 java/src/mimis/util/Multiplexer.java create mode 100644 java/src/mimis/util/Native.java create mode 100644 java/src/mimis/util/VBScript.java create mode 100644 java/src/mimis/util/Windows.java create mode 100644 java/src/mimis/util/swing/CycleButton.java create mode 100644 java/src/mimis/util/swing/HoldButton.java create mode 100644 java/src/mimis/util/swing/HoldButtonListener.java create mode 100644 java/src/mimis/util/swing/ToggleButton.java create mode 100644 java/src/mimis/value/Action.java create mode 100644 java/src/mimis/value/Command.java create mode 100644 java/src/mimis/value/Key.java create mode 100644 java/src/mimis/value/Target.java create mode 100644 java/src/mimis/value/Type.java diff --git a/java/src/mimis/Application.java b/java/src/mimis/Application.java new file mode 100644 index 0000000..d27f488 --- /dev/null +++ b/java/src/mimis/Application.java @@ -0,0 +1,25 @@ +package mimis; + +import mimis.event.EventHandler; +import mimis.manager.Titled; + +public abstract class Application extends EventHandler implements Titled, Exitable { + protected String title; + protected boolean active; + + public Application(String title) { + this.title = title; + active = false; + } + + public String title() { + return title; + } + + public void exit() { + if (active()) { + deactivate(); + } + stop(); + } +} \ No newline at end of file diff --git a/java/src/mimis/Button.java b/java/src/mimis/Button.java new file mode 100644 index 0000000..0fbafb8 --- /dev/null +++ b/java/src/mimis/Button.java @@ -0,0 +1,3 @@ +package mimis; + +public interface Button {} diff --git a/java/src/mimis/Client.java b/java/src/mimis/Client.java new file mode 100644 index 0000000..b5866f1 --- /dev/null +++ b/java/src/mimis/Client.java @@ -0,0 +1,54 @@ +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.player.PlayerDevice; +import mimis.device.wiimote.WiimoteDevice; +import mimis.event.EventRouter; +import mimis.event.router.GlobalRouter; +import mimis.exception.event.router.GlobalRouterException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + + +public class Client { + protected Log log = LogFactory.getLog(getClass()); + + public static final String IP = "127.0.0.1"; + public static final int PORT = 6789; + + protected EventRouter eventRouter; + protected Device[] deviceArray; + + public Client() throws GlobalRouterException { + this(IP, PORT); + } + + public Client(String ip, int port) throws GlobalRouterException { + eventRouter = new GlobalRouter(ip, port); + deviceArray = new Device[] { + new LircDevice(), + new WiimoteDevice(), + new PanelDevice(), + new JIntellitypeDevice(), + new PlayerDevice(), + new RumblepadDevice(), + new Extreme3DDevice(), + new NetworkDevice()}; + } + + public void start() { + log.debug("Client"); + Mimis mimis = new Mimis(eventRouter, deviceArray); + mimis.start(); + } + + public static void main(String[] args) { + new Main().start(); + } +} diff --git a/java/src/mimis/Device.java b/java/src/mimis/Device.java new file mode 100644 index 0000000..f4b05a9 --- /dev/null +++ b/java/src/mimis/Device.java @@ -0,0 +1,92 @@ +package mimis; + +import mimis.event.EventHandler; +import mimis.event.Task; +import mimis.event.task.Continuous; +import mimis.event.task.Stopper; +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 { + protected String title; + protected boolean active; + protected SequenceListener sequenceListener; + + static { + SequenceListener.initialise(eventRouter); + } + + public Device(String title) { + this.title = title; + active = false; + sequenceListener = new SequenceListener(this); + } + + /* Register macro's */ + protected void add(Sequence sequence, Task task) { + sequenceListener.add(sequence, task); + } + + protected void add(State state, Task task) { + add(new Sequence(state), task); + } + + protected void add(Press press, Task task, boolean macro) { + if (macro) { + add(new Macro(press), task); + } else { + add((State) press, task); + } + } + + protected void add(Press press, Task task) { + 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) { + sequenceListener.add(state); + } + + public String title() { + return title; + } + + public void exit() { + if (active()) { + deactivate(); + } + stop(); + } +} diff --git a/java/src/mimis/Event.java b/java/src/mimis/Event.java new file mode 100644 index 0000000..d7eb0d7 --- /dev/null +++ b/java/src/mimis/Event.java @@ -0,0 +1,33 @@ +package mimis; + +import mimis.event.EventListener; +import mimis.value.Target; + +public class Event { + 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/Exitable.java b/java/src/mimis/Exitable.java new file mode 100644 index 0000000..86d5ea6 --- /dev/null +++ b/java/src/mimis/Exitable.java @@ -0,0 +1,5 @@ +package mimis; + +public interface Exitable { + public void exit(); +} diff --git a/java/src/mimis/GUI.java b/java/src/mimis/GUI.java new file mode 100644 index 0000000..5a1d398 --- /dev/null +++ b/java/src/mimis/GUI.java @@ -0,0 +1,83 @@ +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 org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class GUI extends JFrame { + protected Log log = LogFactory.getLog(getClass()); + protected static final long serialVersionUID = 1L; + + protected static final String TITLE = "Mimis GUI"; + protected static final String APPLICATION_TITLE = "Applications"; + protected static final String DEVICE_TITLE = "Devices"; + + protected Mimis mimis; + + public GUI(Mimis mimis, Manager applicationManager, Manager deviceManager) { + super(TITLE); + this.mimis = mimis; + createFrame(applicationManager, deviceManager); + } + + protected void createFrame(Manager applicationManager, Manager deviceManager) { + setLayout(new GridLayout(0, 1)); + JPanel controlPanel = createControlPanel(applicationManager, deviceManager); + add(controlPanel); + JPanel feedbackPanel = createFeedbackPanel(); + 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)); + JPanel applicationPanel = createManagerPanel(applicationManager, APPLICATION_TITLE); + controlPanel.add(applicationPanel); + 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 createFeedbackPanel() { + JPanel feedbackPanel = new JPanel(); + TextArea textArea = new TextArea(); + textArea.setEditable(false); + feedbackPanel.add(textArea); + return feedbackPanel; + } + + protected void processWindowEvent(WindowEvent e) { + if (e.getID() == WindowEvent.WINDOW_CLOSING) { + log.debug("Window closing"); + exit(); + mimis.exit(); + } + } + + protected void exit() { + log.debug("Dispose"); + dispose(); + } +} diff --git a/java/src/mimis/Macro.java b/java/src/mimis/Macro.java new file mode 100644 index 0000000..e5e7766 --- /dev/null +++ b/java/src/mimis/Macro.java @@ -0,0 +1,49 @@ +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; + + +public class Macro extends Sequence { + public Macro(Press press) { + Button button = press.getButton(); + this.eventArray = new State[] {press, new Release(button)}; + } + + public Macro(State... eventArray) throws StateOrderException { + ArrayList