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()


Reply via email to