package fr.openwide.core.wicket.more.markup.html.collection;
import java.io.Serializable;
import java.util.List;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.list.PageableListView;
import org.apache.wicket.markup.repeater.RefreshingView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import fr.openwide.core.wicket.more.markup.repeater.collection.CollectionView;
import fr.openwide.core.wicket.more.util.model.Models;
/**
* A {@link ListView} akin to {@link AbstractSerializedItemCollectionView}, which is itself a {@link RefreshingView}.
* @deprecated use {@link CollectionView} with {@link Models} instead :
* <pre>
* {@code
* new SerializedItem*View<T>("id", model);
* ->
* new CollectionView<T>("id", model, Models.<T>serializableModelFactory());
* }
* </pre>
*/
@Deprecated
public abstract class SerializedItemListView<T extends Serializable> extends PageableListView<T> {
private static final long serialVersionUID = -8621785529210100553L;
public SerializedItemListView(String id, IModel<? extends List<T>> model) {
this(id, model, Long.MAX_VALUE);
}
public SerializedItemListView(String id, IModel<? extends List<T>> model, long itemsPerPage) {
super(id, model, Integer.MAX_VALUE /* The constructor asks for an int, so we use the setter instead */);
setItemsPerPage(itemsPerPage);
}
public SerializedItemListView(String id, List<T> list) {
this(id, list, Long.MAX_VALUE);
}
public SerializedItemListView(String id, List<T> list, long itemsPerPage) {
super(id, list, Integer.MAX_VALUE /* The constructor asks for an int, so we use the setter instead */);
setItemsPerPage(itemsPerPage);
}
@Override
protected IModel<T> getListItemModel(IModel<? extends List<T>> listViewModel, int index) {
List<T> list = listViewModel.getObject();
return getItemModel(list == null ? null : list.get(index));
}
protected IModel<T> getItemModel(T object) {
return Model.of(object);
}
}