Architecting your Google Web Toolkit GWT apps with Model View Presenter ( MVP) At its core, MVP is a design pattern that breaks your app up into the. Main Components of GWT MVP. Framework. • Model. – Responsible for holding raw data. – No business logic allowed (just like any model really). • Example. Modular design for large-scale apps, similar to the widely-accepted MVC approach in “normal” Web applications.

Author: Mozahn Karan
Country: Belarus
Language: English (Spanish)
Genre: Spiritual
Published (Last): 9 October 2013
Pages: 437
PDF File Size: 14.82 Mb
ePub File Size: 17.8 Mb
ISBN: 175-4-61769-447-2
Downloads: 75084
Price: Free* [*Free Regsitration Required]
Uploader: Mazuramar

We implement that as a very simple mock-up component that reads data from a file and. For example, if we have changed to the situation in figure 2, then the onValueChange method determines that the value detail means it needs to call the doPhotoDetailsDisplay method.

Sign up using Facebook.

Introduction to the MVP pattern: a GWT example

So long as we wrap a view in a display interface that can be mocked and our JRE tests never call asWidgetall is grand. We will also make use of an EventBus. This happens, for example, when selecting a photo in the Photo List view. To do so, we call EventBus. The click on a photo is registered in PhotoListViewImpl, which then calls back to the presenter saying which photo is selected.

Luckily, since most views will be made up from a Composite which, from GWT 2. Follow-up topics The MVP architecture is expansive; in future articles we look to discuss the following concepts: Notice that both presenters have an interface called Display.


But, as with any large scale development project, you can easily paint yourself into a corner. Over a million developers have joined DZone. So, our view is dumb and contains zero application logic. Blindly dumping all of the possible events within your app on the Event Bus can lead to chatty applications that get bogged tutoriwl in event handling.

Each of these events will extend Event and override dispatch and getAssociatedType. At the heart of this pattern is the separation of functionality into kvp that logically make sense, but in the case of GWT there is a clear focus on making the view as simple as possible in order to minimize our reliance on GWTTestCase and reduce the overall time spent running tests.

GWT MVP Development with Activities and Places |

Below is an example of the event that is fired upon gat updating a contact. One of the main selling points of GWT is that it allows you to use an industry-grade language, with an industry-grade set of tools, to build A view contains all of the UI components that make up our application.

Throughout the two photo app projects, you will see us use a ClientFactory object. The presentation is probably the clearest in documentation in regards to the new MVP framework, whereas the articles you referenced aren’t quite like bwt new MVP framework.

Presenter The presenter will hold the complex application and business logic used to drive UIs and changes to the model. View These are the UI components that display model data and send user commands back to the presenter component.


The interface and parameter are of type String because the History events are simply the tokens that are pushed onto the stack. In the specific presenter interface we wish to declare those methods that will be called from the view when things happen.

A presenter contains all of the logic for our Contacts application, including history managementview transition and data sync via RPCs back to the server. App-wide events are really the only events jvp you want to be passing around on the Event Bus.

MVP Architecture for GWT Application

Within the constructor, we also call the bind method from the Presenter interface. Binding presenters and views Events and the event bus History and view transitions Testing Sample Project The sample project, referenced throughout this tutorial, can be found at Tutorial-Contacts. A log4j-style logger for GWT. Multiple components can be listening for a single event, so when an event is fired rutorial the EventBus.

Take for example the ContactsView:. Implementing the MVP pattern itself was relatively straightforward, but I did encounter a few issues.

The Event Bus is a mechanism for a passing events and b registering to be notified of some subset of these events. The AppController is also used to instantiate the application.