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) )"); } + } - }); } }