Un Listener Global en SWT

En général, une application graphique est composée de plusieurs éléments, appelés widgets, chaque élément pouvant être associé à ou un plusieurs listeners. Ces listeners vont réagir à des événements, comme des actions utilisateurs, et déclencher un traitement. Parfois, plutôt que de multiplier le nombre de listeners, on se dit qu’on pourrait aussi avoir un listener global sur l’application et faire un dispatch ensuite.

Pour cela, il suffit d’utiliser la méthode…

Display.addFilter( int, Listener );
  • Le premier paramètre est un type d’événement (comme org.eclipse.SWT.Selection).
  • Et le deuxième paramètre est un listener qui fera le traitement. Pour le dispatch, s’il est nécessaire, il suffira d’analyser l’événement lui-même (source, etc). Comme ce dispatch n’est pas hyper simple, il vaut mieux en général placer les listeners sur les widgets eux-mêmes. Mais parfois, cette alternative simplifiera et allègera de beaucoup le code de l’application.

Attention ! Ne pas oublier d’enlever le listener quand on en a plus besoin.
Pour information, c’est cette solution qui est utilisée dans Eclipse pour rediriger les événements utilisateurs vers les bons traitements, en fonction des points d’extensions utilisés.

Publicités

About this entry