Hi everyone, Before 2.1 I created an application that use the "old" MVP architecture of having models, views and presenters. This worked quite well. I'm migrating this application to use the 2.1 MVP framework now. I've made some progress but am still getting my head around it.
This has hit me so far: in my old code, the presenter was responsible for setting the listeners/handlers on the view/eventbus respectively. Where appropriate handlers would be removed when the view changed so that events are not handled more than once. (eg, I destroy my login window once login succeeds, and I also remove the eventbus LoginSucceededEvent handler, so after logging out there aren't two of them listening on the eventbus) Here is the start method of the apps' login activity: @Override public void start(AcceptsOneWidget panel, EventBus eventBus) { LoginView view = clientFactory.getLoginView(); // just one instance bindView(view); // eg, view.getButton().addClickHandler(... bindEvents(view, eventBus); // eg, eventBus.addHandler(.... panel.setWidget(view.asWidget()); } The LoginView is reused from the ClientFactory as the documentation suggests. This raises two questions: 1) I would like to keep the GUI bindings outside the UI code (just as I did in the old code where it was in the presenter). But since the documentation suggests using a single instance of a the views, here I would be adding more and more listeners each time the activity is initialised (as they are in the ActivityMapper). The HelloMVP example has the binding code in the view and allows the view to communicate with the activity. Can this be avoided? It would help in keeping the UI code strictly to UI and presentation. Short of implementing a method on all views that clear its listeners I cannot think of a better way (I would still think this to be cumbersome - its not something you'd normally do) 2) Similar issue with eventbus handlers - I can't wrap the eventbus in a ResettableEventBus as I don't want to wipe all handlers off the eventbus, nor do I want to have to manually deal with each handler in onStop of the Activity. I could have static fields in the activity to determine whether the binding has already been done, but that would eliminate the possibility of a view that might for whatever reason need to be re- created each time. Am I looking for a generic answer around the current 2.1 MVP framework where it doesn't exist? thanks Sunny -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.