package cn.mutils.core.event;
import java.util.List;
/**
* Event dispatcher of framework
*/
@SuppressWarnings("unused")
public interface IDispatcher {
/**
* Is the listener for default event type
*/
boolean hasListener(IListener listener);
/**
* Add listener for default event type
*/
void addListener(IListener listener);
/**
* Remove listener for default event type
*/
void removeListener(IListener listener);
/**
* Remove all listeners for default event type
*/
void removeAllListeners();
/**
* Is the listener for specify event type
*/
boolean hasListener(String type, IListener listener);
/**
* Add listener for specify event type
*/
void addListener(String type, IListener listener);
/**
* Remove listener for specify event type
*/
void removeListener(String type, IListener listener);
/**
* Remove all listeners for specify event type
*/
void removeAllListeners(String type);
/**
* Get specify type listeners for default event type
*/
<T extends IListener> List<T> getListeners(Class<T> listenerClass);
/**
* Get specify type listeners for specify event type
*/
<T extends IListener> List<T> getListeners(String type, Class<T> listenerClass);
/**
* Get listeners for default event type
*/
List<IListener> getListeners();
/**
* Get listeners for specify event type
*/
List<IListener> getListeners(String type);
/**
* Get first listener for default event type
*/
IListener getListener();
/**
* Set first listener for default event type
*/
void setListener(IListener listener);
/**
* Get first listener for specify event type
*/
IListener getListener(String type);
/**
* Set first listener for specify event type
*/
void setListener(String type, IListener listener);
/**
* Get first listener for default event type
*/
<T extends IListener> T getListener(Class<T> listenerClass);
/**
* Get first listener for specify event type
*/
<T extends IListener> T getListener(String type, Class<T> listenerClass);
}