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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.