Author: ivaynberg
Date: Thu Apr 26 14:03:41 2007
New Revision: 532862

URL: http://svn.apache.org/viewvc?view=rev&rev=532862
Log:
fixed item reuse strategy when used in the datatable

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java?view=diff&rev=532862&r1=532861&r2=532862
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
 Thu Apr 26 14:03:41 2007
@@ -22,6 +22,7 @@
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.RefreshingView;
+import org.apache.wicket.markup.repeater.RepeatingView;
 import org.apache.wicket.markup.repeater.data.DataViewBase;
 import org.apache.wicket.markup.repeater.data.IDataProvider;
 import org.apache.wicket.markup.repeater.util.ArrayIteratorAdapter;
@@ -67,7 +68,7 @@
 
                this.populators = populators;
        }
-       
+
        /**
         * Returns iterator over ICellPopulator elements in the populators 
array.
         * This method caches the iterator implemenation in a transient member
@@ -165,39 +166,29 @@
 
        protected final void populateItem(Item item)
        {
-               final IModel rowModel = item.getModel();
+               RepeatingView cells = new RepeatingView(CELL_REPEATER_ID);
+               item.add(cells);
 
-               // TODO Post 1.2: General: Does this need to be a refreshing 
view? since the rows
-               // is a refreshing view this will be recreated anyways. maybe 
can se
-               // orderedrepeatingview instead to simplify.
-               item.add(new RefreshingView(CELL_REPEATER_ID)
-               {
-                       private static final long serialVersionUID = 1L;
+               Iterator populators = getPopulatorsIterator();
 
-                       protected Iterator getItemModels()
-                       {
-                               return getPopulatorsIterator();
-                       }
+               for (int i = 0; populators.hasNext(); i++)
+               {
+                       IModel populatorModel=(IModel)populators.next();
+                       Item cellItem = newCellItem(cells.newChildId(), i, 
populatorModel);
+                       cells.add(cellItem);
 
-                       protected Item newItem(String id, int index, IModel 
model)
-                       {
-                               return newCellItem(id, index, model);
-                       }
+                       ICellPopulator populator = 
(ICellPopulator)cellItem.getModelObject();
+                       populator.populateItem(cellItem, CELL_ITEM_ID, 
item.getModel());
 
-                       protected void populateItem(Item item)
+                       if (cellItem.get("cell") == null)
                        {
-                               final ICellPopulator populator = 
(ICellPopulator)item.getModelObject();
-                               populator.populateItem(item, CELL_ITEM_ID, 
rowModel);
-
-                               if (item.get("cell") == null)
-                               {
-                                       throw new 
WicketRuntimeException(populator.getClass().getName()
-                                                       + ".populateItem() 
failed to add a component with id [" + CELL_ITEM_ID
-                                                       + "] to the provided 
[cellItem] object. Make sure you call add() on cellItem ( cellItem.add(new 
MyComponent(componentId, rowModel) )");
-                               }
-
+                               throw new WicketRuntimeException(
+                                               populator.getClass().getName()
+                                                               + 
".populateItem() failed to add a component with id ["
+                                                               + CELL_ITEM_ID
+                                                               + "] to the 
provided [cellItem] object. Make sure you call add() on cellItem ( 
cellItem.add(new MyComponent(componentId, rowModel) )");
                        }
+               }
 
-               });
        }
 }


Reply via email to