/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.web.wicket; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.IAjaxCallDecorator; import org.apache.wicket.ajax.calldecorator.AjaxPreprocessingCallDecorator; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; /** * A {@link SimpleAjaxLink} that asks a confirmation by using a Javascript confirm * dialog before carrying out its job */ @SuppressWarnings("serial") public abstract class ConfirmationAjaxLink extends SimpleAjaxLink { IModel confirm; public ConfirmationAjaxLink(String id, IModel linkModel, String label, String confirm) { this( id, linkModel, new Model( label ), new Model( confirm ) ); } public ConfirmationAjaxLink(String id, IModel linkModel, IModel labelModel, IModel confirm) { super(id, linkModel, labelModel); this.confirm = confirm; } @Override protected AjaxLink buildAjaxLink(IModel linkModel) { return new AjaxLink("link", linkModel) { @Override protected IAjaxCallDecorator getAjaxCallDecorator() { return new AjaxPreprocessingCallDecorator(super .getAjaxCallDecorator()) { @Override public CharSequence preDecorateScript(CharSequence script) { return "if(!confirm('" + confirm.getObject() + "')) return false;" + script; } }; } @Override public void onClick(AjaxRequestTarget target) { ConfirmationAjaxLink.this.onClick(target); } }; } }