Services en JXInput als java input device geimplementeerd.

This commit is contained in:
Bram Veenboer
2011-02-05 14:42:53 +00:00
parent 41758f5e24
commit f8f51db076
11 changed files with 120 additions and 9 deletions

View File

@@ -6,12 +6,15 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import pm.action.Action;
import pm.application.Application;
import pm.application.voorbeeld.Voorbeeld;
import pm.application.voorbeeld.VoorbeeldApplication;
import pm.device.Device;
import pm.device.example.Example;
import pm.device.JavaInputDevice;
import pm.device.example.ExampleDevice;
import pm.device.rumblepad.RumblepadDevice;
import pm.exception.ActionException;
import pm.exception.ActionNotImplementedException;
import pm.exception.EventException;
import pm.service.javainput.JavaInputService;
public class Main extends Target {
protected static final int SLEEP = 100;
@@ -22,12 +25,14 @@ public class Main extends Target {
boolean run;
Application currentApplication;
public Main() {
applicationList = new ArrayList<Application>();
applicationList.iterator();
//applicationList.iterator();
deviceList = new ArrayList<Device>();
actionQueue = new ConcurrentLinkedQueue<Action>();
JavaInputService.initialize();
//JXInputDevice.jxinputService = new JXInputService();
}
public void addApplication(Application application) {
@@ -47,10 +52,14 @@ public class Main extends Target {
}
public void start() throws Exception {
Device device = new Example(actionQueue);
Device device = new ExampleDevice(actionQueue);
//addDevice(device);
device = new RumblepadDevice(actionQueue);
addDevice(device);
device.initialise();
Application application = new Voorbeeld();
Application application = new VoorbeeldApplication();
addApplication(application);
currentApplication = application;
run();

View File

@@ -2,7 +2,7 @@ package pm.application.voorbeeld;
import pm.application.Application;
public class Voorbeeld extends Application {
public class VoorbeeldApplication extends Application {
public void start() throws Exception {
System.out.println("jeheee!");
//throw new Exception("GEK");

View File

@@ -0,0 +1,27 @@
package pm.device;
import java.util.Queue;
import de.hardcode.jxinput.JXInputDevice;
import pm.action.Action;
import pm.exception.ServiceJavaInputException;
import pm.service.javainput.JavaInputService;
public abstract class JavaInputDevice extends Device {
public static JavaInputService jxinputService;
protected JavaInputDevice(Queue<Action> actionQueue, String name) throws ServiceJavaInputException {
super(actionQueue);
if (jxinputService == null) {
throw new ServiceJavaInputException();
}
JXInputDevice x = jxinputService.getDevice(name);
System.out.printf("Initialized: %s\n", x.getName());
}
public void initialise() {
}
}

View File

@@ -6,8 +6,8 @@ import pm.action.Action;
import pm.device.Device;
import pm.event.Target;
public class Example extends Device {
public Example(Queue<Action> actionQueue) {
public class ExampleDevice extends Device {
public ExampleDevice(Queue<Action> actionQueue) {
super(actionQueue);
}
@@ -16,4 +16,13 @@ public class Example extends Device {
addAction(Action.TEST, Target.APPLICATION);
addAction(Action.EXIT, Target.MAIN);
}
public void processEvent() {
/*ExampleEvent de;
if (specifiekEvent == start) {
addAction()
}
*/
}
}

View File

@@ -0,0 +1,17 @@
package pm.device.rumblepad;
import java.util.Queue;
import pm.action.Action;
import pm.device.JavaInputDevice;
import pm.exception.ServiceJavaInputException;
public class RumblepadDevice extends JavaInputDevice {
protected static final String NAME = "Logitech RumblePad 2 USB";
public RumblepadDevice(Queue<Action> actionQueue) throws ServiceJavaInputException {
super(actionQueue, NAME);
}
}

View File

@@ -0,0 +1,5 @@
package pm.exception;
public class ServiceException extends Exception {
protected static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,5 @@
package pm.exception;
public class ServiceJavaInputDeviceNotFoundException extends ServiceJavaInputException {
protected static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,5 @@
package pm.exception;
public class ServiceJavaInputException extends ServiceException {
protected static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,5 @@
package pm.service;
public abstract class Service {
}

View File

@@ -0,0 +1,28 @@
package pm.service.javainput;
import de.hardcode.jxinput.JXInputDevice;
import de.hardcode.jxinput.JXInputManager;
import pm.device.JavaInputDevice;
import pm.exception.ServiceJavaInputDeviceNotFoundException;
import pm.exception.ServiceJavaInputException;
import pm.service.Service;
public class JavaInputService extends Service {
public JXInputDevice getDevice(String name) throws ServiceJavaInputException {
int numberOfDevices = JXInputManager.getNumberOfDevices();
for (int i = 0; i < numberOfDevices; ++i) {
JXInputDevice device = JXInputManager.getJXInputDevice(i);
if (device.getName().startsWith(name)) {
return device;
}
}
throw new ServiceJavaInputDeviceNotFoundException();
}
public static void initialize() {
JavaInputDevice.jxinputService = new JavaInputService();
}
}