package fr.openwide.core.wicket.more.markup.repeater.table.builder.action;
import org.apache.wicket.model.IModel;
import fr.openwide.core.jpa.more.business.sort.ISort;
import fr.openwide.core.wicket.more.markup.html.action.IOneParameterAjaxAction;
import fr.openwide.core.wicket.more.markup.html.bootstrap.label.renderer.BootstrapRenderer;
import fr.openwide.core.wicket.more.markup.html.factory.IDetachableFactory;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.confirm.component.AjaxConfirmLink;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.confirm.component.AjaxConfirmLinkBuilder;
import fr.openwide.core.wicket.more.markup.repeater.table.builder.action.state.IActionColumnAddedConfirmActionState;
import fr.openwide.core.wicket.more.markup.repeater.table.builder.action.state.IActionColumnConfirmActionBuilderStepContent;
import fr.openwide.core.wicket.more.markup.repeater.table.builder.action.state.IActionColumnConfirmActionBuilderStepEndContent;
import fr.openwide.core.wicket.more.markup.repeater.table.builder.action.state.IActionColumnConfirmActionBuilderStepNo;
import fr.openwide.core.wicket.more.markup.repeater.table.builder.action.state.IActionColumnConfirmActionBuilderStepOnclick;
import fr.openwide.core.wicket.more.markup.repeater.table.builder.action.state.IActionColumnConfirmActionBuilderStepStart;
public class ActionColumnConfirmActionBuilder<T, S extends ISort<?>> implements
IActionColumnConfirmActionBuilderStepStart<T, S>, IActionColumnConfirmActionBuilderStepContent<T, S>,
IActionColumnConfirmActionBuilderStepEndContent<T, S>, IActionColumnConfirmActionBuilderStepNo<T, S>,
IActionColumnConfirmActionBuilderStepOnclick<T, S> {
private final ActionColumnBuilder<T, S> actionColumnBuilder;
private final BootstrapRenderer<? super T> renderer;
private AjaxConfirmLinkBuilder<T> ajaxConfirmLinkBuilder;
public ActionColumnConfirmActionBuilder(ActionColumnBuilder<T, S> actionColumnBuilder, BootstrapRenderer<? super T> renderer) {
this.actionColumnBuilder = actionColumnBuilder;
this.renderer = renderer;
ajaxConfirmLinkBuilder = (AjaxConfirmLinkBuilder<T>) AjaxConfirmLink.<T>build();
}
@Override
public IActionColumnConfirmActionBuilderStepContent<T, S> title(IModel<String> titleModel) {
ajaxConfirmLinkBuilder.title(titleModel);
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepContent<T, S> title(IDetachableFactory<? super IModel<T>, ? extends IModel<String>> titleModelFactory) {
ajaxConfirmLinkBuilder.title(titleModelFactory);
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepOnclick<T, S> deleteConfirmation() {
ajaxConfirmLinkBuilder.deleteConfirmation();
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepEndContent<T, S> content(IModel<String> contentModel) {
ajaxConfirmLinkBuilder.content(contentModel);
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepEndContent<T, S> content(IDetachableFactory<? super IModel<T>, ? extends IModel<String>> contentModelFactory) {
ajaxConfirmLinkBuilder.content(contentModelFactory);
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepEndContent<T, S> keepMarkup() {
ajaxConfirmLinkBuilder.keepMarkup();
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepEndContent<T, S> cssClassNamesModel(IModel<String> cssClassNamesModel) {
ajaxConfirmLinkBuilder.cssClassNamesModel(cssClassNamesModel);
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepNo<T, S> yes(IModel<String> yesLabelModel) {
ajaxConfirmLinkBuilder.yes(yesLabelModel);
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepOnclick<T, S> yesNo() {
ajaxConfirmLinkBuilder.yesNo();
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepOnclick<T, S> confirm() {
ajaxConfirmLinkBuilder.confirm();
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepOnclick<T, S> validate() {
ajaxConfirmLinkBuilder.validate();
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepOnclick<T, S> save() {
ajaxConfirmLinkBuilder.save();
return this;
}
@Override
public IActionColumnConfirmActionBuilderStepOnclick<T, S> no(IModel<String> noLabelModel) {
ajaxConfirmLinkBuilder.no(noLabelModel);
return this;
}
@Override
public IActionColumnAddedConfirmActionState<T, S> onClick(IOneParameterAjaxAction<? super IModel<T>> onClick) {
return actionColumnBuilder.addConfirmAction(renderer, ajaxConfirmLinkBuilder.onClick(onClick));
}
}