package de.flower.common.ui.modal;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.IHeaderResponse;
/**
* This behavior allows the user to close a modal window with the ESC key.
*/
class CloseOnEscBehavior extends AbstractDefaultAjaxBehavior {
private static final String JS_ID = "closeOnEscBehavior";
private final ModalWindow modal;
public CloseOnEscBehavior(final ModalWindow modal) {
this.modal = modal;
}
@Override
protected void respond(final AjaxRequestTarget target) {
modal.close(target);
}
@Override
public void renderHead(final Component component, final IHeaderResponse response) {
// TODO (flowerrrr - 13.04.12) use #renderOnDomReady to avoid RMT-573
response.renderJavaScript("$(document).ready(function() {\n"
+ " $(document).bind('keyup', function(evt) {\n"
+ " if (evt.keyCode == 27) {\n"
+ getCallbackScript() + "\n"
+ " evt.preventDefault();\n"
+ " }\n"
+ " });\n"
+ "});", JS_ID);
}
}