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");
}
}