/*
* This file is part of CBCJVM.
* CBCJVM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CBCJVM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with CBCJVM. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @author Braden McDorman, Benjamin Woodruff
*/
//package cbccore.tests;
import cbccore.Device;
import cbccore.events.Event;
import cbccore.events.EventType;
import cbccore.events.EventManager;
//import cbccore.events.EventEmitter;
import cbccore.events.EventListenerAdapter;
import cbccore.events.IEventListener;
public class Main {
// Dummy event
public static EventType DRIVE_BEGAN_EVENT = EventManager.get().getUniqueEventType();
public static EventType 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();
//...
try { Thread.sleep(1000l); } catch(Exception e) { System.exit(1); }
//...
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
Beeper beeperOne = new Beeper("BEEP!");
manager.connect(DESTINATION_REACHED_EVENT, beeperOne);
//this way is more reusable
Beeper beeperTwo = new Beeper("Another BEEP!er object");
manager.connect(DESTINATION_REACHED_EVENT, beeperTwo);
// 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();
//Always clean up after yourself. You may decide to write a dispose method
//It does not hurt to remove an event that was not added. This is for convenience
manager.disconnect(DESTINATION_REACHED_EVENT, beeperOne);
manager.disconnect(DESTINATION_REACHED_EVENT, beeperTwo);
manager.disconnect(DRIVE_BEGAN_EVENT, adapter);
}
public static void main(String[] args) {
new Main();
}
}