Class ListenerSet<L>

java.lang.Object
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(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 Details

  • Constructor Details

    • ListenerSet

      public ListenerSet()
  • Method Details

    • 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