Thursday, October 18, 2012

Re: GWT and MVP

On Wednesday, October 17, 2012 5:28:16 PM UTC-4, furious_panda wrote:
Hi,

I need some help, I did not found examples or forums discussions about these subjects.

I want to try to do a GWT application using MVP pattern. But I have some difficulties.

In MVP, Presenter have to contain Display interface that specifie what the View must implements and return.

I have two problems when I apply this pattern:

1 - The View must not have to manipulate Model. Or, how it is possible for a collections of objects?

For example, I have model  object Person as follows:

public class Person{
    private String firstname;
    private String lastname;
    private Integer age;
......
}

The View must display a collection of Person in Table (Flextable for example) whithout manipulating Model. How it is possible ?

This is my presenter, and what I do now:

public class PersonListPresenter extends WidgetPresenter<PersonListPresenter .Display> {
     public interface Display extends WidgetDisplay{
public void setData(List<Person> data);
    }
    
    protected void onBind() {
           display.setData(data);
    }
}

This is my view, and what I do now:

public class SongsView implements PersonListPresenter .Display {
......
public void setData(List<Person> data) {
   if(data!=null && data.size() > 0){
for (Person person: data) {
              // I display all information about each Person in one row of table     
                  
         }
    }
}
.....
}

How can I do in MVP for this case ?

I have not been hard and fast about hiding POJOs from my my views. After all, a view has to know what to display and I find oodles of getFoo() are a lot work for the return. However I put all updating of my POJOs in my activities. Each time the view need to display something, it gets it from the activity. The activity handles setDirty(true|false). This seem easiest for my mind to grasp.

2 - My second problem, is each row of this table must be clickable ? How I can do ?

How can I get from display click event for each row ?

public class PersonListPresenter extends WidgetPresenter<PersonListPresenter .Display> {
     public interface Display extends WidgetDisplay{
public void setData(List<Person> data);
    }
    
    protected void onBind() {
           display.setData(data);
           // I have to implement the same information for each row but the source information is different.
           // I have to fire an Event containing the Person information that is clicked
           display.get ????? 

                   .addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {

                        }
              }
    }
}

Thanks in advance.

If your using a FlexTable, look at samples/Mail for how this is done. I've implemented something akin to this many times (though now I'm moving larger data sets to cells).

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/WJsyuTpCL74J.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate