package be.selckin.swu.form; import be.selckin.swu.LabeledAjaxButton; import be.selckin.swu.LabeledButton; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; public class InlineConfirmButton extends Panel { private boolean showConfirm; public InlineConfirmButton(String id) { super(id); } @Override protected void onInitialize() { super.onInitialize(); setOutputMarkupId(true); add(new LabeledAjaxButton("main", newSubmitLabel()) { @Override protected void onConfigure() { super.onConfigure(); setVisible(!showConfirm); } @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { showConfirm = true; target.add(InlineConfirmButton.this); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { // Impossible } }.setDefaultFormProcessing(false)); add(new WebMarkupContainer("confirm") { @Override protected void onConfigure() { super.onConfigure(); setVisible(showConfirm); } @Override protected void onInitialize() { super.onInitialize(); add(newMessage("message")); add(new LabeledButton("confirm", newConfirmLabel()) { @Override public void onSubmit() { showConfirm = false; } }); add(new LabeledAjaxButton("cancel", newCancelLabel()) { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { showConfirm = false; target.add(InlineConfirmButton.this); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { // impossible } }.setDefaultFormProcessing(false)); } }); } protected IModel<String> newCancelLabel() { return Model.of("Cancel"); } protected IModel<String> newSubmitLabel() { return Model.of("Submit"); } protected Component newMessage(String id) { return new Label(id, "Are you sure?"); } protected IModel<String> newConfirmLabel() { return Model.of("Confirm"); } }