package sushi.application.components.form;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import de.agilecoders.wicket.Bootstrap;
/**
* This is a {@link Panel} subclass and is rendered as a Bootstrap modal for visualizing a kind of pop-up.
* @author micha
*/
public abstract class BootstrapModal extends Panel {
private static final long serialVersionUID = 1L;
private String heading;
private String id;
Model<String> visibleModel = new Model<String>("display: block;");
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
Bootstrap.renderHead(response);
}
/**
* Constructor for a Bootstrap modal for visualizing a kind of pop-up.
* @param id
* @param heading
*/
public BootstrapModal(String id, String heading) {
super(id);
this.id = id;
this.heading = heading;
this.add(AttributeModifier.replace("id", id));
this.add(AttributeModifier.replace("class", "modal hide fade in"));
this.add(AttributeModifier.replace("style", "display: none;"));
buildMainLayout();
}
private void buildMainLayout() {
add(new Label("modalHeadline", heading));
}
/**
* Show the modal in an ajax request.
* @param target
*/
public void show(AjaxRequestTarget target) {
target.appendJavaScript("$(\"#" + id + "\").modal('toggle'); ");
}
/**
* Close the modal in an ajax request.
* @param target
*/
public void close(AjaxRequestTarget target) {
target.appendJavaScript("$(\"#" + id + "\").modal('hide'); ");
}
}