From 76fdef60be0442ad11ed0099913636869df4602e Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Thu, 3 Feb 2011 13:41:53 +0000 Subject: [PATCH] Beginnetje gemaakt met loop om events van devices te ontvangen en hun action door te sturen naar de huidige applicatie. Onderscheid gemaakt tussen events voor applicaties (start, pauze, enz) en events voor de main (exit, volgend device, enz). Misschien van event een betere uitgebreidere nuttigere wrapper maken voor een action. --- java/src/pm/Main.java | 28 ++++++++++++++++++++++++- java/src/pm/device/example/Example.java | 3 ++- java/src/pm/event/ApplicationEvent.java | 9 ++++++++ java/src/pm/event/Event.java | 8 +++++-- 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 java/src/pm/event/ApplicationEvent.java diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 91e8a46..1d2538c 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -9,12 +9,17 @@ import pm.application.Application; import pm.device.Device; import pm.device.example.Example; import pm.event.Event; +import pm.event.ApplicationEvent; public class Main { + public static final int SLEEP = 100; + ArrayList applicationList; ArrayList deviceList; Queue eventQueue; + Application currentApplication; + public Main() { applicationList = new ArrayList(); deviceList = new ArrayList(); @@ -39,7 +44,28 @@ public class Main { public void start() { addDevice(new Example(eventQueue)); - addApplication(new Voorbeeld()); + Application application = new Voorbeeld(); + addApplication(application); + currentApplication = application; + } + + public void run() { + while (true) { + if (eventQueue.isEmpty()) { + try { + Thread.sleep(SLEEP); + } catch (InterruptedException e) {} + } else { + Event event = eventQueue.poll(); + if (event instanceof ApplicationEvent) { + try { + currentApplication.invoke(event.getAction()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } } public static void main(String[] args) { diff --git a/java/src/pm/device/example/Example.java b/java/src/pm/device/example/Example.java index 00574d6..b407a8c 100644 --- a/java/src/pm/device/example/Example.java +++ b/java/src/pm/device/example/Example.java @@ -4,6 +4,7 @@ import java.util.Queue; import pm.action.Action; import pm.device.Device; +import pm.event.ApplicationEvent; import pm.event.Event; public class Example extends Device { @@ -12,7 +13,7 @@ public class Example extends Device { } public void initialise() { - Event event = new Event(Action.START); + Event event = new ApplicationEvent(Action.START); eventQueue.add(event); } } diff --git a/java/src/pm/event/ApplicationEvent.java b/java/src/pm/event/ApplicationEvent.java new file mode 100644 index 0000000..39665cc --- /dev/null +++ b/java/src/pm/event/ApplicationEvent.java @@ -0,0 +1,9 @@ +package pm.event; + +import pm.action.Action; + +public class ApplicationEvent extends Event { + public ApplicationEvent(Action action) { + super(action); + } +} diff --git a/java/src/pm/event/Event.java b/java/src/pm/event/Event.java index d153005..260fd6f 100644 --- a/java/src/pm/event/Event.java +++ b/java/src/pm/event/Event.java @@ -2,10 +2,14 @@ package pm.event; import pm.action.Action; -public class Event { +public abstract class Event { protected Action action; - + public Event(Action action) { this.action = action; } + + public Action getAction() { + return action; + } }