use java.util.ServiceLoader to load applications and devices more or
less dynamically.
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
<classpathentry kind="lib" path="lib/jxinput.jar"/>
|
||||
<classpathentry kind="lib" path="lib/log4j-1.2.16.jar"/>
|
||||
<classpathentry kind="lib" path="wiiusej.jar"/>
|
||||
<classpathentry kind="lib" path="lib/commons-collections-3.2.1.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
||||
BIN
java/lib/commons-collections-3.2.1.jar
Normal file
BIN
java/lib/commons-collections-3.2.1.jar
Normal file
Binary file not shown.
8
java/src/META-INF/services/mimis.application.Application
Normal file
8
java/src/META-INF/services/mimis.application.Application
Normal file
@@ -0,0 +1,8 @@
|
||||
mimis.application.cmd.windows.gomplayer.GomPlayerApplication
|
||||
mimis.application.cmd.windows.photoviewer.PhotoViewerApplication
|
||||
mimis.application.cmd.windows.winamp.WinampApplication
|
||||
mimis.application.cmd.windows.wmp.WMPApplication
|
||||
mimis.application.itunes.iTunesApplication
|
||||
mimis.application.lirc.ipod.iPodApplication
|
||||
mimis.application.mpc.MPCApplication
|
||||
mimis.application.vlc.VLCApplication
|
||||
7
java/src/META-INF/services/mimis.device.Device
Normal file
7
java/src/META-INF/services/mimis.device.Device
Normal file
@@ -0,0 +1,7 @@
|
||||
mimis.device.javainput.extreme3d.Extreme3DDevice
|
||||
mimis.device.javainput.rumblepad.RumblepadDevice
|
||||
mimis.device.jintellitype.JIntellitypeDevice
|
||||
mimis.device.lirc.LircDevice
|
||||
mimis.device.network.NetworkDevice
|
||||
mimis.device.panel.PanelDevice
|
||||
mimis.device.wiimote.WiimoteDevice
|
||||
@@ -1,28 +1,19 @@
|
||||
package mimis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.ServiceLoader;
|
||||
|
||||
import javax.swing.UIManager;
|
||||
|
||||
import mimis.application.cmd.windows.gomplayer.GomPlayerApplication;
|
||||
import mimis.application.cmd.windows.photoviewer.PhotoViewerApplication;
|
||||
import mimis.application.cmd.windows.winamp.WinampApplication;
|
||||
import mimis.application.cmd.windows.wmp.WMPApplication;
|
||||
import mimis.application.itunes.iTunesApplication;
|
||||
import mimis.application.lirc.ipod.iPodApplication;
|
||||
import mimis.application.mpc.MPCApplication;
|
||||
import mimis.application.vlc.VLCApplication;
|
||||
import mimis.device.javainput.extreme3d.Extreme3DDevice;
|
||||
import mimis.device.javainput.rumblepad.RumblepadDevice;
|
||||
import mimis.device.jintellitype.JIntellitypeDevice;
|
||||
import mimis.device.lirc.LircDevice;
|
||||
import mimis.device.network.NetworkDevice;
|
||||
import mimis.device.panel.PanelDevice;
|
||||
import mimis.device.wiimote.WiimoteDevice;
|
||||
import mimis.application.Application;
|
||||
import mimis.device.Device;
|
||||
import mimis.exception.worker.ActivateException;
|
||||
import mimis.exception.worker.DeactivateException;
|
||||
import mimis.input.Task;
|
||||
import mimis.manager.ButtonManager;
|
||||
import mimis.manager.CurrentButtonManager;
|
||||
import mimis.value.Action;
|
||||
import mimis.worker.Component;
|
||||
|
||||
public class Main extends Mimis {
|
||||
protected CurrentButtonManager applicationManager;
|
||||
@@ -36,19 +27,32 @@ public class Main extends Mimis {
|
||||
|
||||
}
|
||||
|
||||
public static Component[] getApplications() {
|
||||
ArrayList<Component> componentList = new ArrayList<Component>();
|
||||
for (Application application : ServiceLoader.load(mimis.application.Application.class)) {
|
||||
if (application instanceof Component) {
|
||||
componentList.add((Component) application);
|
||||
}
|
||||
}
|
||||
return componentList.toArray(new Component[]{});
|
||||
}
|
||||
|
||||
public static Component[] getDevices() {
|
||||
ArrayList<Component> componentList = new ArrayList<Component>();
|
||||
for (Device device : ServiceLoader.load(mimis.device.Device.class)) {
|
||||
if (device instanceof Component) {
|
||||
componentList.add((Component) device);
|
||||
}
|
||||
}
|
||||
return componentList.toArray(new Component[]{});
|
||||
}
|
||||
|
||||
public Main() {
|
||||
super(
|
||||
new WinampApplication(), new GomPlayerApplication(), new WMPApplication(), new MPCApplication(), // WindowsApplication
|
||||
new VLCApplication(), // CMDApplication
|
||||
new iPodApplication(), // LircApplication
|
||||
new PhotoViewerApplication(), // RobotApplication
|
||||
new iTunesApplication()); // Component
|
||||
super(getApplications());
|
||||
|
||||
/* Create gui from application and device managers */
|
||||
applicationManager = new CurrentButtonManager(router, componentCycle, "Applications", currentArray);
|
||||
deviceManager = new ButtonManager("Devices", initialize(false,
|
||||
new Extreme3DDevice(), new RumblepadDevice(), // JavaInputDevice
|
||||
new JIntellitypeDevice(), new PanelDevice(), new LircDevice(), new WiimoteDevice(), new NetworkDevice())); // Component
|
||||
deviceManager = new ButtonManager("Devices", initialize(false, getDevices()));
|
||||
gui = new Gui(this, applicationManager, deviceManager);
|
||||
manager.add(initialize(false, gui));
|
||||
}
|
||||
@@ -61,7 +65,7 @@ public class Main extends Mimis {
|
||||
applicationManager.start();
|
||||
deviceManager.start();
|
||||
|
||||
/* Force display of currenct component when gui started */
|
||||
/* Force display of current component when gui started */
|
||||
gui.start();
|
||||
while (!gui.active());
|
||||
end(Action.CURRENT);
|
||||
|
||||
@@ -3,13 +3,14 @@ package mimis.application.cmd;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import mimis.application.Application;
|
||||
import mimis.exception.worker.ActivateException;
|
||||
import mimis.exception.worker.DeactivateException;
|
||||
import mimis.util.Native;
|
||||
import mimis.value.Registry;
|
||||
import mimis.worker.Component;
|
||||
|
||||
public abstract class CMDApplication extends Component {
|
||||
public abstract class CMDApplication extends Component implements Application {
|
||||
protected final static Registry REGISTRY = Registry.LOCAL_MACHINE;
|
||||
protected final static String KEY = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths";
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package mimis.application.lirc;
|
||||
|
||||
import mimis.application.Application;
|
||||
import mimis.device.lirc.LircButton;
|
||||
import mimis.device.lirc.LircService;
|
||||
import mimis.device.lirc.remote.WC02IPOButton;
|
||||
@@ -7,7 +8,7 @@ import mimis.exception.worker.ActivateException;
|
||||
import mimis.exception.worker.DeactivateException;
|
||||
import mimis.worker.Component;
|
||||
|
||||
public class LircApplication extends Component {
|
||||
public class LircApplication extends Component implements Application {
|
||||
protected LircService lircService;
|
||||
|
||||
public LircApplication(String title) {
|
||||
|
||||
Reference in New Issue
Block a user