Hello

In simple words:

The View must implements the page as users are going to see it, that is the graphic part of the project, that is again you build the page of objects to show when users load the page.
The Presenter , (who is a Presenter?), hands its own view.
So the presenter gets all the needed objects from its own view (created inside the constructor or passed as parameter) and hands them according its need. So you build your graphic page in a View and the presenter will use it. Keep in mind that the view must implements all the Getter that return the needed Widget to hand.

When user click i.e. on a Button, its click handler will build a new Presenter, that will show its view. Infact all presenter must show its Widget (your graphic page) got by the method that all view must implement, asWidget(), but as a View extends usually a Composite, it is alread done.

is that clear ?

the way you did is quite correct, I agree 50%.

At the beginning you build the page with Persons. It's Ok.

Then maybe you will need new Persons and i.e. make a server request to get all Persons i.e. from a DB.

Yes setData will make this.

Keep in mind that you are not handling anything if setData is a more complext algorithm. It doesnt mean that your are making logic code inside it.

B  U   T
maybe you'd better to GET the table from the View and write the setData inside the presenter.


Il 19/10/2012 22:15, furious_panda ha scritto:
Thanks all yours responses.


Le jeudi 18 octobre 2012 17:25:14 UTC+2, Thad a écrit :

    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/-/xortaej27p4J.
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.

--
You received this message because you are subscribed to the Google Groups "Google 
Web Toolkit" group.
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.

Reply via email to