Class ListenerSet<L>
java.lang.Object
org.nuiton.util.ListenerSet<L>
- Type Parameters:
L- listeners type
- All Implemented Interfaces:
Iterable<L>
Cette classe permet de mettre en place facilement le support de listeners. Elle ne permet d'ajouter qu'une seul fois le meme listener. Si elle est la derniere à avoir une référence sur le listener, le listener est supprimé de la liste des listeners.
Si on souhaite avoir une vérification sur le type de listener ajouté
il faut utiliser le constructeur qui prend une classe en paramètre. Dans ce
cas la méthode add(Object) vérifie que l'object passé est bien
du type ou un enfant du type donné en paramètre du constructeur
Il y a deux façon de prévenir les listeners d'un event soit par le
mécanisme inclu dans cette classe en utilisant la méthode fire(String, Object) soit
en utilisant soit même l'Iterateur sur les listeners encore valide.
ListenerSet listeners = new ListenerSet();
...
listeners.fire("monEvent", MonObjetEvent);
ou bien
ListenerSet listeners = new ListenerSet();
...
for(Iterator i=listeners.iterator(); i.hasNext();){
MonListener l = (MonListener)i.next();
l.monEvent(MonObjetEvent);
}
Cette deuxième façon de faire est plus sûr car elle n'utilise pas
l'introspection et donc une vérification est faite sur le nom de la méthode
à appeler à la compilation, mais elle est plus verbeuse à écrire.- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAjoute un listener dans la liste des listeners.voidaddAll(ListenerSet<L> ls) ajoute tous les listeners d'un ListenerSetvoidAppele la méthode du listener sans argument.voidAppel la méthode du listener en passant l'objet event en paramètre Cette méthode echoue si la methode ou l'objet contenant la methode a appeler n'est pas publiciterator()Get iterator on listener list.voidRemove listener.intsize()toString()Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Iterable
forEach, spliterator
-
Field Details
-
listeners
-
-
Constructor Details
-
ListenerSet
public ListenerSet()
-
-
Method Details
-
size
public int size() -
add
Ajoute un listener dans la liste des listeners.- Parameters:
l- le listener à ajouter. Si l'objet passé est null, rien n'est fait si l'objet n'est pas du type passé en argument du constructeur une IllegalArgumentException est levée.
-
addAll
ajoute tous les listeners d'un ListenerSet- Parameters:
ls- The feature to be added to the All attribute
-
fire
Appel la méthode du listener en passant l'objet event en paramètre Cette méthode echoue si la methode ou l'objet contenant la methode a appeler n'est pas public- Parameters:
methodName- le nom de la methode a appelerevent- l'event a passer en parametre de la methode a appeler- Throws:
Exception- si un des listeners leve une exception lors de l'appel
-
fire
Appele la méthode du listener sans argument. Cette méthode echoue si la methode ou l'objet contenant la methode a appeler n'est pas public.- Parameters:
methodName- le nom de la methode a appeler- Throws:
Exception- si un des listeners leve une exception lors de l'appel
-
iterator
-
remove
-
toString
-