Class CategorisedListenerSet<L>
java.lang.Object
org.nuiton.util.CategorisedListenerSet<L>
- Type Parameters:
L- listener type
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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Objectpermet de remplacer toutes les categories.protected WeakHashMap<Object, Object> protected booleanprotected WeakHashMap<Object, ListenerSet<L>> HashMap de ListenerSet, en cle l'objet qui caracterise la categorie en valeur un ListenerSet -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAjoute un listener sur une certaine categorie, si la categorie n'existe alors on la crée en ne lui affectant pas de pèrevoidaddCategory(Object parent, Object newCategory) Ajoute une categorie en indiquant sont pere.protected voidcheckCategory(Object category) voidPermet 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 notificationvoidPermet de lancer un event dans une categorie, l'event est aussi propagé sur les ancètres de la categorieprotected ListenerSet<L> getAllListeners(Object category) protected ListenerSet<L> getListeners(Object category) protected ListenerSet<L> getListenersClass(Class<?> category) Retourne un Iterator sur tous les listeners qu'il faut prevenir si on souhaite prevenir une certaine categorie.voidSupprime un listener d'une categorie, si la categorie ou le listener n'existe pas, rien ne se passe.toString()
-
Field Details
-
ALL
permet de remplacer toutes les categories. Si on utilise cette category, alors tous les listeners present seront utilisé. -
listeners
HashMap de ListenerSet, en cle l'objet qui caracterise la categorie en valeur un ListenerSet -
categoryParent
-
isClassCategory
protected boolean isClassCategory
-
-
Constructor Details
-
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 Details
-
checkCategory
-
addCategory
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 perenewCategory- la nouvelle caterogie
-
add
-
remove
-
fire
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'evenementmethodName- le nom de la méthode de la classe listenerevent- l'objet event a passer en paramètre de la methode du listener- Throws:
Exception- if event can't be fired
-
fire
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'evenementmethodName- le nom de la méthode de la classe listener- Throws:
Exception- if event can't be fired
-
iterator
-
getAllListeners
- 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
-
getListeners
- 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
-