Lorsque vous divisez le projet en parties logiques (par exemple avec MVP) que les différentes parties ont parfois besoin de communiquer. Typique de la communication est d'envoyer les changements de statut, par exemple:
- utilisateur connecté / interjeté.
- l'utilisateur en accédant directement via l'URL de la page si le menu doit être mis à jour.
En utilisant les événements de bus est tout à fait logique dans ces cas.
Pour l'utiliser, vous instanciez une EventBus par app qui est ensuite utilisé par toutes les autres classes. Pour atteindre cet utiliser des champs, de l'usine ou de l'injection de dépendance (GIN en cas de GWT).
Exemple avec vous propres types d'événements:
public class AppUtils{
public static EventBus EVENT_BUS = GWT.create(SimpleEventBus.class);
}
Normalement, vous pouvez également créer vos propres types d'événements et des gestionnaires:
public class AuthenticationEvent extends GwtEvent<AuthenticationEventHandler> {
public static Type<AuthenticationEventHandler> TYPE = new Type<AuthenticationEventHandler>();
@Override
public Type<AuthenticationEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(AuthenticationEventHandler handler) {
handler.onAuthenticationChanged(this);
}
}
et le gestionnaire:
public interface AuthenticationEventHandler extends EventHandler {
void onAuthenticationChanged(AuthenticationEvent authenticationEvent);
}
Alors vous l'utiliser comme ceci:
AppUtils.EVENT_BUS.addHandler(AuthenticationEvent.TYPE, new AuthenticationEventHandler() {
@Override
public void onAuthenticationChanged(AuthenticationEvent authenticationEvent) {
// authentication changed - do something
}
});
et le feu de l'événement:
AppUtils.EVENT_BUS.fireEvent(new AuthenticationEvent());