From b1e3f317a3fd69b37b2b3bcfbef25811ee9ca14b Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Sun, 27 Feb 2011 16:48:58 +0000 Subject: [PATCH] --- java/src/pm/Main.java | 12 ++--- .../pm/application/cmd/CMDApplication.java | 41 +++++++++++++++ .../{ => cmd}/windows/WindowsApplication.java | 42 +++------------ .../gomplayer/GomPlayerApplication.java | 4 +- .../{ => cmd}/windows/wmp/WMPApplication.java | 4 +- .../pm/application/mpc/MPCApplication.java | 2 +- .../pm/application/vlc/VLCApplication.java | 52 ++++++++++++++++--- .../pm/device/jintellitype/CommandButton.java | 2 +- 8 files changed, 105 insertions(+), 54 deletions(-) create mode 100644 java/src/pm/application/cmd/CMDApplication.java rename java/src/pm/application/{ => cmd}/windows/WindowsApplication.java (53%) rename java/src/pm/application/{ => cmd}/windows/gomplayer/GomPlayerApplication.java (87%) rename java/src/pm/application/{ => cmd}/windows/wmp/WMPApplication.java (90%) diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 84855e6..2d141ca 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -6,13 +6,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import pm.application.ApplicationCycle; +import pm.application.cmd.windows.gomplayer.GomPlayerApplication; +import pm.application.cmd.windows.wmp.WMPApplication; import pm.application.example.ExampleApplication; import pm.application.itunes.iTunesApplication; import pm.application.mpc.MPCApplication; import pm.application.vlc.VLCApplication; import pm.application.winamp.WinampApplication; -import pm.application.windows.gomplayer.GomPlayerApplication; -import pm.application.windows.wmp.WMPApplication; import pm.device.gui.GUIDevice; import pm.device.javainput.extreme3d.Extreme3DDevice; import pm.device.javainput.rumblepad.RumblepadDevice; @@ -58,15 +58,15 @@ public class Main extends EventListener { //add(new GUIDevice()); //add(new TextDevice()); //add(new LanTextDevice()); - add(new Extreme3DDevice()); + //add(new Extreme3DDevice()); startDevices(); //add(new ExampleApplication()); - add(new WMPApplication()); - //add(new GomPlayerApplication()); + //add(new WMPApplication()); + add(new GomPlayerApplication()); //add(new WinampApplication()); //add(new iTunesApplication()); - //add(new VLCApplication()); + add(new VLCApplication()); //add(new MPCApplication()); startApplications(); } diff --git a/java/src/pm/application/cmd/CMDApplication.java b/java/src/pm/application/cmd/CMDApplication.java new file mode 100644 index 0000000..8e7fcd2 --- /dev/null +++ b/java/src/pm/application/cmd/CMDApplication.java @@ -0,0 +1,41 @@ +package pm.application.cmd; + +import java.io.IOException; + +import pm.Application; +import pm.exception.application.ApplicationExitException; +import pm.exception.application.ApplicationInitialiseException; +import pm.util.Native; + +public class CMDApplication extends Application { + protected final static String REGISTRY = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths"; + + protected String program; + protected String title; + protected Process process; + + public CMDApplication(String program, String title) { + this.program = program; + this.title = title; + } + + public void initialise() throws ApplicationInitialiseException { + String key = String.format("%s\\%s", REGISTRY, program); + String path = Native.getValue(key); + try { + String command = path.startsWith("\"") ? path : String.format("\"%s\"", path); + command = Native.replaceVariables(command); + process = Runtime.getRuntime().exec(command); + } catch (IOException e) { + e.printStackTrace(); + throw new ApplicationInitialiseException(); + } + } + + public void exit() throws ApplicationExitException { + if (process != null) { + process.destroy(); + } + super.exit(); + } +} diff --git a/java/src/pm/application/windows/WindowsApplication.java b/java/src/pm/application/cmd/windows/WindowsApplication.java similarity index 53% rename from java/src/pm/application/windows/WindowsApplication.java rename to java/src/pm/application/cmd/windows/WindowsApplication.java index 88f4cdb..f9c319f 100644 --- a/java/src/pm/application/windows/WindowsApplication.java +++ b/java/src/pm/application/cmd/windows/WindowsApplication.java @@ -1,33 +1,24 @@ -package pm.application.windows; +package pm.application.cmd.windows; -import java.io.IOException; -import java.util.Map; - -import pm.Application; +import pm.application.cmd.CMDApplication; import pm.exception.application.ApplicationExitException; import pm.exception.application.ApplicationInitialiseException; -import pm.util.Native; import pm.util.Windows; import pm.value.Command; import pm.value.Key; import pm.value.Type; -abstract public class WindowsApplication extends Application { +abstract public class WindowsApplication extends CMDApplication { protected final static int TERMINATE_SLEEP = 500; protected final static int START_SLEEP = 500; - protected final static String REGISTRY = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths"; - - protected String program; - protected String title; protected String name; protected Process process; protected int handle; public WindowsApplication(String program, String title, String name) { - this.program = program; - this.title = title; + super(program, title); this.name = name; handle = -1; } @@ -35,32 +26,15 @@ abstract public class WindowsApplication extends Application { public void initialise() throws ApplicationInitialiseException { handle = Windows.findWindow(name, null); if (handle < 1) { - String key = String.format("%s\\%s", REGISTRY, program); - String path = Native.getValue(key); - System.out.println("PATH=" + path); - try { - String command = path.startsWith("\"") ? path : String.format("\"%s\"", path); - System.out.println("COMMAND=" + command); - command = Native.replaceVariables(command); - System.out.println("COMMAND=" + command); - process = Runtime.getRuntime().exec(command); - sleep(START_SLEEP); - handle = Windows.findWindow(name, null); - System.out.println(handle); - } catch (IOException e) {e.printStackTrace();} + super.initialise(); + sleep(START_SLEEP); + handle = Windows.findWindow(name, null); } if (handle < 1) { throw new ApplicationInitialiseException(); } } - - public void exit() throws ApplicationExitException { - if (process != null) { - process.destroy(); - } - super.exit(); - } - + protected void command(Command command) { Windows.sendMessage(handle, Windows.WM_APPCOMMAND, handle, command.getCode() << 16); } diff --git a/java/src/pm/application/windows/gomplayer/GomPlayerApplication.java b/java/src/pm/application/cmd/windows/gomplayer/GomPlayerApplication.java similarity index 87% rename from java/src/pm/application/windows/gomplayer/GomPlayerApplication.java rename to java/src/pm/application/cmd/windows/gomplayer/GomPlayerApplication.java index 10fa2e4..14f9989 100644 --- a/java/src/pm/application/windows/gomplayer/GomPlayerApplication.java +++ b/java/src/pm/application/cmd/windows/gomplayer/GomPlayerApplication.java @@ -1,6 +1,6 @@ -package pm.application.windows.gomplayer; +package pm.application.cmd.windows.gomplayer; -import pm.application.windows.WindowsApplication; +import pm.application.cmd.windows.WindowsApplication; import pm.value.Action; public class GomPlayerApplication extends WindowsApplication { diff --git a/java/src/pm/application/windows/wmp/WMPApplication.java b/java/src/pm/application/cmd/windows/wmp/WMPApplication.java similarity index 90% rename from java/src/pm/application/windows/wmp/WMPApplication.java rename to java/src/pm/application/cmd/windows/wmp/WMPApplication.java index 0b379fa..66fc5ad 100644 --- a/java/src/pm/application/windows/wmp/WMPApplication.java +++ b/java/src/pm/application/cmd/windows/wmp/WMPApplication.java @@ -1,6 +1,6 @@ -package pm.application.windows.wmp; +package pm.application.cmd.windows.wmp; -import pm.application.windows.WindowsApplication; +import pm.application.cmd.windows.WindowsApplication; import pm.value.Action; import pm.value.Command; diff --git a/java/src/pm/application/mpc/MPCApplication.java b/java/src/pm/application/mpc/MPCApplication.java index 46f7183..5216aa8 100644 --- a/java/src/pm/application/mpc/MPCApplication.java +++ b/java/src/pm/application/mpc/MPCApplication.java @@ -1,6 +1,6 @@ package pm.application.mpc; -import pm.application.windows.WindowsApplication; +import pm.application.cmd.windows.WindowsApplication; import pm.value.Action; public class MPCApplication extends WindowsApplication { diff --git a/java/src/pm/application/vlc/VLCApplication.java b/java/src/pm/application/vlc/VLCApplication.java index 4c30982..2e5ac99 100644 --- a/java/src/pm/application/vlc/VLCApplication.java +++ b/java/src/pm/application/vlc/VLCApplication.java @@ -1,21 +1,57 @@ package pm.application.vlc; -import pm.Application; -import pm.application.windows.WindowsApplication; +import java.io.PrintStream; +import java.net.Socket; +import java.util.Scanner; + +import pm.application.cmd.CMDApplication; +import pm.exception.application.ApplicationInitialiseException; import pm.value.Action; -public class VLCApplication extends WindowsApplication { +public class VLCApplication extends CMDApplication { protected final static String PROGRAM = "vlc.exe"; protected final static String TITLE = "VLC media player"; - protected final static String NAME = "CabinetWClass"; + + protected static final String HOST = "127.0.0.1"; // localhost + protected static final int PORT = 8080; + protected Socket socket; + Scanner input; + PrintStream output; + Scanner feedback; public VLCApplication() { - super(PROGRAM, TITLE, NAME); + super(PROGRAM, TITLE); + } + + public void initialise() throws ApplicationInitialiseException { + super.initialise(); + connect(); + test(); + } + + public void connect() { + System.out.println("Connecting to VLC"); + try { + socket = new Socket(HOST, PORT); + input = new Scanner(System.in); + output = new PrintStream(socket.getOutputStream()); + feedback = new Scanner(socket.getInputStream()); + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println("Connection established"); } + public void test() { + output.println("GET /requests/status.xml?command=volume&val=-20 HTTP/1.1\r\n"); + while (feedback.hasNext()) { + String message = feedback.next(); + System.out.printf("%s", message); + } + } + public void action(Action action) { - System.out.println("VLCApplication: " + action); - System.out.println(handle); + System.out.println("VLCApplication: " + action);/* switch (action) { case PLAY: command(18808); @@ -47,6 +83,6 @@ public class VLCApplication extends WindowsApplication { case REPEAT: command(18843); break; - } + }*/ } } diff --git a/java/src/pm/device/jintellitype/CommandButton.java b/java/src/pm/device/jintellitype/CommandButton.java index dd9ec22..0885510 100644 --- a/java/src/pm/device/jintellitype/CommandButton.java +++ b/java/src/pm/device/jintellitype/CommandButton.java @@ -5,7 +5,7 @@ import com.melloware.jintellitype.JIntellitype; import pm.Button; import pm.exception.button.UnknownButtonException; -public enum CommandButton implements Button { +public enum CommandButton implements Button { BROWSER_BACKWARD (JIntellitype.APPCOMMAND_BROWSER_BACKWARD), BROWSER_FORWARD (JIntellitype.APPCOMMAND_BROWSER_FORWARD), BROWSER_REFRESH (JIntellitype.APPCOMMAND_BROWSER_REFRESH),