Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use the new GWT MVP framework?

Tags:

mvp

gwt

I need a tutorial for the new GWT MVP framework which is presented here.

The description Google gives is a little bit short for me. What are the meanings of — and how do I use — the following?

  • Activities
  • Places
  • Eventbus
  • ClientFactory
  • PlaceHistoryMapper
  • ActivityMapper

Also, where are the models in this new framework?

like image 587
gwt_user Avatar asked Dec 16 '22 15:12

gwt_user


2 Answers

Places

These are classes that encode information about where your program has navigated. You might make a Place that means, "I'm on the home screen," and another one that means "I'm editing the user with id 52384. I think a better name for these would be PlaceTags, because they are not actually a place themselves - they just indicate where your program is. The URL is hooked to Places in a PlaceHistoryMapper, in which you can say, "hey, #home should generate a HomeScreenPlace and #edituser:52384 should generate a EditUserPlace (maybe constructed with a field you set to 52384).

Activities

These start and stop your code. Each Activity has a start method that is called when appropriate. You determine what "when appropriate" means by making an ActivityMapper, which has a function called getActivity. getActivity accepts a Place, and you have to decide which Activity to return. If the Place is whatever you've coded to mean "I'm on the home screen," you might return a HomeScreenActivity, and if the Place means "I'm editing the client with id 523584," you might return a EditClientActivity. You can add methods or a constructor to an activity to pass in an id like 523584.

EventBus

This is an object the different parts of your program use to communicate. If you don't want to, you don't need to know very much about it - you can just plug it in where indicated in Google's documentation (that you linked to)

ClientFactory

This is a centralized object whose only responsibility is making other objects. You can also skip this concept if you want to simplify things - you'll just be missing out on the central organization of your objects. The advantage is that if you want to switch them out later for, say, a mobile version, or a mocked-up-for-testing version, you can do so all at once within a single place and the rest of your program doesn't have to change at all. You can also reuse the same objects easily when coordinating from a central place, so you don't have to re-create the whole main screen every time someone goes to #home.

Your Actual Program

All this stuff is just for navigation. Your models, views, and presenters are all set up in each Activitys start() method, which the framework calls when your app should navigate to a new place. In the start method you should start up your presenter (usually using a new instance) and start up your display (usually reusing an instance - the client factory is good for this). When you've created your display, you let the framework know by setting it as the widget for the AcceptsOneWidget that the framework passed into your start method.

This is incomplete, but a good supplement to the docs you mentioned: http://code.google.com/intl/de-DE/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.html

like image 75
Riley Lark Avatar answered Jan 11 '23 21:01

Riley Lark


I would also recommend you to carefully listen to the Google I/O presentations, they are a golden key to understand the GWT philosophy:

http://www.google.com/events/io/2010/

http://www.google.com/events/io/2009/

Specially these ones (try to keep a more holistic view of the MVP framework). They do not talk about the real GWT implementation but they give you basic knowledge of MVP. I still am an 8 months noob, so from noob to noob :)

Ray Ryan's overview of the MVP paradigm. Great resource (it was an enlightening for me).

http://www.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html http://www.google.com/events/io/2010/sessions/architecting-production-gwt.html

Daniel Danilatos's testing for GWT. Here you will understand why all the fuzz for MVP!

http://www.google.com/events/io/2010/sessions/gwt-continuous-build-testing.html

like image 33
code-gijoe Avatar answered Jan 11 '23 23:01

code-gijoe