Class ListenerSet<L>
- Type Parameters:
L- listeners type
- All Implemented Interfaces:
java.lang.Iterable<L>
public class ListenerSet<L>
extends java.lang.Object
implements java.lang.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(java.lang.String, java.lang.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:
CategorisedListenerSet
-
Field Summary
-
Constructor Summary
Constructors Constructor Description ListenerSet() -
Method Summary
Modifier and Type Method Description voidadd(L l)Ajoute un listener dans la liste des listeners.voidaddAll(ListenerSet<L> ls)ajoute tous les listeners d'un ListenerSetvoidfire(java.lang.String methodName)Appele la méthode du listener sans argument.voidfire(java.lang.String methodName, java.lang.Object event)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 publicjava.util.Iterator<L>iterator()Get iterator on listener list.voidremove(L l)Remove listener.intsize()java.lang.StringtoString()
-
Field Details
-
listeners
Listeners reference set.
-
-
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
public void fire(java.lang.String methodName, java.lang.Object event) throws java.lang.ExceptionAppel 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:
java.lang.Exception- si un des listeners leve une exception lors de l'appel
-
fire
public void fire(java.lang.String methodName) throws java.lang.ExceptionAppele 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:
java.lang.Exception- si un des listeners leve une exception lors de l'appel
-
iterator
Get iterator on listener list.- Specified by:
iteratorin interfacejava.lang.Iterable<L>- Returns:
- iterator on listener list.
-
remove
Remove listener.- Parameters:
l- listener to remove
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-