Thanks for the reply Chris! Meanwhile I figured out the problem; it was a stub implementation by eclipse that I've forgotten in the LogOutEvent class...
On Feb 15, 6:08 am, Chris Price <[email protected]> wrote: > I can't see how it's happening in your case (either there's more > relevant code or it's very early in the morning!) but I've previously > come across a similar problem. The SimpleEventBus, on which > HandlerManager is based, uses deferred methods to only apply changes > to the handler lists after the current round of events have fired [1]. > i.e. if you are currently in a handler, add a handler and then > immediately fire that event, your handler won't be called (ever). > > [1]http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/... > > Chris > > On Tue, Feb 14, 2012 at 9:57 AM, [email protected] > > > > > > > > <[email protected]> wrote: > > I am new at GWT, but I have working on the MVP tutorial and have > > encountered some problems: > > > from my EntryPoint class: > > > public void onModuleLoad() { > > > HandlerManager eventBus = new HandlerManager(null); > > AppController appController = new AppController(eventBus); > > appController.go(RootLayoutPanel.get()); > > } > > > in the AppController: > > public AppController(HandlerManager eventBus){ > > this.eventBus = eventBus; > > bind(); > > } > > > private void bind() { > > eventBus.addHandler(LogOutEvent.TYPE, new > > LogOutEventHandler() { > > @Override > > public void onLogOut(LogOutEvent event) { > > Window.alert("yes!"); //does not work :-( > > } > > }); > > eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandler() > > { > > @Override > > public void onLogin(LoginEvent event) { > > handleLogin(event.getUser()); // does work ?! > > } > > }); > > } > > > @Override > > public void go(final HasWidgets container) { > > this.container = container; > > LoginView loginView = new LoginView(); > > presenter = new LoginPresenter(eventBus, rpcLoginService, > > loginView); > > loginView.setPresenter(presenter); > > presenter.go(container); > > } > > > private void handleLogin(User user) { > > LogoutView logoutView = new LogoutView(); > > presenter = new LogoutPresenter(eventBus, rpcLogoutService, > > logoutView, user); > > logoutView.setPresenter(presenter); > > presenter.go(container); > > } > > > private void handleLogout(){ > > Window.alert("hej"); > > LoginView loginView = new LoginView(); > > presenter = new LoginPresenter(eventBus, rpcLoginService, > > loginView); > > loginView.setPresenter(presenter); > > presenter.go(container); > > } > > > Please note above that the login handler is registered and works > > flawlessly! > > Also note that I've got two presenters: LoginPresenter, > > LogOutPresenter. And they are > > basically the same; they get informed by a view that a button has been > > clicked and do a > > RPC (which works). > > > in LogOutPresenter: > > public void onLogOutButtonClicked(){ > > rpcService.logoutNow(user, new AsyncCallback<Void>() { > > @Override > > public void onSuccess(Void result) { > > LogOutEvent logout = new LogOutEvent(); > > eventBus.fireEvent(logout); //does not do > > anything! > > > Window.alert("" + > > eventBus.isEventHandled(LogOutEvent.TYPE)); // > > this yields true?! > > } > > @Override > > public void onFailure(Throwable caught) { > > if(caught instanceof UserLoginException) > > Window.alert("exception occured"); > > } > > }); > > } > > > If I debug in the onSuccess method above and step into > > eventBus.fireEvent(logout), I get > > to a place where I see the handler list is empty! even though the > > event is registered! > > > Any Ideas? > > > -- > > You received this message because you are subscribed to the Google Groups > > "Google Web Toolkit" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
