I to would like to use MVP but find that i'm unable to present more than one view on the screen at a time. I would like to have 3-5 panels loading widgets based on selections in other panels. I attempted to create a presenter/view (just to test) that had both contact edit and contact list. The issue i ran into was the RPC fired i believe but the view never updated with the data. I haven't use GWT long enough to know the best way to ask the question but has anyone found a way to allow more than one View Presenter without creating a single Presenter to manage each of the views? I Was looking into HMVC but still unsure how to approach this.
On Apr 13, 10:15 am, "Sean C." <[email protected]> wrote: > The problem is that only one presenter can be active at a given time. > If a presenter is controlling the left, right and center column, even > handing the center column container to another presenter will not > result in the original presenter giving up control or you get the > effect of one view being drawn followed by the second view quickly > replacing it. > > I ended up implementing the left and right columns as pure HTML+CSS > and used JSNI or the History mechanism to trigger the appropriate View > +Presenter to affect the center column. This way no presenter is > controlling the left and right columns. > > Sean C. > > On Apr 12, 2:13 pm, Brian Reilly <[email protected]> wrote: > > > > > I think you should be able to do this pretty easily by putting > > something that implements HasWidgets (such as SimplePanel, FlowPanel, > > etc.) in your center column. You can then pass that container into > > your presenter as the place where its content should live. That should > > leave the other things that you've added to the RootPanel in place > > when you switch presenters for the center column. > > > -Brian > > > On Apr 10, 3:24 pm, "Sean C." <[email protected]> wrote: > > > > Having a similar problem with creating Composite Views backed by their > > > respective Presenters. > > > > The bug in DockPanelLayoutPanel for Java 5 does not help and I don't > > > have the option to switch to Java 6 but that is a separate > > > discussion:http://code.google.com/p/google-web-toolkit/issues/detail?id=4254 > > > > Back to the problem: the Home Page is composed of three columns with > > > the East and West columns being static HTML + CSS as well as some > > > dynamic content (Vertical Panels), that affects the content of the > > > Center column. Yes, JSNI is being used here. > > > > E.g: clicking the Login button in the West column presents a Login > > > form in the Center column. The Home Page is one View + Presenter but > > > the Login form is a separate View + Presenter. They do not play > > > together and the Home View + Presenter always override the other Views > > > + Presenters. Even tried placing separate DIV hooks in the HTML page > > > to get the different views to attach to different nodes in the DOM but > > > to no avail. > > > > Several options that are being tried and tested: > > > 1. Play directly with the DOM (class) to swap widgets but then you > > > just end up having one View + Presenter and a lot of widgets. > > > 2. Creating a parent class for all Views and Presenters that contains > > > the logic and content for the East and West Panels and then attach the > > > new Views directly to the RootPanel. This is defeating the purpose of > > > AJAX as it is equivalent to redrawing the page with the exception of > > > the static parts. > > > 3. Go back to the drawing board by looking at the options > > > available:http://martinfowler.com/eaaDev/uiArchs.html > > > > Derek Greer has something that might > > > inspire:http://www.aspiringcraftsman.com/2007/08/interactive-application-arch... > > > > A .NET centric post about > > > this:http://bradwilson.typepad.com/blog/2008/06/composite-views.html > > > > Dolphin SmallTalk based discussion on > > > CompositeMVP:http://www.mimuw.edu.pl/~sl/teaching/00_01/Delfin_EC/Patterns/Composi.... > > > > Sean C. > > > > On Mar 18, 1:29 pm, Fabio Kaminski <[email protected]> wrote: > > > > > As far as i understand you have "windows" that contain widgets... like: > > > > > MainWidgetContainer (which owns) LoginWidget, HeaderWidget and so on.. > > > > LogoutWidgetContainer (owns) LogoutWidget, ComeBackSoonMessageWidget, > > > > etc.. > > > > > if is that the case, you would only call the go() which means > > > > "RootPanel.get().add()" > > > > when you wanna change from one widget container to another... > > > > MainWidgetContainer <-> LogoutWidgetContainer > > > > not LoginWidget > HeaderWidget or LogoutWidget... > > > > > as soon you establish this rule (you can even restrict go() method to > > > > allowing only widget containers) > > > > if you dont do it yet.. the only thing you need ins to assemble the > > > > Containers.. like: > > > > > public class MainView extends Composite implements Display { > > > > > final LoginView loginView; > > > > final HeaderView headerView; > > > > > (add those to this widget) > > > > (...) > > > > > } > > > > > Fabio Kaminski > > > > > On Thu, Mar 18, 2010 at 2:06 PM, Brian Reilly > > > > <[email protected]>wrote: > > > > > > It seems to me like you need a supervising presenter to coordinate > > > > > interactions among each of the panes of the application, in a > > > > > DockPanel as you suggest. The AppController would then bootstrap this > > > > > instead of managing what is shown in the root panel. Finally, the > > > > > logic that is in the AppController of the Contacts example would need > > > > > to be pushed down into this presenter or something that sits between > > > > > that and the contacts widget. > > > > > > Doing this, though, removes a lot of responsibility from the > > > > > AppController. I don't know that the AppController is a bad idea. It > > > > > may be useful for a simple example. However, I think it would be more > > > > > useful to have a more self-contained contacts widget that could be > > > > > reused without having to worry about the AppController. > > > > > > I haven't tried any of this myself yet, but I've been thinking about > > > > > similar issues related to managing view state when composing widgets > > > > > usingMVP. > > > > > > -Brian > > > > > > On Feb 27, 12:32 pm, Andrew <[email protected]> wrote: > > > > > > The idea is to have multiple presenters throwing views up into their > > > > > > own little piece of real estate on the screen, then depending on > > > > > > different events, swap out presenters. For instance I want user > > > > > > information in one little box on the screen, and a header across the > > > > > > top. I want the user information screen to disappear and show a > > > > > > modify > > > > > > user screen in it's place when they click the modify user button, > > > > > > but > > > > > > I don't want anything to happen to the header when that happens. I > > > > > > have a different presenter for each piece of the application, for > > > > > > instance the User Screen, a Header, a part that shows a list of > > > > > > items. > > > > > > I already tried to do this, but when an event happened, a new screen > > > > > > would show and wipe out another one. In my case the modify user > > > > > > button > > > > > > was clicked, and it wiped out the header. > > > > > > > I don't know how passing multiple containers to a presenter would > > > > > > solve this problem unless it was just a reference to a structure > > > > > > that > > > > > > was housing all of them. For instance a whole DockPanel gets passed > > > > > > down to each presenter and they all add themselves to the dock > > > > > > panel. > > > > > > I might try that and see what happens, but if anyone else has a > > > > > > better > > > > > > idea please let me know! > > > > > > > Andy > > > > > > > On Feb 26, 8:06 pm, Jim <[email protected]> wrote: > > > > > > > > modify Presenter.go(HasWidget container) to > > > > > > > Presenter.go(HasWidget... > > > > > > > containers). > > > > > > > > On Feb 26, 5:18 pm, Andrew <[email protected]> wrote: > > > > > > > > > Hey all. I've got a question about the GWT and more > > > > > > > > specifically the > > > > > > > >mvparchitecture tutorial > > > > > >http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architectur... > > > > > > > > > I've been messing around with this, and extending it for my own > > > > > > > > project, but i've run into a little problem. > > > > > > > > > if (token != null){ > > > > > > > > Presenter presenter = null; > > > > > > > > > if (token == "user"){ > > > > > > > > presenter = new UserPresenter(userRpcService, > > > > > eventBus, new > > > > > > > > UserView()); > > > > > > > > } > > > > > > > > if (token == "edit"){ > > > > > > > > presenter = new > > > > > > > > EditUserPresenter(userRpcService, > > > > > eventBus, new > > > > > > > > EditUserView()); > > > > > > > > } > > > > > > > > > if (presenter != null){ > > > > > > > > presenter.go(root); > > > > > > > > } > > > > > > > > > In this code, we are passing the root panel to the presenter in > > > > > > > > order > > > > > > > > to tell it which panel to attach to. The problem is that I've > > > > > > > > tried > > > > > > > > attaching a couple of vertical panels to the root panel, then > > > > > > > > passing > > > > > > > > those into separate presenters so that I can display multiple > > > > > > > > presenter simultaneously, but it doesn't work. When the app > > > > > > > > loads, it > > > > > > > > will load all the seperate panels successfully, but when it > > > > > > > > tries to > > > > > > > > switch between the UserPresenter and the EditUserPresenter, all > > > > > > > > my > > > > > > > > other panels are removed from the screen. > > > > > > > > > Does anyone have an answer for me why this won't work? I'm > > > > > > > > pretty > > > > > > > > stumped right now. Thanks! > > > > > > -- > > > > > 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]<google-web-toolkit%2Bunsubs > > > > > [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.
