package fr.openwide.core.wicket.more.markup.repeater.table.builder.action.state;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.model.IModel;
import fr.openwide.core.commons.util.binding.AbstractCoreBinding;
import fr.openwide.core.jpa.more.business.sort.ISort;
import fr.openwide.core.wicket.more.link.descriptor.generator.ILinkGenerator;
import fr.openwide.core.wicket.more.link.descriptor.mapper.ILinkDescriptorMapper;
import fr.openwide.core.wicket.more.markup.html.action.IOneParameterAction;
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.IOneParameterComponentFactory;
import fr.openwide.core.wicket.more.markup.repeater.table.builder.state.IAddedCoreColumnState;
public interface IActionColumnBuildState<T, S extends ISort<?>> {
IActionColumnAddedLinkState<T, S> addLink(BootstrapRenderer<? super T> renderer,
ILinkDescriptorMapper<? extends ILinkGenerator, ? super IModel<T>> mapper);
<C> IActionColumnAddedLinkState<T, S> addLink(BootstrapRenderer<? super T> renderer,
AbstractCoreBinding<? super T, C> binding,
ILinkDescriptorMapper<? extends ILinkGenerator, ? super IModel<C>> mapper);
IActionColumnAddedLinkState<T, S> addLabelledLink(BootstrapRenderer<? super T> renderer,
ILinkDescriptorMapper<? extends ILinkGenerator, ? super IModel<T>> mapper);
<C> IActionColumnAddedLinkState<T, S> addLabelledLink(BootstrapRenderer<? super T> renderer,
AbstractCoreBinding<? super T, C> binding,
ILinkDescriptorMapper<? extends ILinkGenerator, ? super IModel<C>> mapper);
IActionColumnAddedAjaxActionState<T, S> addAction(BootstrapRenderer<? super T> renderer,
IOneParameterAjaxAction<? super IModel<T>> action);
IActionColumnAddedAjaxActionState<T, S> addLabelledAction(BootstrapRenderer<? super T> renderer,
IOneParameterAjaxAction<? super IModel<T>> action);
IActionColumnAddedActionState<T, S> addAction(BootstrapRenderer<? super T> renderer,
IOneParameterAction<? super IModel<T>> action);
IActionColumnAddedActionState<T, S> addLabelledAction(BootstrapRenderer<? super T> renderer,
IOneParameterAction<? super IModel<T>> action);
IActionColumnConfirmActionBuilderStepStart<T, S> addConfirmAction(BootstrapRenderer<? super T> renderer);
IActionColumnAddedActionState<T, S> addAction(BootstrapRenderer<? super T> renderer,
IOneParameterComponentFactory<? extends AbstractLink, IModel<T>> factory);
IActionColumnAddedActionState<T, S> addLabelledAction(BootstrapRenderer<? super T> renderer,
IOneParameterComponentFactory<? extends AbstractLink, IModel<T>> factory);
IActionColumnBuildState<T, S> withClassOnElements(String cssClassOnElements);
IAddedCoreColumnState<T, S> end();
}