package fr.openwide.core.wicket.more.markup.repeater.table.column;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import com.google.common.base.Function;
import fr.openwide.core.commons.util.binding.AbstractCoreBinding;
import fr.openwide.core.jpa.more.business.sort.ISort;
import fr.openwide.core.wicket.more.markup.html.bootstrap.label.component.BootstrapLabel;
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.model.BindingModel;
import fr.openwide.core.wicket.more.model.ReadOnlyModel;
public class CoreBootstrapLabelColumn<T, S extends ISort<?>, C> extends AbstractCoreColumn<T, S> {
private static final long serialVersionUID = -5344972073351010752L;
private final IDetachableFactory<IModel<T>, ? extends IModel<C>> modelFactory;
private final BootstrapRenderer<? super C> renderer;
public CoreBootstrapLabelColumn(IModel<?> headerLabelModel, AbstractCoreBinding<? super T, C> binding,
final BootstrapRenderer<? super C> renderer) {
super(headerLabelModel);
this.modelFactory = BindingModel.factory(binding);
this.renderer = renderer;
}
public CoreBootstrapLabelColumn(IModel<?> headerLabelModel, Function<? super T, C> function,
final BootstrapRenderer<? super C> renderer) {
super(headerLabelModel);
this.modelFactory = ReadOnlyModel.factory(function);
this.renderer = renderer;
}
@Override
public void populateItem(Item<ICellPopulator<T>> cellItem, String componentId, IModel<T> rowModel) {
cellItem.add(new BootstrapLabel<>(componentId, modelFactory.create(rowModel), renderer));
}
}