org.nuiton.util
Class CategorisedListenerSet<L>

java.lang.Object
  extended by org.nuiton.util.CategorisedListenerSet<L>
Type Parameters:
L - listener type

public class CategorisedListenerSet<L>
extends Object

Objet permettant de géré plusieurs liste de listener de facon simple. Chaque liste de listener est rangé en fonction d'une cle (categorie) Une categorie peut avoir un pere, dans ce cas si un event doit etre lancé sur une categorie il est aussi lancer sur le pere de la categorie. Mais attention l'inverse n'est pas vrai, un event lancé sur un père n'est jamais lancé sur ses fils. Il existe une Category spéciale ALL qui permet d'envoyer un event a tous les listeners. Si cette classe est la derniere classe a conserver l'objet categorie alors la categorie est libere et ainsi que les listeners si c'etait aussi leur derniers referencements

Si les categories sont representees par des Class, alors vous pouvez utiliser la hierachie de classe pour creer de facon automatique les peres.

See Also:
ListenerSet

Field Summary
static Object ALL
          permet de remplacer toutes les categories.
protected  WeakHashMap<Object,Object> categoryParent
           
protected  boolean isClassCategory
           
protected  WeakHashMap<Object,ListenerSet<L>> listeners
          HashMap de ListenerSet, en cle l'objet qui caracterise la categorie en valeur un ListenerSet
 
Constructor Summary
CategorisedListenerSet()
          Empty constructor.
CategorisedListenerSet(boolean isClassCategory)
           
 
Method Summary
 void add(Object category, L l)
          Ajoute un listener sur une certaine categorie, si la categorie n'existe alors on la crée en ne lui affectant pas de père
 void addCategory(Object parent, Object newCategory)
          Ajoute une categorie en indiquant sont pere.
protected  void checkCategory(Object category)
           
 void fire(Object category, String methodName)
          Permet de lancer un event dans une categorie, l'event est aussi propagé sur les ancètres de la categorie, si un meme objet etait listener dans plusieurs categories alors il ne recevra qu'une seul notification
 void fire(Object category, String methodName, Object event)
          Permet de lancer un event dans une categorie, l'event est aussi propagé sur les ancètres de la categorie
protected  ListenerSet<L> getAllListeners(Object category)
           
protected  ListenerSet<L> getListeners(Object category)
           
protected  ListenerSet<L> getListenersClass(Class<?> category)
           
 Iterator<L> iterator(Object category)
          Retourne un Iterator sur tous les listeners qu'il faut prevenir si on souhaite prevenir une certaine categorie.
 void remove(Object category, L l)
          Supprime un listener d'une categorie, si la categorie ou le listener n'existe pas, rien ne se passe.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ALL

public static final Object ALL
permet de remplacer toutes les categories. Si on utilise cette category, alors tous les listeners present seront utilisé.


listeners

protected WeakHashMap<Object,ListenerSet<L>> listeners
HashMap de ListenerSet, en cle l'objet qui caracterise la categorie en valeur un ListenerSet


categoryParent

protected WeakHashMap<Object,Object> categoryParent

isClassCategory

protected boolean isClassCategory
Constructor Detail

CategorisedListenerSet

public CategorisedListenerSet()
Empty constructor.


CategorisedListenerSet

public CategorisedListenerSet(boolean isClassCategory)
Parameters:
isClassCategory - si vrai et que les categorie passé en arguement lors de l'ajout sont de type Class alors lors du fire on recherche aussi les peres dans la hierarchie d'heritage de la classe (Super class et interfaces)
Method Detail

checkCategory

protected void checkCategory(Object category)

addCategory

public void addCategory(Object parent,
                        Object newCategory)
Ajoute une categorie en indiquant sont pere. Une categorie ne peut avoir qu'un seul pere, si la nouvelle categorie existait deja alors l'appel a cette methode change son pere.

Parameters:
parent - le pere de la categorie, null si on ne souhaite pas de pere
newCategory - la nouvelle caterogie

add

public void add(Object category,
                L l)
Ajoute un listener sur une certaine categorie, si la categorie n'existe alors on la crée en ne lui affectant pas de père

Parameters:
category - la categorie dans lequel il faut ajouter le listener
l - le listener a ajouter

remove

public void remove(Object category,
                   L l)
Supprime un listener d'une categorie, si la categorie ou le listener n'existe pas, rien ne se passe.

Parameters:
category - la categorie dans lequel il faut supprimer le listener
l - le listener a supprimer

fire

public void fire(Object category,
                 String methodName,
                 Object event)
          throws Exception
Permet de lancer un event dans une categorie, l'event est aussi propagé sur les ancètres de la categorie

Parameters:
category - la categorie a partir duquel il faut lancer l'evenement
methodName - le nom de la méthode de la classe listener
event - l'objet event a passer en paramètre de la methode du listener
Throws:
Exception - if event can't be fired

fire

public void fire(Object category,
                 String methodName)
          throws Exception
Permet de lancer un event dans une categorie, l'event est aussi propagé sur les ancètres de la categorie, si un meme objet etait listener dans plusieurs categories alors il ne recevra qu'une seul notification

Parameters:
category - la categorie a partir duquel il faut lancer l'evenement
methodName - le nom de la méthode de la classe listener
Throws:
Exception - if event can't be fired

iterator

public Iterator<L> iterator(Object category)
Retourne un Iterator sur tous les listeners qu'il faut prevenir si on souhaite prevenir une certaine categorie. Ceci inclue les ancetre de la categorie

Parameters:
category - category to get iterator on
Returns:
iterator

getAllListeners

protected ListenerSet<L> getAllListeners(Object category)
Parameters:
category - categorie demandee
Returns:
un ListenerSet contenant tous les listeners c'est à dire les listener de la categorie demandé mais aussi les listeners des ancetres

getListenersClass

protected ListenerSet<L> getListenersClass(Class<?> category)

getListeners

protected ListenerSet<L> getListeners(Object category)
Parameters:
category - categorie demandee
Returns:
un ListenerSet contenant seulement les listener de la categorie demandé. Si la categorie n'existe pas alors elle est créé.

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2004-2012 CodeLutin. All Rights Reserved.