Author: ehillenius
Date: Fri Mar 30 15:01:11 2007
New Revision: 524289

URL: http://svn.apache.org/viewvc?view=rev&rev=524289
Log:
WICKET-439

Modified:
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/ICellPopulator.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/PropertyPopulator.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/DataTable.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/markup/repeater/data/DataViewBase.java

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java?view=diff&rev=524289&r1=524288&r2=524289
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
 Fri Mar 30 15:01:11 2007
@@ -66,7 +66,7 @@
 
                this.populators = populators;
        }
-
+       
        /**
         * Returns iterator over ICellPopulator elements in the populators 
array.
         * This method caches the iterator implemenation in a transient member
@@ -95,58 +95,14 @@
                return populatorsIteratorCache;
        }
 
-
-       protected final void populateItem(Item item)
-       {
-               final IModel rowModel = item.getModel();
-
-               // 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;
-
-                       protected Iterator getItemModels()
-                       {
-                               return getPopulatorsIterator();
-                       }
-
-                       protected void populateItem(Item item)
-                       {
-                               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) )");
-                               }
-
-                       }
-
-                       protected Item newItem(String id, int index, IModel 
model)
-                       {
-                               return newCellItem(id, index, model);
-                       }
-
-               });
-       }
-
        protected final ICellPopulator[] internalGetPopulators()
        {
                return populators;
        }
 
-       protected final Item newItem(String id, int index, IModel model)
-       {
-               return newRowItem(id, index, model);
-       }
-
 
        /**
-        * Factory method for Item container that represents a row.
+        * Factory method for Item container that represents a cell.
         * 
         * @see Item
         * @see RefreshingView#newItem(String, int, IModel)
@@ -156,17 +112,22 @@
         * @param index
         *            the index of the new data item
         * @param model
-        *            the model for the new data item.
+        *            the model for the new data item
         * 
         * @return DataItem created DataItem
         */
-       protected Item newRowItem(final String id, int index, final IModel 
model)
+       protected Item newCellItem(final String id, int index, final IModel 
model)
        {
                return new Item(id, index, model);
        }
 
+       protected final Item newItem(String id, int index, IModel model)
+       {
+               return newRowItem(id, index, model);
+       }
+
        /**
-        * Factory method for Item container that represents a cell.
+        * Factory method for Item container that represents a row.
         * 
         * @see Item
         * @see RefreshingView#newItem(String, int, IModel)
@@ -176,13 +137,66 @@
         * @param index
         *            the index of the new data item
         * @param model
-        *            the model for the new data item
+        *            the model for the new data item.
         * 
         * @return DataItem created DataItem
         */
-       protected Item newCellItem(final String id, int index, final IModel 
model)
+       protected Item newRowItem(final String id, int index, final IModel 
model)
        {
                return new Item(id, index, model);
        }
 
+
+       /**
+        * @see wicket.markup.repeater.data.DataViewBase#onDetach()
+        */
+       protected void onDetach()
+       {
+               super.onDetach();
+               if (populators != null)
+               {
+                       for (int i = 0; i < populators.length; i++)
+                       {
+                               populators[i].detach();
+                       }
+               }
+       }
+
+       protected final void populateItem(Item item)
+       {
+               final IModel rowModel = item.getModel();
+
+               // 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;
+
+                       protected Iterator getItemModels()
+                       {
+                               return getPopulatorsIterator();
+                       }
+
+                       protected Item newItem(String id, int index, IModel 
model)
+                       {
+                               return newCellItem(id, index, model);
+                       }
+
+                       protected void populateItem(Item item)
+                       {
+                               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) )");
+                               }
+
+                       }
+
+               });
+       }
 }

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/ICellPopulator.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/ICellPopulator.java?view=diff&rev=524289&r1=524288&r2=524289
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/ICellPopulator.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/ICellPopulator.java
 Fri Mar 30 15:01:11 2007
@@ -18,6 +18,7 @@
 
 import wicket.IClusterable;
 import wicket.markup.repeater.Item;
+import wicket.model.IDetachable;
 import wicket.model.IModel;
 
 /**
@@ -47,7 +48,7 @@
  * @author Igor Vaynberg (ivaynberg)
  * 
  */
-public interface ICellPopulator extends IClusterable
+public interface ICellPopulator extends IClusterable, IDetachable
 {
        /**
         * Method used to populate a cell in the [EMAIL PROTECTED] DataGridView}

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/PropertyPopulator.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/PropertyPopulator.java?view=diff&rev=524289&r1=524288&r2=524289
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/PropertyPopulator.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/PropertyPopulator.java
 Fri Mar 30 15:01:11 2007
@@ -57,6 +57,13 @@
        }
 
        /**
+        * @see wicket.model.IDetachable#detach()
+        */
+       public void detach()
+       {       
+       }
+
+       /**
         * @see 
wicket.extensions.markup.html.repeater.data.grid.ICellPopulator#populateItem(wicket.markup.repeater.Item,
         *      java.lang.String, wicket.model.IModel)
         */
@@ -64,5 +71,4 @@
        {
                cellItem.add(new Label(componentId, new PropertyModel(rowModel, 
property)));
        }
-
 }

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java?view=diff&rev=524289&r1=524288&r2=524289
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java
 Fri Mar 30 15:01:11 2007
@@ -83,5 +83,14 @@
                return new Label(componentId, getDisplayModel());
        }
 
-
+       /**
+        * @see wicket.model.IDetachable#detach()
+        */
+       public void detach()
+       {       
+               if (displayModel != null)
+               {
+                       displayModel.detach();
+               }
+       }
 }

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/DataTable.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/DataTable.java?view=diff&rev=524289&r1=524288&r2=524289
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/DataTable.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/DataTable.java
 Fri Mar 30 15:01:11 2007
@@ -103,14 +103,14 @@
                {
                        private static final long serialVersionUID = 1L;
 
-                       protected Item newRowItem(String id, int index, IModel 
model)
+                       protected Item newCellItem(String id, int index, IModel 
model)
                        {
-                               return DataTable.this.newRowItem(id, index, 
model);
+                               return DataTable.this.newCellItem(id, index, 
model);
                        }
 
-                       protected Item newCellItem(String id, int index, IModel 
model)
+                       protected Item newRowItem(String id, int index, IModel 
model)
                        {
-                               return DataTable.this.newCellItem(id, index, 
model);
+                               return DataTable.this.newRowItem(id, index, 
model);
                        }
                };
                datagrid.setRowsPerPage(rowsPerPage);
@@ -143,60 +143,37 @@
        }
 
        /**
-        * @return array of column objects this table displays
-        */
-       public final IColumn[] getColumns()
-       {
-               return columns;
-       }
-
-       /**
-        * Adds a toolbar to the datatable that will be displayed before the 
data
+        * Adds a toolbar to the datatable that will be displayed after the data
         * 
         * @param toolbar
         *            toolbar to be added
         * 
         * @see AbstractToolbar
         */
-       public void addTopToolbar(AbstractToolbar toolbar)
+       public void addBottomToolbar(AbstractToolbar toolbar)
        {
-               addToolbar(toolbar, topToolbars);
+               addToolbar(toolbar, bottomToolbars);
        }
 
        /**
-        * Adds a toolbar to the datatable that will be displayed after the data
+        * Adds a toolbar to the datatable that will be displayed before the 
data
         * 
         * @param toolbar
         *            toolbar to be added
         * 
         * @see AbstractToolbar
         */
-       public void addBottomToolbar(AbstractToolbar toolbar)
+       public void addTopToolbar(AbstractToolbar toolbar)
        {
-               addToolbar(toolbar, bottomToolbars);
+               addToolbar(toolbar, topToolbars);
        }
 
-       private void addToolbar(AbstractToolbar toolbar, RepeatingView 
container)
+       /**
+        * @return array of column objects this table displays
+        */
+       public final IColumn[] getColumns()
        {
-               if (toolbar == null)
-               {
-                       throw new IllegalArgumentException("argument [toolbar] 
cannot be null");
-               }
-
-               if (!toolbar.getId().equals(TOOLBAR_COMPONENT_ID))
-               {
-                       throw new IllegalArgumentException(
-                                       "Toolbar must have component id equal 
to AbstractDataTable.TOOLBAR_COMPONENT_ID");
-               }
-
-               toolbar.setRenderBodyOnly(true);
-
-               // create a container item for the toolbar (required by 
repeating view)
-               WebMarkupContainer item = new 
WebMarkupContainer(container.newChildId());
-               item.setRenderBodyOnly(true);
-               item.add(toolbar);
-
-               container.add(item);
+               return columns;
        }
 
        /**
@@ -208,37 +185,54 @@
        }
 
        /**
-        * @see 
wicket.markup.html.navigation.paging.IPageable#setCurrentPage(int)
+        * @see wicket.markup.html.navigation.paging.IPageable#getPageCount()
         */
-       public final void setCurrentPage(int page)
+       public final int getPageCount()
        {
-               datagrid.setCurrentPage(page);
-               onPageChanged();
+               return datagrid.getPageCount();
        }
 
        /**
-        * Event listener for page-changed event
+        * @return total number of rows in this table
         */
-       protected void onPageChanged()
+       public final int getRowCount()
        {
-               // noop
+               return datagrid.getRowCount();
        }
 
+       /**
+        * @return number of rows per page
+        */
+       public final int getRowsPerPage()
+       {
+               return datagrid.getRowsPerPage();
+       }
 
        /**
-        * @see wicket.markup.html.navigation.paging.IPageable#getPageCount()
+        * @see 
wicket.markup.html.navigation.paging.IPageable#setCurrentPage(int)
         */
-       public final int getPageCount()
+       public final void setCurrentPage(int page)
        {
-               return datagrid.getPageCount();
+               datagrid.setCurrentPage(page);
+               onPageChanged();
        }
 
+
        /**
-        * @return total number of rows in this table
+        * Sets the item reuse strategy. This strategy controls the creation of
+        * [EMAIL PROTECTED] Item}s.
+        * 
+        * @see RefreshingView#setItemReuseStrategy(IItemReuseStrategy)
+        * @see IItemReuseStrategy
+        * 
+        * @param strategy
+        *            item reuse strategy
+        * @return this for chaining
         */
-       public final int getRowCount()
+       public final DataTable setItemReuseStrategy(IItemReuseStrategy strategy)
        {
-               return datagrid.getRowCount();
+               datagrid.setItemReuseStrategy(strategy);
+               return this;
        }
 
        /**
@@ -253,17 +247,32 @@
                datagrid.setRowsPerPage(items);
        }
 
-       /**
-        * @return number of rows per page
-        */
-       public final int getRowsPerPage()
+       private void addToolbar(AbstractToolbar toolbar, RepeatingView 
container)
        {
-               return datagrid.getRowsPerPage();
+               if (toolbar == null)
+               {
+                       throw new IllegalArgumentException("argument [toolbar] 
cannot be null");
+               }
+
+               if (!toolbar.getId().equals(TOOLBAR_COMPONENT_ID))
+               {
+                       throw new IllegalArgumentException(
+                                       "Toolbar must have component id equal 
to AbstractDataTable.TOOLBAR_COMPONENT_ID");
+               }
+
+               toolbar.setRenderBodyOnly(true);
+
+               // create a container item for the toolbar (required by 
repeating view)
+               WebMarkupContainer item = new 
WebMarkupContainer(container.newChildId());
+               item.setRenderBodyOnly(true);
+               item.add(toolbar);
+
+               container.add(item);
        }
 
        /**
-        * Factory method for Item container that represents a row in the 
underlying
-        * DataGridView
+        * Factory method for Item container that represents a cell in the
+        * underlying DataGridView
         * 
         * @see Item
         * 
@@ -272,18 +281,18 @@
         * @param index
         *            the index of the new data item
         * @param model
-        *            the model for the new data item.
+        *            the model for the new data item
         * 
         * @return DataItem created DataItem
         */
-       protected Item newRowItem(final String id, int index, final IModel 
model)
+       protected Item newCellItem(final String id, int index, final IModel 
model)
        {
                return new Item(id, index, model);
        }
 
        /**
-        * Factory method for Item container that represents a cell in the
-        * underlying DataGridView
+        * Factory method for Item container that represents a row in the 
underlying
+        * DataGridView
         * 
         * @see Item
         * 
@@ -292,30 +301,36 @@
         * @param index
         *            the index of the new data item
         * @param model
-        *            the model for the new data item
+        *            the model for the new data item.
         * 
         * @return DataItem created DataItem
         */
-       protected Item newCellItem(final String id, int index, final IModel 
model)
+       protected Item newRowItem(final String id, int index, final IModel 
model)
        {
                return new Item(id, index, model);
        }
 
        /**
-        * Sets the item reuse strategy. This strategy controls the creation of
-        * [EMAIL PROTECTED] Item}s.
-        * 
-        * @see RefreshingView#setItemReuseStrategy(IItemReuseStrategy)
-        * @see IItemReuseStrategy
-        * 
-        * @param strategy
-        *            item reuse strategy
-        * @return this for chaining
+        * @see wicket.Component#onDetach()
         */
-       public final DataTable setItemReuseStrategy(IItemReuseStrategy strategy)
+       protected void onDetach()
        {
-               datagrid.setItemReuseStrategy(strategy);
-               return this;
+               super.onDetach();
+               if (columns != null)
+               {
+                       for (int i = 0; i < columns.length; i++)
+                       {
+                               columns[i].detach();
+                       }
+               }
+       }
+
+       /**
+        * Event listener for page-changed event
+        */
+       protected void onPageChanged()
+       {
+               // noop
        }
 
 }

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java?view=diff&rev=524289&r1=524288&r2=524289
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java
 Fri Mar 30 15:01:11 2007
@@ -63,6 +63,18 @@
        }
 
        /**
+        * @see wicket.model.IDetachable#detach()
+        */
+       public void detach()
+       {       
+               super.detach();
+               if (filterChoices != null)
+               {
+                       filterChoices.detach();
+               }
+       }
+
+       /**
         * @see 
wicket.extensions.markup.html.repeater.data.table.filter.IFilteredColumn#getFilter(java.lang.String,
         *      
wicket.extensions.markup.html.repeater.data.table.filter.FilterForm)
         */
@@ -112,5 +124,4 @@
        {
                return null;
        }
-
 }

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/markup/repeater/data/DataViewBase.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/markup/repeater/data/DataViewBase.java?view=diff&rev=524289&r1=524288&r2=524289
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/markup/repeater/data/DataViewBase.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/wicket/markup/repeater/data/DataViewBase.java
 Fri Mar 30 15:01:11 2007
@@ -134,6 +134,9 @@
                return internalGetDataProvider().size();
        }
 
+       /**
+        * @see wicket.markup.repeater.AbstractPageableView#onDetach()
+        */
        protected void onDetach()
        {
                super.onDetach();


Reply via email to