Author: jcompagner
Date: Sat Dec 9 03:03:41 2006
New Revision: 484967
URL: http://svn.apache.org/viewvc?view=rev&rev=484967
Log:
improved docs for IDataProvider
made some java5 generics in the repeater package
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataView.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataViewBase.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/GridView.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/IDataProvider.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/pageable/AbstractPageableView.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/DefaultItemReuseStrategy.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemFactory.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemReuseStrategy.java
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/RefreshingView.java
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataView.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataView.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataView.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataView.java
Sat Dec 9 03:03:41 2006
@@ -61,8 +61,10 @@
*
* @author Igor Vaynberg (ivaynberg)
*
+ * @param <T>
+ * Type of model object this component holds
*/
-public abstract class DataView extends DataViewBase
+public abstract class DataView<T> extends DataViewBase<T>
{
/**
@@ -73,7 +75,7 @@
* @param dataProvider
* data provider
*/
- public DataView(MarkupContainer parent, final String id, IDataProvider
dataProvider)
+ public DataView(MarkupContainer<?> parent, final String id,
IDataProvider<T> dataProvider)
{
super(parent, id, dataProvider);
}
@@ -88,7 +90,7 @@
* @param itemsPerPage
* items per page
*/
- public DataView(MarkupContainer parent, final String id, IDataProvider
dataProvider,
+ public DataView(MarkupContainer<?> parent, final String id,
IDataProvider<T> dataProvider,
int itemsPerPage)
{
super(parent, id, dataProvider);
@@ -117,7 +119,7 @@
/**
* @return data provider
*/
- public IDataProvider getDataProvider()
+ public IDataProvider<T> getDataProvider()
{
return internalGetDataProvider();
}
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataViewBase.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataViewBase.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataViewBase.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/DataViewBase.java
Sat Dec 9 03:03:41 2006
@@ -22,6 +22,7 @@
import wicket.extensions.markup.html.repeater.pageable.AbstractPageableView;
import wicket.extensions.markup.html.repeater.refreshing.RefreshingView;
import wicket.markup.html.navigation.paging.IPageable;
+import wicket.model.IModel;
/**
* Base class for data views.
@@ -36,10 +37,13 @@
* @see RefreshingView
*
* @author Igor Vaynberg (ivaynberg)
+ *
+ * @param <T>
+ * Type of model object this component holds
*/
-public abstract class DataViewBase extends AbstractPageableView
+public abstract class DataViewBase<T> extends AbstractPageableView<T>
{
- private IDataProvider dataProvider;
+ private IDataProvider<T> dataProvider;
/**
* @param parent
@@ -49,7 +53,7 @@
* @param dataProvider
* data provider
*/
- public DataViewBase(MarkupContainer parent, final String id,
IDataProvider dataProvider)
+ public DataViewBase(MarkupContainer<?> parent, final String id,
IDataProvider<T> dataProvider)
{
super(parent, id);
if (dataProvider == null)
@@ -62,16 +66,16 @@
/**
* @return data provider associated with this view
*/
- protected final IDataProvider internalGetDataProvider()
+ protected final IDataProvider<T> internalGetDataProvider()
{
return dataProvider;
}
@Override
- protected final Iterator getItemModels(int offset, int count)
+ protected final Iterator<IModel<T>> getItemModels(int offset, int count)
{
- return new ModelIterator(internalGetDataProvider(), offset,
count);
+ return new ModelIterator<T>(internalGetDataProvider(), offset,
count);
}
/**
@@ -80,11 +84,13 @@
*
* @author Igor Vaynberg (ivaynberg)
*
+ * @param <T>
+ *
*/
- private static final class ModelIterator implements Iterator
+ private static final class ModelIterator<T> implements
Iterator<IModel<T>>
{
- private Iterator items;
- private IDataProvider dataProvider;
+ private Iterator<T> items;
+ private IDataProvider<T> dataProvider;
private int max;
private int index;
@@ -98,7 +104,7 @@
* @param count
* max number of items to return
*/
- public ModelIterator(IDataProvider dataProvider, int offset,
int count)
+ public ModelIterator(IDataProvider<T> dataProvider, int offset,
int count)
{
this.items = dataProvider.iterator(offset, count);
this.dataProvider = dataProvider;
@@ -124,7 +130,7 @@
/**
* @see java.util.Iterator#next()
*/
- public Object next()
+ public IModel<T> next()
{
index++;
return dataProvider.model(items.next());
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/GridView.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/GridView.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/GridView.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/GridView.java
Sat Dec 9 03:03:41 2006
@@ -18,6 +18,7 @@
import java.util.Iterator;
+import wicket.Component;
import wicket.MarkupContainer;
import wicket.extensions.markup.html.repeater.RepeatingView;
import wicket.extensions.markup.html.repeater.refreshing.Item;
@@ -50,8 +51,10 @@
* @author Igor Vaynberg
* @author Christian Essl
*
+ * @param <T>
+ * Type of model object this component holds
*/
-public abstract class GridView extends DataViewBase
+public abstract class GridView<T> extends DataViewBase<T>
{
private int columns = 1;
@@ -66,7 +69,7 @@
* @param dataProvider
* data provider
*/
- public GridView(MarkupContainer parent, final String id, IDataProvider
dataProvider)
+ public GridView(MarkupContainer<?> parent, final String id,
IDataProvider<T> dataProvider)
{
super(parent, id, dataProvider);
}
@@ -87,7 +90,7 @@
* number of colums
* @return this for chaining
*/
- public GridView setColumns(int cols)
+ public GridView<T> setColumns(int cols)
{
if (cols < 1)
{
@@ -139,7 +142,7 @@
* number of rows
* @return this for chaining
*/
- public GridView setRows(int rows)
+ public GridView<T> setRows(int rows)
{
if (rows < 1)
{
@@ -201,7 +204,7 @@
@Override
- protected void addItems(Iterator items)
+ protected void addItems(Iterator<Item<T>> items)
{
if (items.hasNext())
{
@@ -212,16 +215,16 @@
do
{
// Build a row
- Item rowItem = newRowItem(newChildId(), row);
- new RepeatingView(rowItem, "cols");
+ Item<T> rowItem = newRowItem(newChildId(), row);
+ new RepeatingView<T>(rowItem, "cols");
// Populate the row
for (int index = 0; index < cols; index++)
{
- final Item cellItem;
+ final Item<T> cellItem;
if (items.hasNext())
{
- cellItem = (Item)items.next();
+ cellItem = items.next();
}
else
{
@@ -242,7 +245,7 @@
/**
* @return data provider
*/
- public IDataProvider getDataProvider()
+ public IDataProvider<T> getDataProvider()
{
return internalGetDataProvider();
}
@@ -251,9 +254,9 @@
* @see
wicket.extensions.markup.html.repeater.pageable.AbstractPageableView#getItems()
*/
@Override
- public Iterator getItems()
+ public Iterator<Item<T>> getItems()
{
- return new ItemsIterator(iterator());
+ return new ItemsIterator<T>(iterator());
}
/**
@@ -263,7 +266,7 @@
* @param item
* Item object
*/
- abstract protected void populateEmptyItem(Item item);
+ abstract protected void populateEmptyItem(Item<T> item);
/**
* Create a Item which represents an empty cell (there is no model for
it in
@@ -273,9 +276,9 @@
* @param index
* @return created item
*/
- protected Item newEmptyItem(final String id, int index)
+ protected Item<T> newEmptyItem(final String id, int index)
{
- return new Item(this, id, index, null);
+ return new Item<T>(this, id, index, null);
}
/**
@@ -285,29 +288,31 @@
* @param index
* @return created Item
*/
- protected Item newRowItem(final String id, int index)
+ protected Item<T> newRowItem(final String id, int index)
{
- return new Item(this, id, index, null);
+ return new Item<T>(this, id, index, null);
}
/**
* Iterator that iterats over all items in the cells
*
* @author igor
- *
+ *
+ * @param <T>
+ * Type of model object this component holds
*/
- private static class ItemsIterator implements Iterator
+ private static class ItemsIterator<T> implements Iterator<Item<T>>
{
- private Iterator rows;
- private Iterator cells;
+ private Iterator<Component> rows;
+ private Iterator<Item<T>> cells;
- private Item next;
+ private Item<T> next;
/**
* @param rows
* iterator over child row views
*/
- public ItemsIterator(Iterator rows)
+ public ItemsIterator(Iterator<Component> rows)
{
this.rows = rows;
findNext();
@@ -332,9 +337,9 @@
/**
* @see java.util.Iterator#next()
*/
- public Object next()
+ public Item<T> next()
{
- Item item = next;
+ Item<T> item = next;
findNext();
return item;
}
@@ -345,16 +350,16 @@
if (cells != null && cells.hasNext())
{
- next = (Item)cells.next();
+ next = cells.next();
}
while (rows.hasNext())
{
- MarkupContainer row =
(MarkupContainer)rows.next();
+ MarkupContainer<?> row =
(MarkupContainer)rows.next();
cells =
((MarkupContainer)row.iterator().next()).iterator();
if (cells.hasNext())
{
- next = (Item)cells.next();
+ next = cells.next();
break;
}
}
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/IDataProvider.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/IDataProvider.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/IDataProvider.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/IDataProvider.java
Sat Dec 9 03:03:41 2006
@@ -23,31 +23,32 @@
/**
* Interface used to provide data to data views.
- * <p>
- * Note that if the IDataProvider implementation implements [EMAIL PROTECTED]
IDetachable}
- * interface, the [EMAIL PROTECTED] IDetachable#detach()} method will be
called at the end
- * of request.
*
- * <p>
* Example:
*
* <pre>
- * class UsersProvider implements IDataProvider() {
- *
- * Iterator iterator(int first, int count) {
- *
((MyApplication)Application.get()).getUserDao().iterator(first, count);
- * }
- *
- * int size() {
- * ((MyApplication)Application.get()).getUserDao().getCount();
- * }
- *
- * IModel model(Object object) {
- * return new DetachableUserModel((User)object);
- * }
+ * class UsersProvider implements IDataProvider<User>() {
+ *
+ * Iterator<User> iterator(int first, int count) {
+ * MyApplication.get().getUserDao().iterator(first, count);
* }
+ *
+ * int size() {
+ * MyApplication.get().getUserDao().getCount();
+ * }
+ *
+ * IModel<User> model(User user) {
+ * return new DetachableUserModel<User>(user);
+ * }
+ * }
* </pre>
*
+ * You can use the [EMAIL PROTECTED] IDetachable#detach()} method for cleaning
up your
+ * IDataProvider instance. So that you can do one query that returns both
+ * the size and the values if your dataset is small enough the be able to
+ * do that.
+ *
+ * @see IDetachable
* @see DataViewBase
* @see DataView
* @see GridView
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/pageable/AbstractPageableView.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/pageable/AbstractPageableView.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/pageable/AbstractPageableView.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/pageable/AbstractPageableView.java
Sat Dec 9 03:03:41 2006
@@ -44,8 +44,11 @@
* @see wicket.markup.html.navigation.paging.IPageable
*
* @author Igor Vaynberg (ivaynberg)
+ *
+ * @param <T>
+ * Type of model object this component holds
*/
-public abstract class AbstractPageableView extends RefreshingView implements
IPageable
+public abstract class AbstractPageableView<T> extends RefreshingView<T>
implements IPageable
{
/**
* Keeps track of the number of items we show per page. The default is
@@ -68,7 +71,7 @@
/** @see wicket.Component#Component(MarkupContainer,String, IModel) */
- public AbstractPageableView(MarkupContainer parent, final String id,
IModel model)
+ public AbstractPageableView(MarkupContainer<?> parent, final String id,
IModel<T> model)
{
super(parent, id, model);
clearCachedItemCount();
@@ -76,7 +79,7 @@
/** @see wicket.Component#Component(MarkupContainer,String) */
- public AbstractPageableView(MarkupContainer parent, final String id)
+ public AbstractPageableView(MarkupContainer<?> parent, final String id)
{
super(parent, id);
clearCachedItemCount();
@@ -90,14 +93,14 @@
* @return iterator over models for items in the current page
*/
@Override
- protected Iterator getItemModels()
+ protected Iterator<IModel<T>> getItemModels()
{
int offset = getViewOffset();
int size = getViewSize();
- Iterator models = getItemModels(offset, size);
+ Iterator<IModel<T>> models = getItemModels(offset, size);
- models = new CappedIteratorAdapter(models, size);
+ models = new CappedIteratorAdapter<T>(models, size);
return models;
}
@@ -119,7 +122,7 @@
* number of items that will be showin in the current page
* @return an iterator over models for items in the current page
*/
- protected abstract Iterator getItemModels(int offset, int size);
+ protected abstract Iterator<IModel<T>> getItemModels(int offset, int
size);
//
/////////////////////////////////////////////////////////////////////////
@@ -340,12 +343,14 @@
/**
* Iterator adapter that makes sure only the specified max number of
items
* can be accessed from its delegate.
+ *
+ * @param <T>
*/
- private static class CappedIteratorAdapter implements Iterator
+ private static class CappedIteratorAdapter<T> implements
Iterator<IModel<T>>
{
private int max;
private int index;
- private Iterator delegate;
+ private Iterator<IModel<T>> delegate;
/**
* Constructor
@@ -355,7 +360,7 @@
* @param max
* maximum number of items that can be accessed.
*/
- public CappedIteratorAdapter(Iterator delegate, int max)
+ public CappedIteratorAdapter(Iterator<IModel<T>> delegate, int
max)
{
this.delegate = delegate;
this.max = max;
@@ -380,7 +385,7 @@
/**
* @see java.util.Iterator#next()
*/
- public Object next()
+ public IModel<T> next()
{
if (index >= max)
{
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/DefaultItemReuseStrategy.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/DefaultItemReuseStrategy.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/DefaultItemReuseStrategy.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/DefaultItemReuseStrategy.java
Sat Dec 9 03:03:41 2006
@@ -29,8 +29,10 @@
*
* @author Igor Vaynberg (ivaynberg)
*
+ * @param <T>
+ * Type of model object this component holds
*/
-public class DefaultItemReuseStrategy implements IItemReuseStrategy
+public class DefaultItemReuseStrategy<T> implements IItemReuseStrategy<T>
{
private static final long serialVersionUID = 1L;
@@ -39,7 +41,7 @@
/**
* @return static instance of this strategy
*/
- public static IItemReuseStrategy getInstance()
+ public static <X> IItemReuseStrategy<X> getInstance()
{
return instance;
}
@@ -48,10 +50,10 @@
* @see
wicket.extensions.markup.html.repeater.refreshing.IItemReuseStrategy#getItems(MarkupContainer,
wicket.extensions.markup.html.repeater.refreshing.IItemFactory,
* java.util.Iterator, java.util.Iterator)
*/
- public Iterator getItems(final MarkupContainer parent, final
IItemFactory factory, final Iterator newModels,
- final Iterator existingItems)
+ public Iterator<Item<T>> getItems(final MarkupContainer<?> parent,
final IItemFactory<T> factory, final Iterator<IModel<T>> newModels,
+ final Iterator<Item<T>> existingItems)
{
- return new Iterator()
+ return new Iterator<Item<T>>()
{
private int index = 0;
@@ -65,11 +67,11 @@
return newModels.hasNext();
}
- public Object next()
+ public Item<T> next()
{
- final IModel model = (IModel)newModels.next();
+ final IModel<T> model = newModels.next();
- Item item = factory.newItem(parent, index,
model);
+ Item<T> item = factory.newItem(parent, index,
model);
index++;
return item;
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemFactory.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemFactory.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemFactory.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemFactory.java
Sat Dec 9 03:03:41 2006
@@ -27,8 +27,10 @@
*
* @author Igor Vaynberg (ivaynberg)
*
+ * @param <T>
+ * Type of model object this component holds
*/
-public interface IItemFactory
+public interface IItemFactory<T>
{
/**
* Factory method for instances of Item. Each generated item must have a
@@ -42,6 +44,6 @@
*
* @return DataItem new DataItem
*/
- Item newItem(MarkupContainer parent, int index, IModel model);
+ Item<T> newItem(MarkupContainer<?> parent, int index, IModel<T> model);
}
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemReuseStrategy.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemReuseStrategy.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemReuseStrategy.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/IItemReuseStrategy.java
Sat Dec 9 03:03:41 2006
@@ -20,6 +20,7 @@
import java.util.Iterator;
import wicket.MarkupContainer;
+import wicket.model.IModel;
/**
* Interface for item reuse strategies.
@@ -30,9 +31,11 @@
* </p>
*
* @author Igor Vaynberg (ivaynberg)
- *
+ *
+ * @param <T>
+ * Type of model object this component holds
*/
-public interface IItemReuseStrategy extends Serializable
+public interface IItemReuseStrategy<T> extends Serializable
{
/**
@@ -52,6 +55,6 @@
* @return iterator over items that will be added after all the old
items
* are moved.
*/
- Iterator getItems(MarkupContainer parent, IItemFactory factory,
Iterator newModels,
- Iterator existingItems);
+ Iterator<Item<T>> getItems(MarkupContainer<?> parent, IItemFactory<T>
factory, Iterator<IModel<T>> newModels,
+ Iterator<Item<T>> existingItems);
}
Modified:
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/RefreshingView.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/RefreshingView.java?view=diff&rev=484967&r1=484966&r2=484967
==============================================================================
---
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/RefreshingView.java
(original)
+++
incubator/wicket/trunk/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/refreshing/RefreshingView.java
Sat Dec 9 03:03:41 2006
@@ -18,6 +18,7 @@
import java.util.Iterator;
+import wicket.Component;
import wicket.MarkupContainer;
import wicket.extensions.markup.html.repeater.RepeatingView;
import wicket.extensions.markup.html.repeater.util.ModelIteratorAdapter;
@@ -49,8 +50,11 @@
*
* @author Igor Vaynberg (ivaynberg)
*
+ * @param <T>
+ * Type of model object this component holds
+ *
*/
-public abstract class RefreshingView extends RepeatingView
+public abstract class RefreshingView<T> extends RepeatingView<T>
{
private static final long serialVersionUID = 1L;
@@ -60,12 +64,12 @@
*
* @see IItemReuseStrategy
*/
- private IItemReuseStrategy itemReuseStrategy;
+ private IItemReuseStrategy<T> itemReuseStrategy;
/**
* @see wicket.Component#Component(MarkupContainer, String)
*/
- public RefreshingView(MarkupContainer parent, final String id)
+ public RefreshingView(MarkupContainer<?> parent, final String id)
{
super(parent, id);
}
@@ -73,7 +77,7 @@
/**
* @see wicket.Component#Component(MarkupContainer, String, IModel)
*/
- public RefreshingView(MarkupContainer parent, final String id, IModel
model)
+ public RefreshingView(MarkupContainer<?> parent, final String id,
IModel<T> model)
{
super(parent, id, model);
}
@@ -90,21 +94,21 @@
if (isVisibleInHierarchy())
{
- IItemFactory itemFactory = new IItemFactory()
+ IItemFactory<T> itemFactory = new IItemFactory<T>()
{
- public Item newItem(MarkupContainer parent, int
index, IModel model)
+ public Item<T> newItem(MarkupContainer<?>
parent, int index, IModel<T> model)
{
String id =
RefreshingView.this.newChildId();
- Item item =
RefreshingView.this.newItem(parent, id, index, model);
+ Item<T> item =
RefreshingView.this.newItem(parent, id, index, model);
RefreshingView.this.populateItem(item);
return item;
}
};
- Iterator models = getItemModels();
- Iterator items =
getItemReuseStrategy().getItems(RefreshingView.this, itemFactory, models,
getItems());
+ Iterator<IModel<T>> models = getItemModels();
+ Iterator<Item<T>> items =
getItemReuseStrategy().getItems(RefreshingView.this, itemFactory, models,
getItems());
removeAll();
addItems(items);
}
@@ -116,7 +120,7 @@
*
* @return an iterator over models for items that will be added to this
view
*/
- protected abstract Iterator getItemModels();
+ protected abstract Iterator<IModel<T>> getItemModels();
/**
* Populate the given Item container.
@@ -139,7 +143,7 @@
* @param item
* The item to populate
*/
- protected abstract void populateItem(final Item item);
+ protected abstract void populateItem(final Item<T> item);
/**
* Factory method for Item container. Item containers are simple
@@ -157,17 +161,34 @@
*
* @return DataItem created DataItem
*/
- protected Item newItem(MarkupContainer parent, final String id, int
index, final IModel model)
+ protected Item<T> newItem(MarkupContainer<?> parent, final String id,
int index, final IModel<T> model)
{
- return new Item(parent, id, index, model);
+ return new Item<T>(parent, id, index, model);
}
/**
* @return iterator over item instances that exist as children of this
view
*/
- public Iterator getItems()
+ public Iterator<Item<T>> getItems()
{
- return iterator();
+ final Iterator<Component> iterator = iterator();
+ return new Iterator<Item<T>>()
+ {
+ public boolean hasNext()
+ {
+ return iterator.hasNext();
+ }
+
+ public Item<T> next()
+ {
+ return (Item<T>)iterator.next();
+ }
+
+ public void remove()
+ {
+ iterator.remove();
+ }
+ };
}
/**
@@ -177,11 +198,11 @@
* @param items
* item instances to be added to this view
*/
- protected void addItems(Iterator items)
+ protected void addItems(Iterator<Item<T>> items)
{
while (items.hasNext())
{
- ((Item)items.next()).reAttach();
+ items.next().reAttach();
}
}
@@ -195,7 +216,7 @@
*
* @see DefaultItemReuseStrategy
*/
- public IItemReuseStrategy getItemReuseStrategy()
+ public IItemReuseStrategy<T> getItemReuseStrategy()
{
if (itemReuseStrategy == null)
{
@@ -214,7 +235,7 @@
* item reuse strategy
* @return this for chaining
*/
- public RefreshingView setItemReuseStrategy(IItemReuseStrategy strategy)
+ public RefreshingView<T> setItemReuseStrategy(IItemReuseStrategy<T>
strategy)
{
if (strategy == null)
{
@@ -229,7 +250,7 @@
{
private static final long
serialVersionUID = 1L;
- private final IItemReuseStrategy old =
itemReuseStrategy;
+ private final IItemReuseStrategy<T> old
= itemReuseStrategy;
@Override
public void undo()