package org.korsakow.ide.util; import java.util.ArrayList; import java.util.EventListener; import java.util.List; public class OrderedEventListenerList { private static class Entry { public final Class clazz; public final EventListener listener; public Entry(Class clazz, EventListener listener) { this.clazz = clazz; this.listener = listener; } public boolean equals(Object object) { if (object instanceof Entry == false) return false; Entry other = (Entry)object; if (!clazz.equals(other.clazz)) return false; if (!listener.equals(other.listener)) return false; return true; } } private List<Entry> listeners = new ArrayList<Entry>(); public void add(Class clazz, EventListener listener) { Entry entry = new Entry(clazz, listener); listeners.add(entry); } public <T extends EventListener> List<T> getListeners(Class<T> clazz) { List<T> listeners = new ArrayList<T>(); for (Entry entry : this.listeners) { if (entry.clazz.equals(clazz)) listeners.add((T)entry.listener); } return listeners; } }