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

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

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;
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.Command;

View File

@@ -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 {

View File

@@ -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;
}
}*/
}
}

View File

@@ -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),