You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by eh...@apache.org on 2007/03/31 00:01:13 UTC

svn commit: r524289 - in /incubator/wicket/branches/wicket-1.x/jdk-1.4: wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/grid/ wicket-extensions/src/main/java/wicket/extensions/markup/html/repeater/data/table/ wicket-extensio...

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 {@link 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
+	 * {@link 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
-	 * {@link 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();