You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by jchappelle <jc...@4redi.com> on 2009/03/11 18:30:25 UTC

Re: Switch tab only if user doesn't want to save changes.

Could you post how you are detecting unsaved changes? I am trying to
implement something similar.

Thanks,

Josh


Fabio Fioretti wrote:
> 
> Thank you Maurice,
> 
> what you suggested matched the way I was trying to solve the problem,
> but I had to add a bit of client-side logic to decide whether to
> display the confirm dialog or not, basing the decision on the
> enabled/disabled status of the save button inside the first tab, which
> already implemented the logic to detect unsaved changes.
> 
> I paste the relevant bits to share my solution with you all. Probably
> it's not optimal at all, so please do feel free to
> comment/correct/laugh. :)
> 
> @Override
> protected IAjaxCallDecorator getAjaxCallDecorator() {
> 	// Add custom decorator for tabs other than the one containing
> detailsPanel
> 	if ( index != 0 ) {
> 		return new AjaxCallDecorator() {
> 			@Override
> 			public CharSequence decorateScript( CharSequence script ) {
> 				// Ask for user confirmation, as tab-switching discards unsaved
> changes.
> 				final String saveButton = detailsPanel != null ?
> detailsPanel.getSaveButtonMarkupId() : "";
> 				final StringBuffer decoration = new StringBuffer();
> 				return decoration.append(String.format("if(
> document.getElementById('%s')!= null ", saveButton))
> 				  .append(String.format("&&
> !document.getElementById('%s').disabled ", saveButton))
> 				  .append("&& !confirm('Please note that unsaved changes will be
> lost.\\n\\nDo you want to switch tab?')) ")
> 				  .append("{ return false; }")
> 				  .append(script);
> 			}
> 		};
> 	}
> 	return super.getAjaxCallDecorator();
> }
> 
> 
> Cheers,
> 
> Fabio Fioretti - WindoM
> 
> 
> On Sun, Jul 13, 2008 at 9:43 PM, Maurice Marrink <ma...@gmail.com>
> wrote:
>> Override newLink to return an ajaxfallbacklink where you have
>> overridden the getAjaxCallDecorator method to return a custom
>> IAjaxCallDecorator.
>> Use that to insert a javascript confirm dialog.
>>
>> Maurice
>>
>> On Fri, Jul 11, 2008 at 7:28 PM, Fabio Fioretti
>> <wi...@gmail.com> wrote:
>>> Hi all,
>>>
>>> thanks in advance for your precious support.
>>>
>>> I have an AjaxTabbedPanel with two tabs. In the first tab there is a
>>> panel with a form, some input fields and a save button; the content of
>>> the second tab is irrelevant.
>>>
>>> Use-case:
>>>
>>> 1 - user selects first tab;
>>> 2 - user makes some changes in the input fields but doesn't click the
>>> save button;
>>> 3 - user selects second tab.
>>>
>>> On step 3, users loses all his updates without being warned.
>>>
>>> I would like to add a javascript confirm dialog to be triggered only
>>> when some changes have been performed but not saved (no ModalWindow,
>>> just javascript). I mean something like: "There are some unsaved
>>> changes that will be lost, do you really want to switch tab?" <OK>
>>> <Cancel>. OK brings the user to the second tab, Cancel makes him stay
>>> in the first tab.
>>>
>>> The panel inside the first tab has a handy boolean hasUnsavedChanges()
>>> method, but I don't know where I could call it and how to inject an
>>> "if (!confirm('...')) return false;".
>>>
>>> Maybe in the onClick(AjaxRequestTarget target) method of the
>>> AjaxFallbackLink returned by AjaxTabbedPanel's newLink() method?
>>>
>>> What's the best way to do it?
>>>
>>>
>>> Thank you very much,
>>>
>>> Fabio Fioretti - WindoM
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Switch-tab-only-if-user-doesn%27t-want-to-save-changes.-tp18408885p22460250.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: Switch tab only if user doesn't want to save changes.

Posted by Fabio Fioretti <wi...@gmail.com>.
On Wed, Mar 11, 2009 at 6:30 PM, jchappelle <jc...@4redi.com> wrote:
>
> Could you post how you are detecting unsaved changes? I am trying to
> implement something similar.

Hi Josh,
it depends on the kind of data you are dealing with, but basically it
is just a matter of keeping the initial model object values somewhere
and comparing them with the new ones resulting from form updating by
the user.

Regards,

Fabio Fioretti - WindoM

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org