package lt.inventi.wicket.component.repeater.expandable; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; /** * The only difference this view have comparing with its super class, * its that it counts itemId from zero, instead of 1, * which is more convinient as that is the same index as in list. * Also this class resets childIdCounter back to zero after component was rendered. * */ public abstract class ZeroIndexDataView<T> extends DataView<T>{ private transient int childIdCounter = 0; public ZeroIndexDataView(String id, IDataProvider<T> dataProvider) { this(id, dataProvider, 20); } public ZeroIndexDataView(String id, IDataProvider<T> dataProvider, int itemsPerPage) { super(id, dataProvider, itemsPerPage); } @Override protected void onBeforeRender(){ childIdCounter = 0; super.onBeforeRender(); } @Override public String newChildId(){ String id=String.valueOf(childIdCounter); childIdCounter++; return id; } @Override protected Item<T> newItem(String id, int index, IModel<T> model) { Item<T> item = super.newItem(id, index, model); if(index % 2 != 0){ item.add(new AttributeAppender("class", new Model<String>("odd"), " ")); } return item; } }