This commit is contained in:
Bram Veenboer
2011-02-27 16:48:58 +00:00
parent 363356b564
commit b1e3f317a3
8 changed files with 105 additions and 54 deletions

View File

@@ -6,13 +6,13 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import pm.application.ApplicationCycle; 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.example.ExampleApplication;
import pm.application.itunes.iTunesApplication; import pm.application.itunes.iTunesApplication;
import pm.application.mpc.MPCApplication; import pm.application.mpc.MPCApplication;
import pm.application.vlc.VLCApplication; import pm.application.vlc.VLCApplication;
import pm.application.winamp.WinampApplication; 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.gui.GUIDevice;
import pm.device.javainput.extreme3d.Extreme3DDevice; import pm.device.javainput.extreme3d.Extreme3DDevice;
import pm.device.javainput.rumblepad.RumblepadDevice; import pm.device.javainput.rumblepad.RumblepadDevice;
@@ -58,15 +58,15 @@ public class Main extends EventListener {
//add(new GUIDevice()); //add(new GUIDevice());
//add(new TextDevice()); //add(new TextDevice());
//add(new LanTextDevice()); //add(new LanTextDevice());
add(new Extreme3DDevice()); //add(new Extreme3DDevice());
startDevices(); startDevices();
//add(new ExampleApplication()); //add(new ExampleApplication());
add(new WMPApplication()); //add(new WMPApplication());
//add(new GomPlayerApplication()); add(new GomPlayerApplication());
//add(new WinampApplication()); //add(new WinampApplication());
//add(new iTunesApplication()); //add(new iTunesApplication());
//add(new VLCApplication()); add(new VLCApplication());
//add(new MPCApplication()); //add(new MPCApplication());
startApplications(); startApplications();
} }

View File

@@ -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();
}
}

View File

@@ -1,33 +1,24 @@
package pm.application.windows; package pm.application.cmd.windows;
import java.io.IOException; import pm.application.cmd.CMDApplication;
import java.util.Map;
import pm.Application;
import pm.exception.application.ApplicationExitException; import pm.exception.application.ApplicationExitException;
import pm.exception.application.ApplicationInitialiseException; import pm.exception.application.ApplicationInitialiseException;
import pm.util.Native;
import pm.util.Windows; import pm.util.Windows;
import pm.value.Command; import pm.value.Command;
import pm.value.Key; import pm.value.Key;
import pm.value.Type; 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 TERMINATE_SLEEP = 500;
protected final static int START_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 String name;
protected Process process; protected Process process;
protected int handle; protected int handle;
public WindowsApplication(String program, String title, String name) { public WindowsApplication(String program, String title, String name) {
this.program = program; super(program, title);
this.title = title;
this.name = name; this.name = name;
handle = -1; handle = -1;
} }
@@ -35,32 +26,15 @@ abstract public class WindowsApplication extends Application {
public void initialise() throws ApplicationInitialiseException { public void initialise() throws ApplicationInitialiseException {
handle = Windows.findWindow(name, null); handle = Windows.findWindow(name, null);
if (handle < 1) { if (handle < 1) {
String key = String.format("%s\\%s", REGISTRY, program); super.initialise();
String path = Native.getValue(key); sleep(START_SLEEP);
System.out.println("PATH=" + path); handle = Windows.findWindow(name, null);
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();}
} }
if (handle < 1) { if (handle < 1) {
throw new ApplicationInitialiseException(); throw new ApplicationInitialiseException();
} }
} }
public void exit() throws ApplicationExitException {
if (process != null) {
process.destroy();
}
super.exit();
}
protected void command(Command command) { protected void command(Command command) {
Windows.sendMessage(handle, Windows.WM_APPCOMMAND, handle, command.getCode() << 16); Windows.sendMessage(handle, Windows.WM_APPCOMMAND, handle, command.getCode() << 16);
} }

View File

@@ -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; import pm.value.Action;
public class GomPlayerApplication extends WindowsApplication { public class GomPlayerApplication extends WindowsApplication {

View File

@@ -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.Action;
import pm.value.Command; import pm.value.Command;

View File

@@ -1,6 +1,6 @@
package pm.application.mpc; package pm.application.mpc;
import pm.application.windows.WindowsApplication; import pm.application.cmd.windows.WindowsApplication;
import pm.value.Action; import pm.value.Action;
public class MPCApplication extends WindowsApplication { public class MPCApplication extends WindowsApplication {

View File

@@ -1,21 +1,57 @@
package pm.application.vlc; package pm.application.vlc;
import pm.Application; import java.io.PrintStream;
import pm.application.windows.WindowsApplication; import java.net.Socket;
import java.util.Scanner;
import pm.application.cmd.CMDApplication;
import pm.exception.application.ApplicationInitialiseException;
import pm.value.Action; 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 PROGRAM = "vlc.exe";
protected final static String TITLE = "VLC media player"; 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() { 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) { public void action(Action action) {
System.out.println("VLCApplication: " + action); System.out.println("VLCApplication: " + action);/*
System.out.println(handle);
switch (action) { switch (action) {
case PLAY: case PLAY:
command(18808); command(18808);
@@ -47,6 +83,6 @@ public class VLCApplication extends WindowsApplication {
case REPEAT: case REPEAT:
command(18843); command(18843);
break; break;
} }*/
} }
} }

View File

@@ -5,7 +5,7 @@ import com.melloware.jintellitype.JIntellitype;
import pm.Button; import pm.Button;
import pm.exception.button.UnknownButtonException; import pm.exception.button.UnknownButtonException;
public enum CommandButton implements Button { public enum CommandButton implements Button {
BROWSER_BACKWARD (JIntellitype.APPCOMMAND_BROWSER_BACKWARD), BROWSER_BACKWARD (JIntellitype.APPCOMMAND_BROWSER_BACKWARD),
BROWSER_FORWARD (JIntellitype.APPCOMMAND_BROWSER_FORWARD), BROWSER_FORWARD (JIntellitype.APPCOMMAND_BROWSER_FORWARD),
BROWSER_REFRESH (JIntellitype.APPCOMMAND_BROWSER_REFRESH), BROWSER_REFRESH (JIntellitype.APPCOMMAND_BROWSER_REFRESH),