Selectors aanzienlijk algemener gemaakt en alle bijbehorende aanpassingen gemaakt. Devices en applications zijn Activatable's. Ze worden eenmalig geïnitialiseerd. Hierbij worden alleen broodnodige dingen gedaan, maar applicaties worden nog niet gestart en er wordt nog niet naar devices gezocht. Dat gebeurd pas als er wordt geactiveerd. Als er wordt gedeactiveerd moet het object beschikbaar blijven, alleen moet de verbinding met de applicatie of het device tijdelijk worden onderbroken, om vervolgens weer opnieuw geactiveerd te kunnen worden. Pas als de exit methode wordt aangeroepen, dan moet er definitief worden verbroken. Deze methodiek moet overal nog worden ingevoerd! Er moet nog worden gewerkt aan een systeem zodat de selector ziet of een applicatie of device actief is. Het liefst met zo'n wait notify achtige truck.
This commit is contained in:
@@ -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<Device> deviceList;
|
||||
|
||||
public Manager(EventSpreader eventSpreader) {
|
||||
EventHandler.initialise(eventSpreader);
|
||||
deviceList = new ArrayList<Device>();
|
||||
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<Device> removeList = new ArrayList<Device>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user