OK, it looks like I might have managed two birds with one stone. Basically I have a leave flag that I set to true at the creation of the activity. This flag is set to false if there is a PlaceRequestEvent and the new place is not null. In mayStop I first save my workspace and then I check the flag. If the flag is set to false I return a message. If it is set to true then I clean up my activity. The point is I do not need to clean up my activity if I am moving away from the application. Now I am no MVP guru like you, so if you see a possible flaw in this approach, please let me know.
Thanks again. On Tuesday, 3 July 2012 10:01:59 UTC+2, Thomas Lefort wrote: > > Hi Thomas, thanks for the detailed explanation. I added a window closing > handler but I then have the issue of handling mayStop clean up, ie mayStop > seems to be called first and does the cleanup, in which case if the user > decides to cancel the leave of the activity, the activity is in a cleaned > up state and not usable any more, eg no more event handlers. > > I will try to add a PlaceChangeRequest.Handler to raise a flag, in the > hope that it gets triggered before the mayStop. If it does then I don't > need the window closing handler anymore. > > I still think this will not cover all cases and the only viable solution > is to make (optimised) periodic saves. > > > On Monday, 2 July 2012 10:44:39 UTC+2, Thomas Broyer wrote: >> >> >> On Monday, July 2, 2012 9:31:56 AM UTC+2, Thomas Lefort wrote: >>> >>> Hi, >>> >>> I was relying on mayStop to save my user's project when they leave the >>> activity but it seems to work in some cases only, ie when navigating from >>> one activity to another but not when leaving the application or closing the >>> browser... I don't know if it is normal? may be there is "not enough time" >>> to send the last message with all the project's data? >>> >> >> That's basically what happens yes. >> See http://code.google.com/p/google-web-toolkit/issues/detail?id=4898and >> http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigating-across-documents >> among >> others. >> >> >>> If it is then I need a whole new strategy to make sure data is saved >>> when the user leaves. I would be interested in knowing of any suggestion to >>> solve the issue. >>> I have planned to save on every change made, but it is quite heavy as >>> there are many frequent updates possible (just moving the map would trigger >>> a save). An optimisation to this would be a combination of a flag for >>> tracking changes and a timer to make periodic saves, eg every minute or so, >>> when the project has changed. >>> Anyway if anyone has recommendations on how to do this I would be very >>> happy hearing them. >>> >> >> See http://code.google.com/p/google-web-toolkit/issues/detail?id=6726#c5 >> Basically: onbeforeunload (which calls mayStop of the activities) exists >> so that you can tell the user there are unsaved changes and he can cancel >> the navigation to save them before navigating away again. >> With a PlaceChangeRequestEvent you could easily tell an onbeforeunload >> from an internal navigation (the target place is 'null'), but that isn't >> exposed to activities (mayStop). I suppose you could workaround this using >> a PlaceChangeRequestEvent.Handler (or Window.ClosingHandler) and shared >> state (considering mayStop methods are called first, they would store a >> flag in the shared state, and the PlaceChangeRequestEvent.Handler would >> setWarning if the target –place is 'null' –resp. the Window.ClosingHandler >> would setMessage– when the shared state indicates unsaved changes; but of >> course, you should also handle the case where the mayStop methods are >> called *last*); and you'd save data in your activities' onStop(), which are >> not called onbeforeunload. >> > -- 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/-/HYhUU0tr1N8J. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.