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=4898 and 
> 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/-/0o83GO3ADtgJ.
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.

Reply via email to