Wednesday, June 2, 2010

GWT and MVP

A while back I had to come to grips with GWT for work. After doing a few tutorials, I quickly realized that things can become very complicated if you do not apply a good design pattern. For GUI frameworks, Martin Fowler suggests the MVP design pattern is a good bet, and it seems the guys at Google think so too.

After reading up on their documentation, and downloading the sample app that came with it, I still did not get very far. It skims over certain areas since it was written for people more knowledgeable than me, and it lacked some features I liked to explore too, like app engine and use of Guice/Gin.

Luckily, there is plenty of information found on the net about GWT, AppEngine, and Guice. All that I need to do is put it all together to create a sample app and documentation that makes sense to me.

The Sample App

Since everyone seems to be creating a "contacts application" for their samples, I thought I will just continue this trend. Besides, it will then fit nicely with all the other documentation out there.

So what is this Contacts Application?  It is simply a list of people with some common details such as their firstName, lastName, and email. The application should have the facility to add, delete, and edit contacts.

To keep things interesting, I also want the delete function to allow the deletion of multiple contacts at once. This basically means my contacts list should have check boxes which I can select to delete them. After selecting the ones I like to delete, I need to press the delete button. After pressing the delete button, I should go to a confirmation screen that will allow me to either cancel or confirm the delete. After I confirm it should return me to an updated list of contacts. Why these steps? I want to make sure the History function (browser back and forward buttons) work properly.

And not to forget, this will be a Google App Engine Java project.

The Development Process

First we will create a sample project without the use of Guice/Gin. I first want to come to grips with MVP and see how things are separated into their distinctive components.

After successfully creating doing so, I will add Guice/Gin to the mix to see how it simplifies things (it should make our lives easier no?).


Resources

  1. Large scale application development and MVP - Part I, Part II
  2. GWT Dev Guide - Building User Interfaces
  3. DevZone - Design Patterns and GWT
  4. Google IO - Best Practices For Architecting Your GWT App
  5. Google IO - Performance Tips for Google Web Toolkit
  6. Hive Development - Google Web Toolkit (GWT) MVP Example
  7. Google App Engine for Java - Part 1, Part 2
  8. Example App Engine with GWT/Guice/GIN - Appleguise

No comments:

Post a Comment