org.nuiton.util
Class ListenerSet<L>

java.lang.Object
  extended by org.nuiton.util.ListenerSet<L>
Type Parameters:
L - listeners type
All Implemented Interfaces:
Iterable<L>

public class ListenerSet<L>
extends Object
implements 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
protected  HashSet<Reference<L>> listeners
          Listeners reference set.
 
Constructor Summary
ListenerSet()
           
 
Method Summary
 void add(L l)
          Ajoute un listener dans la liste des listeners.
 void addAll(ListenerSet<L> ls)
          ajoute tous les listeners d'un ListenerSet
 void fire(String methodName)
          Appele la méthode du listener sans argument.
 void fire(String methodName, 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 public
 Iterator<L> iterator()
          Get iterator on listener list.
 void remove(L l)
          Remove listener.
 int size()
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

listeners

protected HashSet<Reference<L>> listeners
Listeners reference set.

Constructor Detail

ListenerSet

public ListenerSet()
Method Detail

size

public int size()

add

public void add(L l)
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

public void addAll(ListenerSet<L> ls)
ajoute tous les listeners d'un ListenerSet

Parameters:
ls - The feature to be added to the All attribute

fire

public void fire(String methodName,
                 Object event)
          throws Exception
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 appeler
event - 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

public void fire(String methodName)
          throws Exception
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

public Iterator<L> iterator()
Get iterator on listener list.

Specified by:
iterator in interface Iterable<L>
Returns:
iterator on listener list.

remove

public void remove(L l)
Remove listener.

Parameters:
l - listener to remove

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2004-2012 CodeLutin. All Rights Reserved.