diff --git a/java/src/pm/Application.java b/java/src/pm/Application.java index e67cb38..e07594b 100644 --- a/java/src/pm/Application.java +++ b/java/src/pm/Application.java @@ -1,14 +1,35 @@ package pm; import pm.event.EventHandler; -import pm.exception.application.ApplicationExitException; -import pm.exception.application.ApplicationInitialiseException; -import pm.selector.Selectable; +import pm.selector.Activatable; -public abstract class Application extends EventHandler implements Selectable { - public void initialise() throws ApplicationInitialiseException {} +public abstract class Application extends EventHandler implements Activatable { + protected String title; + protected boolean active; - public void exit() throws ApplicationExitException { + public Application(String title) { + this.title = title; + active = false; + } + + public String title() { + return title; + } + + public boolean active() { + return active; + } + + public void activate() { + start(); + } + + public void deactivate() { + stop(); + } + + public void exit() { + deactivate(); stop(); } } \ No newline at end of file diff --git a/java/src/pm/Client.java b/java/src/pm/Client.java index b6507d2..0bf2eab 100644 --- a/java/src/pm/Client.java +++ b/java/src/pm/Client.java @@ -1,7 +1,6 @@ package pm; import pm.event.spreader.NetworkSpreader; -import pm.exception.device.DeviceInitialiseException; import pm.exception.event.spreader.NetworkSpreaderException; public class Client extends Manager { @@ -19,10 +18,7 @@ public class Client extends Manager { } public void start() { - log.info("LocalManager!"); - try { - initialise(); - } catch (DeviceInitialiseException e) {} + initialise(); super.start(false); } diff --git a/java/src/pm/Device.java b/java/src/pm/Device.java index 4adf335..ace9ba4 100644 --- a/java/src/pm/Device.java +++ b/java/src/pm/Device.java @@ -1,28 +1,29 @@ package pm; -import pm.event.Task; import pm.event.EventHandler; +import pm.event.Task; import pm.event.task.Continuous; import pm.event.task.Stopper; -import pm.exception.InitialiseException; -import pm.exception.device.DeviceExitException; -import pm.exception.device.DeviceInitialiseException; import pm.macro.Sequence; import pm.macro.SequenceListener; import pm.macro.State; import pm.macro.state.Hold; import pm.macro.state.Press; import pm.macro.state.Release; +import pm.selector.Activatable; -public abstract class Device extends EventHandler { +public abstract class Device extends EventHandler implements Activatable { + protected String title; + protected boolean active; protected SequenceListener sequenceListener; static { SequenceListener.initialise(eventSpreader); } - public Device() { - super(); + public Device(String title) { + this.title = title; + active = false; sequenceListener = new SequenceListener(this); } @@ -78,12 +79,24 @@ public abstract class Device extends EventHandler { sequenceListener.add(state); } - /* Device default methods */ - public void initialise() throws InitialiseException { - super.initialise(); + public String title() { + return title; + } + + public boolean active() { + return active; + } + + public void activate() { + start(); } - public void exit() throws DeviceExitException { + public void deactivate() { + stop(); + } + + public void exit() { + deactivate(); stop(); } } diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 19d213a..a646ada 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -1,33 +1,30 @@ package pm; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import pm.application.ApplicationSelector; import pm.application.cmd.windows.gomplayer.GomPlayerApplication; +import pm.application.cmd.windows.winamp.WinampApplication; import pm.application.cmd.windows.wmp.WMPApplication; import pm.application.itunes.iTunesApplication; import pm.application.mpc.MPCApplication; import pm.application.vlc.VLCApplication; -import pm.application.winamp.WinampApplication; import pm.event.spreader.LocalSpreader; -import pm.exception.device.DeviceInitialiseException; -import pm.selector.ApplicationSelector; import pm.util.ArrayCycle; import pm.value.Action; public class Main extends Manager { - public static final String TITLE = "Mimis Main"; - + protected Log log = LogFactory.getLog(getClass()); protected ArrayCycle applicationCycle; protected ApplicationSelector applicationSelector; - + public Main() { super(new LocalSpreader()); - applicationCycle = new ArrayCycle(); - addApplications(); - applicationSelector = new ApplicationSelector(applicationCycle); - eventSpreader.set(applicationCycle.current()); } protected void action(Action action) { - System.out.println("Manager: " + action); + log.debug(String.format("action(%s)", action)); switch (action) { case NEXT: eventSpreader.set(applicationCycle.next()); @@ -43,75 +40,29 @@ public class Main extends Manager { } } - public void initialise() throws DeviceInitialiseException { - super.initialise(); - //add(new iTunesApplication()); - //log.error("main init"); - //startApplications(); + public void start() { + super.start(); + Application[] applicationArray = new Application[] { + new iTunesApplication(), + new GomPlayerApplication(), + new WMPApplication(), + new MPCApplication(), + new VLCApplication(), + new WinampApplication()}; + applicationSelector = new ApplicationSelector(applicationArray); + applicationCycle = new ArrayCycle(applicationArray); + eventSpreader.set(applicationCycle.current()); + super.start(false); } public void exit() { - exitDevices(); - stop(); - } - - protected void addApplications() { - applicationCycle.add(new GomPlayerApplication()); - applicationCycle.add(new WMPApplication()); - applicationCycle.add(new iTunesApplication()); - applicationCycle.add(new MPCApplication()); - applicationCycle.add(new VLCApplication()); - applicationCycle.add(new WinampApplication()); - } - - /*protected void startApplications() { - ArrayList removeList = new ArrayList(); - for (Application application : applicationCycle) { - try { - application.initialise(); - application.start(); - log.debug(application); - } catch (ApplicationInitialiseException e) { - removeList.add(application); - } - } - for (Application application : removeList) { - remove(application); - } - eventSpreader.set(applicationCycle.current()); - }*/ - - /*protected void exitApplications() { System.out.println("Exit applications..."); for (Application application : applicationCycle) { - try { - application.exit(); - } catch (ApplicationExitException e) {} - } - System.out.println("Exit main..."); - }*/ - - /*protected void add(Application application) { - applicationCycle.add(application); - }*/ - - /*protected void remove(Application application) { - applicationCycle.remove(application); - }*/ - - public void start() { - log.info("LocalManager!"); - try { - initialise(); - } catch (DeviceInitialiseException e) {} - super.start(false); + application.exit(); + } } public static void main(String[] args) { new Main().start(); } - - public String title() { - return TITLE; - } } diff --git a/java/src/pm/Manager.java b/java/src/pm/Manager.java index e4a6dd4..ed799d6 100644 --- a/java/src/pm/Manager.java +++ b/java/src/pm/Manager.java @@ -5,78 +5,46 @@ import java.util.ArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import pm.device.DeviceSelector; +import pm.device.javainput.extreme3d.Extreme3DDevice; import pm.device.javainput.rumblepad.RumblepadDevice; +import pm.device.jintellitype.JIntellitypeDevice; import pm.device.network.NetworkDevice; import pm.device.panel.PanelDevice; +import pm.device.player.PlayerDevice; import pm.device.wiimote.WiimoteDevice; import pm.event.EventHandler; import pm.event.EventSpreader; -import pm.exception.InitialiseException; -import pm.exception.device.DeviceExitException; -import pm.exception.device.DeviceInitialiseException; public abstract class Manager extends EventHandler { - protected Log log = LogFactory.getLog(Main.class); + protected Log log = LogFactory.getLog(getClass()); + protected DeviceSelector deviceSelector; protected ArrayList deviceList; public Manager(EventSpreader eventSpreader) { EventHandler.initialise(eventSpreader); - deviceList = new ArrayList(); eventSpreader.start(); } - public void initialise() throws DeviceInitialiseException { - //add(new JIntellitypeDevice()); - //add(new PlayerDevice()); - //add(new RumblepadDevice()); - add(new WiimoteDevice()); - //add(new GUIDevice()); - //add(new TextDevice()); - add(new PanelDevice()); - //add(new LanTextDevice()); - //add(new Extreme3DDevice()); - //add(new NetworkDevice()); - startDevices(); + public void start() { + initialise(); + Device[] deviceArray = new Device[] { + new WiimoteDevice(), + new PanelDevice(), + new JIntellitypeDevice(), + new PlayerDevice(), + new RumblepadDevice(), + new Extreme3DDevice(), + new NetworkDevice()}; + deviceSelector = new DeviceSelector(deviceArray); } public void exit() { - exitDevices(); + log.debug("Exit devices..."); + for (Device device : deviceList) { + device.exit(); + } stop(); } - - protected void startDevices() { - ArrayList removeList = new ArrayList(); - for (Device device : deviceList) { - try { - device.initialise(); - device.start(); - System.out.println("Device started: " + device); - } catch (InitialiseException e) { - removeList.add(device); - } - } - for (Device device : removeList) { - remove(device); - } - } - - protected void exitDevices() { - System.out.println("Exit devices..."); - for (Device device : deviceList) { - try { - device.exit(); - } catch (DeviceExitException e) { - e.printStackTrace(); - } - } - } - - protected void add(Device device) { - deviceList.add(device); - } - - protected void remove(Device device) { - deviceList.remove(device); - } } diff --git a/java/src/pm/Selector.java b/java/src/pm/Selector.java new file mode 100644 index 0000000..5b9ee71 --- /dev/null +++ b/java/src/pm/Selector.java @@ -0,0 +1,41 @@ +package pm; + +import java.awt.GridLayout; +import java.util.ArrayList; + +import javax.swing.JFrame; +import javax.swing.JPanel; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import pm.selector.Activatable; +import pm.selector.SelectButton; + +public class Selector extends JFrame { + protected Log log = LogFactory.getLog(getClass()); + protected static final long serialVersionUID = 1L; + + protected ArrayList activatableArray; + + public Selector(Activatable[] activatableArray) { + createPanel(activatableArray); + //setUndecorated(true); + pack(); + setResizable(false); + setVisible(true); + log.debug("Selector constructed"); + } + + protected void createPanel(Activatable[] activatableArray) { + JPanel panel = new JPanel(new GridLayout(0, 1)); + for (Activatable activatable : activatableArray) { + String title = activatable.title(); + SelectButton button = new SelectButton(activatable); + button.setText(title); + panel.add(button); + log.debug(String.format("Item added: %s", title)); + } + add(panel); + } +} diff --git a/java/src/pm/Test.java b/java/src/pm/Test.java index 4450e64..61d5db1 100644 --- a/java/src/pm/Test.java +++ b/java/src/pm/Test.java @@ -6,14 +6,13 @@ import java.net.URL; import java.util.Enumeration; public class Test { - public void start() throws IOException { Class application = Application.class; Class test = application.getEnclosingClass(); System.out.println(test); } - - public static void main(String[] argv) throws IOException { - new Test().start(); } + public static void main(String[] argv) throws IOException { + new Test().start(); + } } diff --git a/java/src/pm/selector/ApplicationSelector.java b/java/src/pm/application/ApplicationSelector.java similarity index 60% rename from java/src/pm/selector/ApplicationSelector.java rename to java/src/pm/application/ApplicationSelector.java index 255a660..35f0175 100644 --- a/java/src/pm/selector/ApplicationSelector.java +++ b/java/src/pm/application/ApplicationSelector.java @@ -1,16 +1,14 @@ -package pm.selector; - -import java.util.ArrayList; +package pm.application; import pm.Application; +import pm.Selector; public class ApplicationSelector extends Selector { - protected static final long serialVersionUID = 1L; protected final static String TITLE = "MIMIS Application Selector"; - - public ApplicationSelector(ArrayList items) { - super(items); + + public ApplicationSelector(Application[] applicationArray) { + super(applicationArray); } } \ No newline at end of file diff --git a/java/src/pm/application/cmd/CMDApplication.java b/java/src/pm/application/cmd/CMDApplication.java index f49f25d..016baba 100644 --- a/java/src/pm/application/cmd/CMDApplication.java +++ b/java/src/pm/application/cmd/CMDApplication.java @@ -3,8 +3,6 @@ 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 abstract class CMDApplication extends Application { @@ -15,11 +13,12 @@ public abstract class CMDApplication extends Application { protected Process process; public CMDApplication(String program, String title) { + super(title); this.program = program; this.title = title; } - public void initialise() throws ApplicationInitialiseException { + public void initialise() { String key = String.format("%s\\%s", REGISTRY, program); // Check of naam is gevonden in register String path = Native.getValue(key); @@ -29,16 +28,14 @@ public abstract class CMDApplication extends Application { process = Runtime.getRuntime().exec(command); } catch (IOException e) { e.printStackTrace(); - throw new ApplicationInitialiseException(); + //throw new ApplicationInitialiseException(); } } - public void exit() throws ApplicationExitException { + public void exit() { if (process != null) { process.destroy(); } super.exit(); } - - abstract public String title(); } diff --git a/java/src/pm/application/cmd/windows/WindowsApplication.java b/java/src/pm/application/cmd/windows/WindowsApplication.java index 3c03a7d..79ab0a1 100644 --- a/java/src/pm/application/cmd/windows/WindowsApplication.java +++ b/java/src/pm/application/cmd/windows/WindowsApplication.java @@ -1,14 +1,12 @@ package pm.application.cmd.windows; import pm.application.cmd.CMDApplication; -import pm.exception.application.ApplicationExitException; -import pm.exception.application.ApplicationInitialiseException; import pm.util.Windows; import pm.value.Command; import pm.value.Key; import pm.value.Type; -abstract public class WindowsApplication extends CMDApplication { +public abstract class WindowsApplication extends CMDApplication { protected final static int TERMINATE_SLEEP = 500; protected final static int START_SLEEP = 500; @@ -23,7 +21,7 @@ abstract public class WindowsApplication extends CMDApplication { handle = -1; } - public void initialise() throws ApplicationInitialiseException { + public void initialise() { handle = Windows.findWindow(name, null); if (handle < 1) { super.initialise(); @@ -31,7 +29,7 @@ abstract public class WindowsApplication extends CMDApplication { handle = Windows.findWindow(name, null); } if (handle < 1) { - throw new ApplicationInitialiseException(); + //throw new ApplicationInitialiseException(); } } diff --git a/java/src/pm/application/cmd/windows/gomplayer/GomPlayerApplication.java b/java/src/pm/application/cmd/windows/gomplayer/GomPlayerApplication.java index 8debad8..14f9989 100644 --- a/java/src/pm/application/cmd/windows/gomplayer/GomPlayerApplication.java +++ b/java/src/pm/application/cmd/windows/gomplayer/GomPlayerApplication.java @@ -35,8 +35,4 @@ public class GomPlayerApplication extends WindowsApplication { break; } } - - public String title() { - return TITLE; - } } diff --git a/java/src/pm/application/windows/winamp/WinampApplication.java b/java/src/pm/application/cmd/windows/winamp/WinampApplication.java similarity index 96% rename from java/src/pm/application/windows/winamp/WinampApplication.java rename to java/src/pm/application/cmd/windows/winamp/WinampApplication.java index b8f9b3b..c49d1ae 100644 --- a/java/src/pm/application/windows/winamp/WinampApplication.java +++ b/java/src/pm/application/cmd/windows/winamp/WinampApplication.java @@ -1,4 +1,4 @@ -package pm.application.windows.winamp; +package pm.application.cmd.windows.winamp; import pm.application.cmd.windows.WindowsApplication; import pm.value.Action; diff --git a/java/src/pm/application/cmd/windows/wmp/WMPApplication.java b/java/src/pm/application/cmd/windows/wmp/WMPApplication.java index 3fabd6a..c2e5dfe 100644 --- a/java/src/pm/application/cmd/windows/wmp/WMPApplication.java +++ b/java/src/pm/application/cmd/windows/wmp/WMPApplication.java @@ -2,7 +2,6 @@ package pm.application.cmd.windows.wmp; import pm.application.cmd.windows.WindowsApplication; import pm.value.Action; -import pm.value.Command; public class WMPApplication extends WindowsApplication { protected final static String PROGRAM = "wmplayer.exe"; @@ -49,8 +48,4 @@ public class WMPApplication extends WindowsApplication { break; } } - - public String title() { - return TITLE; - } } diff --git a/java/src/pm/application/example/ExampleApplication.java b/java/src/pm/application/example/ExampleApplication.java deleted file mode 100644 index 8d9ebb9..0000000 --- a/java/src/pm/application/example/ExampleApplication.java +++ /dev/null @@ -1,10 +0,0 @@ -package pm.application.example; - -import pm.Application; -import pm.value.Action; - -public class ExampleApplication extends Application { - protected void action(Action action) { - System.out.println("ExampleApplication: " + action); - } -} \ No newline at end of file diff --git a/java/src/pm/application/itunes/iTunesApplication.java b/java/src/pm/application/itunes/iTunesApplication.java index 6a8ce29..69c4404 100644 --- a/java/src/pm/application/itunes/iTunesApplication.java +++ b/java/src/pm/application/itunes/iTunesApplication.java @@ -2,7 +2,6 @@ package pm.application.itunes; import pm.Application; import pm.event.Feedback; -import pm.exception.application.ApplicationExitException; import pm.value.Action; import com.dt.iTunesController.ITCOMDisabledReason; @@ -11,7 +10,7 @@ import com.dt.iTunesController.iTunes; import com.dt.iTunesController.iTunesEventsInterface; public class iTunesApplication extends Application implements iTunesEventsInterface { - protected static final String NAME = "iTunes"; + protected static final String TITLE = "iTunes"; protected static final int POSTION_CHANGE_RATE = 1; protected static final int VOLUME_CHANGE_RATE = 5; @@ -21,22 +20,22 @@ public class iTunesApplication extends Application implements iTunesEventsInterf protected iTunes iTunes; public iTunesApplication() { - super(); + super(TITLE); iTunes = new iTunes(); } - public void initialise() { + public void activate() { iTunes.connect(); iTunes.addEventHandler(this); } - public void exit() throws ApplicationExitException { + public void exit() { System.out.println("Exit iTunesApplication"); super.exit(); try { iTunes.quit(); // Todo: wachten totdat ook daadwerkelijk gestart? Anders wordt iTunes niet afgesloten. } catch (Exception e) { - throw new ApplicationExitException(); + //throw new ApplicationExitException(); } } @@ -91,12 +90,16 @@ public class iTunesApplication extends Application implements iTunesEventsInterf /* iTunesEventInterface => naar eigen class? */ public void onDatabaseChangedEvent(int[][] deletedObjectIDs, int[][] changedObjectIDs) {} public void onPlayerPlayEvent(ITTrack iTrack) { - System.out.println("iTunes play"); - eventSpreader.add(new Feedback()); + if (active) { + System.out.println("iTunes play"); + eventSpreader.add(new Feedback()); + } } public void onPlayerStopEvent(ITTrack iTrack) { - System.out.println("iTunes stop"); - eventSpreader.add(new Feedback()); + if (active) { + System.out.println("iTunes stop"); + eventSpreader.add(new Feedback()); + } } public void onPlayerPlayingTrackChangedEvent(ITTrack iTrack) {} public void onCOMCallsDisabledEvent(ITCOMDisabledReason reason) {} @@ -104,8 +107,4 @@ public class iTunesApplication extends Application implements iTunesEventsInterf public void onQuittingEvent() {} public void onAboutToPromptUserToQuitEvent() {} public void onSoundVolumeChangedEvent(int newVolume) {} - - public String title() { - return NAME; - } } \ No newline at end of file diff --git a/java/src/pm/application/vlc/VLCApplication.java b/java/src/pm/application/vlc/VLCApplication.java index e009d44..223025f 100644 --- a/java/src/pm/application/vlc/VLCApplication.java +++ b/java/src/pm/application/vlc/VLCApplication.java @@ -6,7 +6,6 @@ import java.net.MalformedURLException; import java.net.URL; import pm.application.cmd.CMDApplication; -import pm.exception.application.ApplicationInitialiseException; import pm.value.Action; public class VLCApplication extends CMDApplication { @@ -26,16 +25,11 @@ public class VLCApplication extends CMDApplication { super(PROGRAM, TITLE); } - public void initialise() throws ApplicationInitialiseException { - super.initialise(); - } - - public void command(String command) { String request = "http://" + HOST + ":" + PORT + "/requests/status.xml?command=" + command; try { int response = ((HttpURLConnection)(new URL(request)).openConnection()).getResponseCode(); - //System.out.printf("Response: %d\n", response); + System.out.printf("Response: %d\n", response); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { diff --git a/java/src/pm/application/winamp/WinampApplication.java b/java/src/pm/application/winamp/WinampApplication.java deleted file mode 100644 index cb670c1..0000000 --- a/java/src/pm/application/winamp/WinampApplication.java +++ /dev/null @@ -1,82 +0,0 @@ -package pm.application.winamp; - -import pm.Application; -import pm.exception.application.ApplicationExitException; -import pm.exception.application.ApplicationInitialiseException; -import pm.value.Action; - -import com.qotsa.exception.InvalidHandle; -import com.qotsa.exception.InvalidParameter; -import com.qotsa.jni.controller.WinampController; - -public class WinampApplication extends Application { - protected static final String TITLE = "Winamp"; - - protected boolean muted; - protected int volume; - - public void initialise() throws ApplicationInitialiseException { - try { - WinampController.run(); - volume = 0; // UnsatisfiedLinkError: com.qotsa.jni.controller.JNIWinamp.getVolume()I - muted = volume == 0; - } catch (Exception e) { - throw new ApplicationInitialiseException(); - } - } - - public void exit() throws ApplicationExitException { - System.out.println("Exit WinampApplication"); - super.exit(); - try { - WinampController.exit(); // Todo: wachten totdat ook daadwerkelijk gestart? Anders crashed Winamp. - } catch (InvalidHandle e) { - throw new ApplicationExitException(); - } - } - - protected void action(Action action) { - System.out.println("WinampApplication: " + action); - try { - switch (action) { - case PLAY: - WinampController.play(); - case NEXT: - WinampController.nextTrack(); - break; - case PREVIOUS: - WinampController.previousTrack(); - break; - case FORWARD: - WinampController.fwd5Secs(); - break; - case REWIND: - WinampController.rew5Secs(); - break; - case MUTE: - toggleMute(); - break; - case VOLUME_UP: - WinampController.increaseVolume(); - break; - case VOLUME_DOWN: - WinampController.decreaseVolume(); - break; - } - } catch (InvalidHandle e) {} - } - - protected void toggleMute() throws InvalidHandle { - if (!muted) { - volume = WinampController.getVolume(); - } - try { - WinampController.setVolume(muted ? volume : 0); - } catch (InvalidParameter e) {} - muted = !muted; - } - - public String title() { - return TITLE; - } -} diff --git a/java/src/pm/device/DeviceSelector.java b/java/src/pm/device/DeviceSelector.java new file mode 100644 index 0000000..cb1daaa --- /dev/null +++ b/java/src/pm/device/DeviceSelector.java @@ -0,0 +1,14 @@ +package pm.device; + +import pm.Device; +import pm.Selector; + +public class DeviceSelector extends Selector { + protected static final long serialVersionUID = 1L; + + protected final static String TITLE = "MIMIS Device Selector"; + + public DeviceSelector(Device[] deviceArray) { + super(deviceArray); + } +} \ No newline at end of file diff --git a/java/src/pm/device/example/ExampleDevice.java b/java/src/pm/device/example/ExampleDevice.java deleted file mode 100644 index 86e3ded..0000000 --- a/java/src/pm/device/example/ExampleDevice.java +++ /dev/null @@ -1,18 +0,0 @@ -package pm.device.example; - -import pm.Device; -import pm.value.Action; -import pm.value.Target; - -public class ExampleDevice extends Device { - public void initialise() { - //System.out.println("Ik hoef niets te starten"); - //addAction(Action.START, Target.APPLICATION); - //addAction(Action.TEST, Target.APPLICATION); - //addAction(Action.EXIT, Target.MAIN); - } - - public void exit() { - - } -} diff --git a/java/src/pm/device/javainput/JavaInputDevice.java b/java/src/pm/device/javainput/JavaInputDevice.java index 02209e5..f9f7c20 100644 --- a/java/src/pm/device/javainput/JavaInputDevice.java +++ b/java/src/pm/device/javainput/JavaInputDevice.java @@ -17,6 +17,10 @@ import pm.macro.state.Press; import pm.macro.state.Release; public abstract class JavaInputDevice extends Device { + public JavaInputDevice(String title) { + super(title); + } + protected JavaInputListener javaInputListener; protected Button previousDirectionalButton; diff --git a/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java b/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java index c06a802..19ca4b0 100644 --- a/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java +++ b/java/src/pm/device/javainput/extreme3d/Extreme3DDevice.java @@ -20,8 +20,16 @@ import de.hardcode.jxinput.event.JXInputDirectionalEvent; public class Extreme3DDevice extends JavaInputDevice { protected static final String NAME = "Logitech Extreme 3D"; - public void initialise() throws DeviceInitialiseException { - super.initialise(NAME); + public Extreme3DDevice() { + super(NAME); + } + + public void initialise() { + try { + super.initialise(NAME); + } catch (DeviceInitialiseException e) { + e.printStackTrace(); + } try { add( new Press(Extreme3DButton.TWELVE), diff --git a/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java b/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java index d142f14..6437ba7 100644 --- a/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java +++ b/java/src/pm/device/javainput/rumblepad/RumblepadDevice.java @@ -19,8 +19,16 @@ import de.hardcode.jxinput.event.JXInputDirectionalEvent; public class RumblepadDevice extends JavaInputDevice { protected static final String NAME = "Logitech RumblePad 2 USB"; - public void initialise() throws DeviceInitialiseException { - super.initialise(NAME); + public RumblepadDevice() { + super(NAME); + } + + public void initialise(){ + try { + super.initialise(NAME); + } catch (DeviceInitialiseException e) { + e.printStackTrace(); + } add( new Press(RumblepadButton.ONE), new Task(Target.APPLICATION, Action.PLAY)); diff --git a/java/src/pm/device/jintellitype/JIntellitypeDevice.java b/java/src/pm/device/jintellitype/JIntellitypeDevice.java index aeb496a..e6da617 100644 --- a/java/src/pm/device/jintellitype/JIntellitypeDevice.java +++ b/java/src/pm/device/jintellitype/JIntellitypeDevice.java @@ -9,8 +9,6 @@ import com.melloware.jintellitype.JIntellitype; import pm.Device; import pm.event.Task; import pm.exception.button.UnknownButtonException; -import pm.exception.device.DeviceExitException; -import pm.exception.device.DeviceInitialiseException; import pm.macro.state.Press; import pm.macro.state.Release; import pm.value.Action; @@ -18,16 +16,19 @@ import pm.value.Key; import pm.value.Target; public class JIntellitypeDevice extends Device implements HotkeyListener, IntellitypeListener { + protected static final String TITLE = "JIntellitype"; + protected ArrayList hotkeyList; protected JIntellitype jit; public JIntellitypeDevice() { + super(TITLE); hotkeyList = new ArrayList(); jit = JIntellitype.getInstance(); Hotkey.initialise(hotkeyList, jit); } - public void initialise() throws DeviceInitialiseException { + public void initialise() { jit.addHotKeyListener(this); jit.addIntellitypeListener(this); add( @@ -80,7 +81,7 @@ public class JIntellitypeDevice extends Device implements HotkeyListener, Intell add(new Release(hotkey)); } - public void exit() throws DeviceExitException { + public void exit() { super.exit(); jit.removeHotKeyListener(this); jit.removeIntellitypeListener(this); diff --git a/java/src/pm/device/network/NetworkDevice.java b/java/src/pm/device/network/NetworkDevice.java index 694662e..fe20239 100644 --- a/java/src/pm/device/network/NetworkDevice.java +++ b/java/src/pm/device/network/NetworkDevice.java @@ -6,6 +6,7 @@ import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -13,9 +14,9 @@ import pm.Device; import pm.Event; import pm.Worker; import pm.event.Feedback; -import pm.exception.device.DeviceInitialiseException; public class NetworkDevice extends Device { + protected static final String TITLE = "Network"; public static final int PORT = 6789; protected Log log = LogFactory.getLog(NetworkDevice.class); @@ -24,6 +25,7 @@ public class NetworkDevice extends Device { protected ArrayList clientList; public NetworkDevice(int port) { + super(TITLE); this.port = port; } @@ -31,12 +33,12 @@ public class NetworkDevice extends Device { this(PORT); } - public void initialise() throws DeviceInitialiseException { + public void initialise() { try { server = new Server(port); server.start(); } catch (IOException e) { - throw new DeviceInitialiseException(); + //throw new DeviceInitialiseException(); } } diff --git a/java/src/pm/device/panel/PanelDevice.java b/java/src/pm/device/panel/PanelDevice.java index a21f84a..4aab111 100644 --- a/java/src/pm/device/panel/PanelDevice.java +++ b/java/src/pm/device/panel/PanelDevice.java @@ -8,9 +8,13 @@ import pm.value.Action; import pm.value.Target; public class PanelDevice extends Device implements PanelButtonListener { - + protected static final String TITLE = "Panel"; protected Panel panel; + public PanelDevice() { + super(TITLE); + } + public void initialise() { panel = new Panel(this); //panel.updateTime(12342398); diff --git a/java/src/pm/device/player/PlayerDevice.java b/java/src/pm/device/player/PlayerDevice.java index 293d686..ff1377d 100644 --- a/java/src/pm/device/player/PlayerDevice.java +++ b/java/src/pm/device/player/PlayerDevice.java @@ -2,10 +2,15 @@ package pm.device.player; import javazoom.jlgui.player.amp.StandalonePlayer; import pm.Device; -import pm.exception.device.DeviceExitException; public class PlayerDevice extends Device { + protected static final String TITLE = "Player"; + StandalonePlayer standalonePlayer; + + public PlayerDevice() { + super(TITLE); + } public void initialise() { standalonePlayer = new StandalonePlayer(); @@ -15,8 +20,4 @@ public class PlayerDevice extends Device { //standalonePlayer. System.out.println("niets!"); } - - public void exit() throws DeviceExitException { - super.exit(); - } } diff --git a/java/src/pm/device/wiimote/WiimoteDevice.java b/java/src/pm/device/wiimote/WiimoteDevice.java index bd50a54..ca45ffb 100644 --- a/java/src/pm/device/wiimote/WiimoteDevice.java +++ b/java/src/pm/device/wiimote/WiimoteDevice.java @@ -6,30 +6,23 @@ import org.wiigee.util.Log; import pm.Button; import pm.Device; -import pm.Macro; import pm.device.wiimote.gesture.GestureDevice; import pm.event.Feedback; import pm.event.Task; -import pm.event.task.Continuous; -import pm.event.task.Dynamic; -import pm.exception.InitialiseException; import pm.exception.button.UnknownButtonException; -import pm.exception.device.DeviceExitException; -import pm.exception.macro.StateOrderException; +import pm.exception.device.DeviceNotFoundException; import pm.macro.state.Hold; import pm.macro.state.Press; import pm.macro.state.Release; import pm.value.Action; -import pm.value.Target; - import wiiusej.Wiimote; -import wiiusej.values.Acceleration; import wiiusej.values.Calibration; -import wiiusej.values.RawAcceleration; import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent; import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent; public class WiimoteDevice extends Device implements GestureListener { + protected static final String TITLE = "Wiimote"; + protected static final int CONNECT_MAX = 10; protected static final int RUMBLE = 150; @@ -46,14 +39,12 @@ public class WiimoteDevice extends Device implements GestureListener { } public WiimoteDevice() { + super(TITLE); gestureDevice = new GestureDevice(); gestureDevice.add(this); } - public void initialise() throws InitialiseException { - super.initialise(); - wiimote = wiimoteService.getDevice(this); - wiimote.activateMotionSensing(); + public void initialise() { add( new Hold(WiimoteButton.A), new Task(Action.TRAIN), @@ -117,12 +108,6 @@ public class WiimoteDevice extends Device implements GestureListener { } catch (StateOrderException e) {}*/ } - public void exit() throws DeviceExitException { - super.exit(); - wiimote.deactivateMotionSensing(); - wiimoteService.exit(); - } - public void action(Action action) { switch (action) { case TRAIN: @@ -180,4 +165,23 @@ public class WiimoteDevice extends Device implements GestureListener { System.out.println("Wiimote feedback"); wiimote.rumble(RUMBLE); } + + public void activate() { + try { + wiimote = wiimoteService.getDevice(this); + } catch (DeviceNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + wiimote.activateMotionSensing(); + } + + public void deactivate() { + wiimote.deactivateMotionSensing(); + } + + public void exit() { + wiimoteService.exit(); + super.exit(); + } } diff --git a/java/src/pm/event/EventHandler.java b/java/src/pm/event/EventHandler.java index d25282a..920365c 100644 --- a/java/src/pm/event/EventHandler.java +++ b/java/src/pm/event/EventHandler.java @@ -2,18 +2,16 @@ package pm.event; import pm.Event; import pm.event.task.Continuous; -import pm.exception.InitialiseException; -import pm.selector.Selectable; import pm.value.Action; -public abstract class EventHandler extends EventListener implements Selectable { +public abstract class EventHandler extends EventListener { protected static EventSpreader eventSpreader; public static void initialise(EventSpreader eventSpreader) { EventHandler.eventSpreader = eventSpreader; } - public void initialise() throws InitialiseException { + protected void initialise() { eventSpreader.add(this); } diff --git a/java/src/pm/event/EventListener.java b/java/src/pm/event/EventListener.java index 1e6e50d..db88f85 100644 --- a/java/src/pm/event/EventListener.java +++ b/java/src/pm/event/EventListener.java @@ -25,43 +25,6 @@ public abstract class EventListener extends Worker { } } - /*public Event get(Target target) { - while (eventQueue.isEmpty()) { - synchronized (available) { - try { - available.await(); - } catch (InterruptedException e) {} - } - } - Event event = eventQueue.peek(); - if (event instanceof Task) { - Task task = (Task) event; - if (task.getTarget() == target) { - return eventQueue.poll(); - } else { - return null; - } - } else { - return eventQueue.poll(); - } - } - - public Event gett(Target target) { - while (true) { - Event event = eventQueue.peek(); - if (event instanceof Task) { - Task task = (Task) event; - if (task.getTarget() == target) { - return get(); - } - } - } - } - - public Event get() { - return get(Target.ALL); - }*/ - public final void run() { while (run) { while (eventQueue.isEmpty()) { @@ -76,52 +39,4 @@ public abstract class EventListener extends Worker { } public abstract void event(Event event); - - /*public static void add(Feedback feedback) { - for (EventListener eventListener : eventListenerList) { - eventListener.add(feedback); - } - }*/ - - /*public static void add(EventListener self, Task task) { - if (task instanceof Stopper) { - ((Stopper) task).stop(); - } else { - Target target = task.getTarget(); - switch (target) { - case SELF: - self.add(task); - break; - case APPLICATION: - if (applicationCycle.size() > 0) { - applicationCycle.current().add(task); - } - break; - default: { - for (EventListener eventListener : eventListenerList) { - switch (target) { - case ALL: - eventListener.add(task); - break; - case MAIN: - if (eventListener instanceof Main) { - eventListener.add(task); - } - break; - case DEVICES: - if (eventListener instanceof Device) { - eventListener.add(task); - } - break; - case APPLICATIONS: - if (eventListener instanceof Application) { - eventListener.add(task); - } - break; - } - } - } - } - } - }*/ } \ No newline at end of file diff --git a/java/src/pm/selector/Activatable.java b/java/src/pm/selector/Activatable.java new file mode 100644 index 0000000..2d44632 --- /dev/null +++ b/java/src/pm/selector/Activatable.java @@ -0,0 +1,8 @@ +package pm.selector; + +public interface Activatable { + public String title(); + public boolean active(); + public void activate(); + public void deactivate(); +} diff --git a/java/src/pm/selector/SelectButton.java b/java/src/pm/selector/SelectButton.java index 191586a..b6d22ca 100644 --- a/java/src/pm/selector/SelectButton.java +++ b/java/src/pm/selector/SelectButton.java @@ -2,21 +2,15 @@ package pm.selector; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.ArrayList; - import javax.swing.JToggleButton; -import pm.event.EventHandler; -import pm.exception.InitialiseException; - -public class SelectButton extends JToggleButton implements ItemListener { - +public class SelectButton extends JToggleButton implements ItemListener { protected static final long serialVersionUID = 1L; - protected EventHandler eventHandler; + protected T activatable; - public SelectButton(EventHandler eventHandler) { - this.eventHandler = eventHandler; + public SelectButton(T activatable) { + this.activatable = activatable; addItemListener(this); } @@ -24,15 +18,10 @@ public class SelectButton extends JToggleButton implemen int state = itemEvent.getStateChange(); if (state == ItemEvent.SELECTED) { System.out.println("Selected"); - try { - eventHandler.initialise(); - eventHandler.start(); - } catch (InitialiseException e) { - e.printStackTrace(); - } + activatable.activate(); } else { System.out.println("Deselected"); - eventHandler.stop(); + activatable.deactivate(); } //System.out.println(itemEvent.getSource()); } diff --git a/java/src/pm/selector/Selectable.java b/java/src/pm/selector/Selectable.java deleted file mode 100644 index 8160f21..0000000 --- a/java/src/pm/selector/Selectable.java +++ /dev/null @@ -1,5 +0,0 @@ -package pm.selector; - -public interface Selectable { - public String title(); -} diff --git a/java/src/pm/selector/Selector.java b/java/src/pm/selector/Selector.java deleted file mode 100644 index 336bf3f..0000000 --- a/java/src/pm/selector/Selector.java +++ /dev/null @@ -1,40 +0,0 @@ -package pm.selector; - -import java.awt.GridLayout; -import java.util.ArrayList; - -import javax.swing.JFrame; -import javax.swing.JPanel; - -import pm.event.EventHandler; - -public class Selector extends JFrame { - - protected static final long serialVersionUID = 1L; - - protected final static String TITLE = "MIMIS Selector"; - - private ArrayList items; - - public Selector(ArrayList items) { - super(TITLE); - this.items = items; - System.out.println("Selector started"); - createPanel(); - pack(); - setResizable(false); - setVisible(true); - } - - protected void createPanel() { - JPanel panel = new JPanel(new GridLayout(0, 1)); - for (T t : items) { - String name = t.title(); - SelectButton button = new SelectButton(t); - button.setText(name); - panel.add(button); - System.out.println("Item added"); - } - add(panel); - } -}