Zeer veel aanpassingen:

- omslachtigheden verbeterd
- netwerking gefixt
- ...
This commit is contained in:
2011-05-08 13:38:23 +00:00
parent f5a555adbc
commit e135ea5a6d
39 changed files with 661 additions and 549 deletions

View File

@@ -2,116 +2,69 @@ package pm;
import java.util.ArrayList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.windows.winamp.WinampApplication;
import pm.device.gui.GUIDevice;
import pm.device.javainput.extreme3d.Extreme3DDevice;
import pm.device.javainput.rumblepad.RumblepadDevice;
import pm.device.jintellitype.JIntellitypeDevice;
import pm.device.panel.PanelDevice;
import pm.device.player.PlayerDevice;
import pm.device.text.TextDevice;
import pm.device.text.lan.LanTextDevice;
import pm.device.wiimote.WiimoteDevice;
import pm.event.EventListener;
import pm.event.EventManager;
import pm.event.spreader.LocalSpreader;
import pm.exception.application.ApplicationExitException;
import pm.exception.application.ApplicationInitialiseException;
import pm.exception.device.DeviceExitException;
import pm.exception.device.DeviceInitialiseException;
import pm.macro.Active;
import pm.network.NetworkServer;
import pm.util.ArrayCycle;
import pm.value.Action;
public class Main extends EventListener {
protected Log log = LogFactory.getLog(Main.class);
//protected String[] deviceClassArray;
public class Main extends Manager {
protected ArrayCycle<Application> applicationCycle;
protected ArrayList<Device> deviceList;
protected EventManager eventManager;
public Main() {
super();
super(new LocalSpreader());
applicationCycle = new ArrayCycle<Application>();
deviceList = new ArrayList<Device>();
eventManager = new EventManager(applicationCycle);
EventListener.initialise(eventManager);
}
protected void action(Action action) {
System.out.println("Manager: " + action);
switch (action) {
case NEXT:
eventSpreader.set(applicationCycle.next());
System.out.println(applicationCycle.current());
break;
case PREVIOUS:
eventSpreader.set(applicationCycle.previous());
System.out.println(applicationCycle.current());
break;
case EXIT:
exit();
break;
}
}
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 NetworkServer());
startDevices();
//add(new ExampleApplication());
//add(new WMPApplication());
//add(new GomPlayerApplication());
add(new WinampApplication());
//add(new iTunesApplication());
//add(new VLCApplication());
//add(new MPCApplication());
super.initialise();
add(new iTunesApplication());
log.error("main init");
startApplications();
}
public void exit() {
exitDevices();
stop();
}
protected void startApplications() {
ArrayList<Application> removeList = new ArrayList<Application>();
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 startDevices() {
ArrayList<Device> removeList = new ArrayList<Device>();
for (Device device : deviceList) {
try {
device.initialise();
device.start();
log.info("Device started: " + device);
} catch (DeviceInitialiseException e) {
removeList.add(device);
}
}
for (Device device : removeList) {
remove(device);
}
}
public void exit() {
System.out.println("Exit devices...");
for (Device device : deviceList) {
try {
device.exit();
} catch (DeviceExitException e) {
e.printStackTrace();
}
}
protected void exitApplications() {
System.out.println("Exit applications...");
for (Application application : applicationCycle) {
try {
@@ -119,74 +72,25 @@ public class Main extends EventListener {
} catch (ApplicationExitException e) {}
}
System.out.println("Exit main...");
stop();
}
protected void action(Action action) {
System.out.println("NetworkClient: " + action);
switch (action) {
case NEXT:
applicationCycle.next();
System.out.println(applicationCycle.current());
break;
case PREVIOUS:
applicationCycle.previous();
System.out.println(applicationCycle.current());
break;
case EXIT:
exit();
break;
}
}
/*protected void addDevices() throws DeviceInitialiseException {
for (String deviceClass : deviceClassArray) {
try {
Object object = Class.forName(deviceClass).getConstructor((Class[]) null).newInstance();
if (object instanceof Application) {
Device device = (Device) object;
add(device);
try {
device.initialise();
} catch (DeviceNotFoundException e) {}
}
} catch (IllegalArgumentException e) {
} catch (SecurityException e) {
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
} catch (NoSuchMethodException e) {
} catch (ClassNotFoundException e) {}
}
}*/
/* Add / remove methods */
protected void add(Application application) {
//EventManager.add(application);
applicationCycle.add(application);
}
protected void remove(Application application) {
//EventManager.remove(application);
applicationCycle.remove(application);
}
protected void add(Device device) {
//EventManager.add(device);
deviceList.add(device);
}
protected void remove(Device device) {
//EventManager.remove(device);
deviceList.remove(device);
public void start() {
log.info("LocalManager!");
try {
initialise();
} catch (DeviceInitialiseException e) {}
super.start(false);
}
public static void main(String[] args) {
try {
Main main = new Main();
main.initialise();
main.start(false);
} catch (Exception e) {
e.printStackTrace();
}
new Main().start();
}
}
}