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.

Reply via email to