I tried to use the similar code for PromptingSelectionModel class. It works 
but the only different is that for unsaved form data, although it prevents 
the selection of next cell it leaves a mild yellow selection on. So I see 
blue selection of first cell and mild yellow selection on second cell. Do I 
need to clear that selection on second cell if unsaved form data and 
window.confirm yields true?

On Thursday, November 10, 2011 5:12:57 AM UTC-6, Thomas Broyer wrote:
>
> It's not about cancelling the event; it's about *not* routing it to a 
> DefaultSelectionEventManager (which changes selection depending on the 
> event). It also means you shouldn't addCellPreviewHandler, but instead use 
> the two-argument overload of 
> setSelectionModel<http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/cellview/client/AbstractHasData.html#setSelectionModel(com.google.gwt.view.client.SelectionModel,+com.google.gwt.view.client.CellPreviewEvent.Handler)>
> .
>
> It's as easy as:
> myCellList.setSelectionModel(mySelectionModel, 
> CellPreviewEvent.Handler<MyObject>() {
>    private final CellPreviewEvent.Handler<MyObject> 
> defaultSelectionManager 
> = DefaultSelectionEventManager.createDefaultManager();
>    @Override
>    public void onCellPreview(CellPreviewEvent<MyObject> event) {
>       if (hasUnsavedChanged() && !Window.prompt("There are unsaved 
> changes, are you sure you want to continue?") {
>          return;
>       }
>       return defaultSelectionManager.onCellPreview(event);
>    }
> });
>
> Beware though, if you have a cell that "handlesSelection()", you'll have 
> to handle the case there (so that it doesn't change selection if there are 
> unsaved changes).
>
> Oh, and it just occurred to me that you could also simply code that within 
> your SelectionModel too:
> class PromptingSelectionModel<T> extends SingleSelectionModel<T> {
>    @Override
>    public void setSelected(T object, boolean selected) {
>       if (hasUnsavedChanged() && !Window.prompt("There are unsaved 
> changes, are you sure you want to continue?") {
>          return;
>       }
>       super.setSelected(object, selected);
>    }
> }
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to