package fr.openwide.core.wicket.more.markup.repeater.table.builder.action.factory; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.model.IModel; import fr.openwide.core.wicket.more.markup.html.action.IOneParameterAjaxAction; import fr.openwide.core.wicket.more.markup.html.factory.IOneParameterComponentFactory; public class ActionColumnAjaxActionFactory<T> implements IOneParameterComponentFactory<AjaxLink<T>, IModel<T>> { private static final long serialVersionUID = 1L; private final IOneParameterAjaxAction<? super IModel<T>> action; public ActionColumnAjaxActionFactory(IOneParameterAjaxAction<? super IModel<T>> action) { super(); this.action = action; } @Override public AjaxLink<T> create(String wicketId, final IModel<T> parameter) { AjaxLink<T> link = new AjaxLink<T>(wicketId, parameter) { private static final long serialVersionUID = 1L; @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { super.updateAjaxAttributes(attributes); action.updateAjaxAttributes(attributes, parameter); } @Override public void onClick(AjaxRequestTarget target) { action.execute(target, parameter); } }; link.add( action.getActionAvailableCondition(parameter).thenShowInternal() ); return link; } @Override public void detach() { action.detach(); } }