/*
* Created on Aug 22, 2005
*/
package org.seqcode.gseutils;
import java.util.*;
/**
* @author tdanford
*/
public interface EventSource<E> {
public void addEventListener(Listener<E> el);
public void removeEventListener(Listener<E> el);
public boolean hasListeners();
public static class Default<Event> implements EventSource<Event> {
protected Object source;
protected LinkedList<Listener<Event>> listeners;
public Default() {
source = this;
listeners = new LinkedList<Listener<Event>>();
}
public Default(Object src) {
source = src;
listeners = new LinkedList<Listener<Event>>();
}
public void fireEvent(Event e) {
for(Listener<Event> el : listeners) {
el.eventRegistered(e);
}
}
public void addEventListener(Listener<Event> el) { listeners.addLast(el); }
public void removeEventListener(Listener<Event> el) { listeners.remove(el); }
public boolean hasListeners() {return listeners.size() > 0;}
public void clearListeners() { listeners.clear(); }
public Collection<Listener<Event>> getListeners() { return listeners; }
}
}