//package cbccore.tests; import cbccore.Device; import cbccore.events.Event; import cbccore.events.EventManager; //import cbccore.events.EventEmitter; import cbccore.events.EventListenerAdapter; import cbccore.events.IEventListener; public class Main { // Dummy event public static int DRIVE_BEGAN_EVENT = EventManager.get().getUniqueEventType(); public static int DESTINATION_REACHED_EVENT = EventManager.get().getUniqueEventType(); // Dummy emitter public class Driver { public void drive() { System.out.println("about to emit events"); new Event(DRIVE_BEGAN_EVENT).emit(); // ... new Event(DESTINATION_REACHED_EVENT).emit(); System.out.println("Done emitting events"); } } // Beeps protected class Beeper implements IEventListener { private String examplePassedVariable; public Beeper(String examplePassedVariable) { this.examplePassedVariable = examplePassedVariable; } @Override public void event(Event e) { System.out.println(examplePassedVariable); } } public Main() { EventManager manager = EventManager.get(); Driver driver = new Driver(); //two different ways of making event listeners manager.connect(DESTINATION_REACHED_EVENT, new Beeper("BEEP!")); //this way is more reusable manager.connect(DESTINATION_REACHED_EVENT, new Beeper("Another BEEP!er object")); // Inline class ftw! This way is easier for a unique event listener EventListenerAdapter adapter = new EventListenerAdapter() { @Override public void event(Event type) { System.out.println("DRIVE BEGAN!"); } }; manager.connect(DRIVE_BEGAN_EVENT, adapter); driver.drive(); } public static void main(String[] args) { new Main(); } }