From 0fb1a1fb711edfb17346e4be7062095a77b239c9 Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Tue, 8 Feb 2011 21:01:37 +0000 Subject: [PATCH] Rumblepad geimplementeerd, actions toegevoegd en begin gemaakt met iTunes implementatie. Die geeft rare Jacob foutmeldingen over de versie. --- java/src/pm/Action.java | 7 ++- java/src/pm/application/iTunes/iTunes.java | 50 +++++++++++++++++++ .../javainput/rumblepad/RumblepadButton.java | 41 +++++++++++++++ .../javainput/rumblepad/RumblepadDevice.java | 26 +++++++++- .../rumblepad/RumblepadDirection.java | 39 +++++++++++++++ .../pm/device/textinput/TextinputDevice.java | 31 ++++++++++++ 6 files changed, 191 insertions(+), 3 deletions(-) create mode 100644 java/src/pm/application/iTunes/iTunes.java create mode 100644 java/src/pm/device/javainput/rumblepad/RumblepadButton.java create mode 100644 java/src/pm/device/javainput/rumblepad/RumblepadDirection.java create mode 100644 java/src/pm/device/textinput/TextinputDevice.java diff --git a/java/src/pm/Action.java b/java/src/pm/Action.java index bc5bcbc..9fbbffe 100644 --- a/java/src/pm/Action.java +++ b/java/src/pm/Action.java @@ -11,8 +11,11 @@ import pm.exception.action.TargetNotSetException; public enum Action { START ("start"), TEST ("test"), - EXIT ("exit"); - + EXIT ("exit"), + PLAY ("play"), + PAUSE ("pause"), + RESUME ("resume"); + protected String action; protected Target target; diff --git a/java/src/pm/application/iTunes/iTunes.java b/java/src/pm/application/iTunes/iTunes.java new file mode 100644 index 0000000..7ac1c32 --- /dev/null +++ b/java/src/pm/application/iTunes/iTunes.java @@ -0,0 +1,50 @@ +package pm.application.iTunes; + +import pm.application.Application; + +import com.jacob.activeX.ActiveXComponent; +import com.jacob.com.ComThread; +import com.jacob.com.Dispatch; + +public class iTunes extends Application{ + + Dispatch iTunesController; + + public iTunes() { + connect(); + } + + protected void connect() { + try { + ComThread.InitMTA(true); + ActiveXComponent iTunesCom = new ActiveXComponent("iTunes.Application"); + iTunesController = (Dispatch)iTunesCom.getObject(); + } catch (Exception e) { } // Ignore JacobVersion exception + } + + public void play() { + System.out.println("play"); + invoke("play"); + } + + public void pause() { + invoke("pause"); + } + + public void resume() { + invoke("resume"); + } + + public void exit() { + ComThread.Release(); + } + + protected void invoke(String invocation) { + Dispatch.call(iTunesController, invocation); + } + + public static void main(String argv[]) throws Exception { + new iTunes(); + } + +} \ No newline at end of file diff --git a/java/src/pm/device/javainput/rumblepad/RumblepadButton.java b/java/src/pm/device/javainput/rumblepad/RumblepadButton.java new file mode 100644 index 0000000..cf5fd90 --- /dev/null +++ b/java/src/pm/device/javainput/rumblepad/RumblepadButton.java @@ -0,0 +1,41 @@ +package pm.device.javainput.rumblepad; + +import de.hardcode.jxinput.event.JXInputButtonEvent; +import pm.Button; +import pm.exception.event.UnknownButtonException; + +public enum RumblepadButton implements Button { + ONE ("Button 0"), + TWO ("Button 1"), + THREE ("Button 2"), + FOUR ("Button 3"), + FIVE ("Button 4"), + SIX ("Button 5"), + SEVEN ("Button 6"), + EIGHT ("Button 7"), + NINE ("Button 8"), + TEN ("Button 9"); + + protected String code; + + private RumblepadButton(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public static RumblepadButton create(String code) throws UnknownButtonException { + for (RumblepadButton button : RumblepadButton.values()) { + if (button.getCode().equals(code)) { + return button; + } + } + throw new UnknownButtonException(); + } + + public static RumblepadButton create(JXInputButtonEvent event) throws UnknownButtonException { + return create(event.getButton().getName()); + } +} \ No newline at end of file diff --git a/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java b/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java index e1c8f7c..984fc3d 100644 --- a/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java +++ b/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java @@ -1,7 +1,11 @@ package pm.device.javainput.rumblepad; +import pm.Action; +import pm.Target; import pm.device.javainput.JavaInputDevice; import pm.exception.DeviceException; +import pm.exception.MacroException; +import pm.macro.event.Press; public class RumblepadDevice extends JavaInputDevice { @@ -9,5 +13,25 @@ public class RumblepadDevice extends JavaInputDevice { public RumblepadDevice() throws DeviceException { super(NAME); - } + } + + public void start() { + super.start(); + try { + /*add( + new Press(RumblepadButton.ONE), + Action.PLAY.setTarget(Target.APPLICATION)); + add( + new Press(RumblepadButton.TWO), + Action.PAUSE.setTarget(Target.APPLICATION)); + add( + new Press(RumblepadButton.THREE), + Action.RESUME.setTarget(Target.APPLICATION));*/ + add( + new Press(RumblepadButton.FOUR), + Action.EXIT.setTarget(Target.MAIN)); + } catch (MacroException e) { + e.printStackTrace(); + } + } } diff --git a/java/src/pm/device/javainput/rumblepad/RumblepadDirection.java b/java/src/pm/device/javainput/rumblepad/RumblepadDirection.java new file mode 100644 index 0000000..9abd835 --- /dev/null +++ b/java/src/pm/device/javainput/rumblepad/RumblepadDirection.java @@ -0,0 +1,39 @@ +package pm.device.javainput.rumblepad; + +import de.hardcode.jxinput.event.JXInputDirectionalEvent; +import pm.Button; +import pm.exception.event.UnknownDirectionException; + +public enum RumblepadDirection implements Button { + NORTH (0), + NORTHEAST (45), + EAST (90), + SOUTHEAST (135), + SOUTH (180), + SOUTHWEST (225), + WEST (270), + NORTHWEST (315); + + protected int code; + + private RumblepadDirection(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + public static RumblepadDirection create(int angle) throws UnknownDirectionException { + for (RumblepadDirection button : RumblepadDirection.values()) { + if (button.getCode() == angle) { + return button; + } + } + throw new UnknownDirectionException(); + } + + public static RumblepadDirection create(JXInputDirectionalEvent event) throws UnknownDirectionException { + return create(event.getDirectional().getDirection() / 100); + } +} \ No newline at end of file diff --git a/java/src/pm/device/textinput/TextinputDevice.java b/java/src/pm/device/textinput/TextinputDevice.java new file mode 100644 index 0000000..6dede6d --- /dev/null +++ b/java/src/pm/device/textinput/TextinputDevice.java @@ -0,0 +1,31 @@ +package pm.device.textinput; + +import java.util.Scanner; + +import pm.device.Device; + +public class TextinputDevice extends Device { + static final int SLEEP = 50; + + Scanner textinputScanner; + boolean run; + + public TextinputDevice() { + textinputScanner = new Scanner(System.in); + run = true; + } + + public void start() { + while(run) { + String textinput = textinputScanner.next(); + if(textinput != null) { + System.out.println(textinput); + } + try { + Thread.sleep(SLEEP); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +}