Maven
<dependency>
<groupId>de.schlegel11</groupId>
<artifactId>event-dispatcher</artifactId>
<version>1.1</version>
</dependency>
Download
Latest Version
Release v1.1
Archived Versions (not recommended)
Release v1.0
JavaDoc
For more details see: Javadoc
Usage
EventListener interface that extends the standard java.util.EventListener interface:
import java.util.EventListener;
import java.util.EventObject;
public interface MyListener extends EventListener {
public void myEventMethod(EventObject eventObject);
}
import java.util.EventListener;
import java.util.EventObject;
public interface AnotherListener extends EventListener{
public void anotherEventMethod(EventObject eventObject, int currentCalls);
}
Class that fires the event:
import java.util.EventObject;
import de.schlegel11.eventdispatcher.EventDispatcher;
public class MySomethingHappensClass {
private final EventDispatcher eventDispatcher = EventDispatcher.newInstance();
public void addMyListenerListener(MyListener listener){
eventDispatcher.addListener(MyListener.class, listener);
}
public void addAnotherListener(AnotherListener listener){
eventDispatcher.addListener(AnotherListener.class, listener, 3);
}
public void removeMyListener(MyListener listener){
eventDispatcher.removeListener(MyListener.class, listener);
}
public void removeAnotherListener(AnotherListener listener){
eventDispatcher.removeListener(AnotherListener.class, listener);
}
public void removeAllMyListeners(){
eventDispatcher.removeListenerType(MyListener.class);
}
public void removeAllAnotherListeners(){
eventDispatcher.removeListenerType(AnotherListener.class);
}
public void removeAllListeners(){
eventDispatcher.clear();
}
public void somethingHappens(){
EventObject eventObject = new EventObject(this);
System.out.println("Fire MyListener");
eventDispatcher.fireEvent(MyListener.class, l -> l.myEventMethod(eventObject));
eventDispatcher.fireEvent(AnotherListener.class, l -> {
System.out.println("Fire AnotherListener");
int maxCalls = eventDispatcher.getListenerMaxCalls(AnotherListener.class, l);
int currentCalls = eventDispatcher.getListenerCurrentCalls(AnotherListener.class, l);
if(maxCalls == currentCalls){
System.out.println("!!AnotherListener last call!!");
}
l.anotherEventMethod(eventObject, currentCalls);
});
}
}
Main method:
public static void main(String[] args) {
MySomethingHappensClass mshc = new MySomethingHappensClass();
mshc.addMyListenerListener(new MyListener() {
private int counter = 0;
@Override
public void myEventMethod(EventObject eventObject) {
System.out.println((++counter)
+ " - MyEventMethod is called \n");
}
});
mshc.addAnotherListener(new AnotherListener() {
@Override
public void anotherEventMethod(EventObject eventObject,
int currentCalls) {
System.out.println(currentCalls
+ " - AnotherEventMethod is called \n");
}
});
for (int i = 0; i < 5; i++) {
mshc.somethingHappens();
}
System.out.println("Remove all listeners");
mshc.removeAllListeners();
}
Console output:
Fire MyListener
1 - MyEventMethod is called
Fire AnotherListener
1 - AnotherEventMethod is called
Fire MyListener
2 - MyEventMethod is called
Fire AnotherListener
2 - AnotherEventMethod is called
Fire MyListener
3 - MyEventMethod is called
Fire AnotherListener
!!AnotherListener last call!!
3 - AnotherEventMethod is called
Fire MyListener
4 - MyEventMethod is called
Fire MyListener
5 - MyEventMethod is called
Remove all listeners