You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/01/11 12:24:54 UTC
svn commit: r1057584 - in /wicket/trunk:
wicket-examples/src/main/java/org/apache/wicket/examples/repeater/
wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/
wicket-extensions/src/main/java/org/apache/wi...
Author: mgrigorov
Date: Tue Jan 11 11:24:53 2011
New Revision: 1057584
URL: http://svn.apache.org/viewvc?rev=1057584&view=rev
Log:
WICKET-3295 Please use lists instead of arrays
Drop the DataTable/DataGridView constructor that accepts array of columns.
Leave the one that accepts list of columns.
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/DataGridPage.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/DataGridView.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/DataGridPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/DataGridPage.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/DataGridPage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/DataGridPage.java Tue Jan 11 11:24:53 2011
@@ -16,6 +16,9 @@
*/
package org.apache.wicket.examples.repeater;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.wicket.extensions.markup.html.repeater.data.grid.DataGridView;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.PropertyPopulator;
@@ -34,14 +37,14 @@ public class DataGridPage extends BasePa
*/
public DataGridPage()
{
- ICellPopulator[] columns = new ICellPopulator[5];
+ List<ICellPopulator<Contact>> columns = new ArrayList<ICellPopulator<Contact>>();
- columns[0] = new PropertyPopulator("id");
- columns[1] = new PropertyPopulator("firstName");
- columns[2] = new PropertyPopulator("lastName");
- columns[3] = new PropertyPopulator("homePhone");
- columns[4] = new PropertyPopulator("cellPhone");
+ columns.add(new PropertyPopulator<Contact>("id"));
+ columns.add(new PropertyPopulator<Contact>("firstName"));
+ columns.add(new PropertyPopulator<Contact>("lastName"));
+ columns.add(new PropertyPopulator<Contact>("homePhone"));
+ columns.add(new PropertyPopulator<Contact>("cellPhone"));
- add(new DataGridView("rows", columns, new SortableContactDataProvider()));
+ add(new DataGridView<Contact>("rows", columns, new SortableContactDataProvider()));
}
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java Tue Jan 11 11:24:53 2011
@@ -63,29 +63,9 @@ public class AjaxFallbackDefaultDataTabl
* @param rowsPerPage
* number of rows per page
*/
- @SuppressWarnings("unchecked")
public AjaxFallbackDefaultDataTable(String id, final List<IColumn<T>> columns,
ISortableDataProvider<T> dataProvider, int rowsPerPage)
{
- this(id, columns.toArray((IColumn<T>[])new IColumn[columns.size()]), dataProvider,
- rowsPerPage);
- }
-
- /**
- * Constructor
- *
- * @param id
- * component id
- * @param columns
- * array of columns
- * @param dataProvider
- * data provider
- * @param rowsPerPage
- * number of rows per page
- */
- public AjaxFallbackDefaultDataTable(String id, final IColumn<T>[] columns,
- ISortableDataProvider<T> dataProvider, int rowsPerPage)
- {
super(id, columns, dataProvider, rowsPerPage);
setOutputMarkupId(true);
setVersioned(false);
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/AbstractDataGridView.java Tue Jan 11 11:24:53 2011
@@ -16,13 +16,14 @@
*/
package org.apache.wicket.extensions.markup.html.repeater.data.grid;
+import java.util.List;
+
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;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
@@ -45,9 +46,7 @@ public abstract class AbstractDataGridVi
private static final String CELL_REPEATER_ID = "cells";
private static final String CELL_ITEM_ID = "cell";
- private final ICellPopulator<T>[] populators;
-
- private transient ArrayIteratorAdapter<ICellPopulator<T>> populatorsIteratorCache;
+ private final List<? extends ICellPopulator<T>> populators;
/**
* Constructor
@@ -59,7 +58,7 @@ public abstract class AbstractDataGridVi
* @param dataProvider
* data provider
*/
- public AbstractDataGridView(String id, ICellPopulator<T>[] populators,
+ public AbstractDataGridView(String id, List<? extends ICellPopulator<T>> populators,
IDataProvider<T> dataProvider)
{
super(id, dataProvider);
@@ -67,36 +66,7 @@ public abstract class AbstractDataGridVi
this.populators = populators;
}
- /**
- * Returns iterator over ICellPopulator elements in the populators array. This method caches the
- * iterator implementation in a transient member instance.
- *
- * @return iterator over ICellPopulator elements in the populators array
- */
- private ArrayIteratorAdapter<ICellPopulator<T>> getPopulatorsIterator()
- {
- if (populatorsIteratorCache == null)
- {
- populatorsIteratorCache = new ArrayIteratorAdapter<ICellPopulator<T>>(
- internalGetPopulators())
- {
-
- @Override
- protected IModel<ICellPopulator<T>> model(ICellPopulator<T> object)
- {
- return new Model<ICellPopulator<T>>(object);
- }
-
- };
- }
- else
- {
- populatorsIteratorCache.reset();
- }
- return populatorsIteratorCache;
- }
-
- protected final ICellPopulator<T>[] internalGetPopulators()
+ protected final List<? extends ICellPopulator<T>> internalGetPopulators()
{
return populators;
}
@@ -175,15 +145,14 @@ public abstract class AbstractDataGridVi
RepeatingView cells = new RepeatingView(CELL_REPEATER_ID);
item.add(cells);
- ArrayIteratorAdapter<ICellPopulator<T>> populators = getPopulatorsIterator();
-
- for (int i = 0; populators.hasNext(); i++)
+ int populatorsNumber = populators.size();
+ for (int i = 0; i < populatorsNumber; i++)
{
- IModel<ICellPopulator<T>> populatorModel = populators.next();
+ ICellPopulator<T> populator = populators.get(i);
+ IModel<ICellPopulator<T>> populatorModel = new Model<ICellPopulator<T>>(populator);
Item<ICellPopulator<T>> cellItem = newCellItem(cells.newChildId(), i, populatorModel);
cells.add(cellItem);
- ICellPopulator<T> populator = cellItem.getModelObject();
populator.populateItem(cellItem, CELL_ITEM_ID, item.getModel());
if (cellItem.get("cell") == null)
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/DataGridView.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/DataGridView.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/DataGridView.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/grid/DataGridView.java Tue Jan 11 11:24:53 2011
@@ -45,10 +45,10 @@ import org.apache.wicket.markup.repeater
*
* <pre>
*
- * ICellPopulator[] columns = new ICellPopulator[2];
+ * List<ICellPopulator> columns = new ArrayList<ICellPopulator>();
*
- * columns[0] = new PropertyPopulator("firstName");
- * columns[1] = new PropertyPopulator("lastName");
+ * columns.add(new PropertyPopulator("firstName"));
+ * columns.add(new PropertyPopulator("lastName"));
*
* add(new DataGridView("rows", columns, new UserProvider()));
*
@@ -78,35 +78,18 @@ public class DataGridView<T> extends Abs
* @param dataProvider
* data provider
*/
- @SuppressWarnings("unchecked")
- public DataGridView(String id, List<ICellPopulator<T>> populators, IDataProvider<T> dataProvider)
- {
- super(id, populators.toArray(new ICellPopulator[populators.size()]), dataProvider);
- }
-
- /**
- * Constructor
- *
- * Notice cells are created in the same order as cell populators in the array
- *
- * @param id
- * component id
- * @param populators
- * array of ICellPopulators used to populate cells
- * @param dataProvider
- * data provider
- */
- public DataGridView(String id, ICellPopulator<T>[] populators, IDataProvider<T> dataProvider)
+ public DataGridView(String id, List<? extends ICellPopulator<T>> populators,
+ IDataProvider<T> dataProvider)
{
super(id, populators, dataProvider);
}
/**
- * Returns the array of cell populators
+ * Returns the list of cell populators
*
- * @return the array of cell populators
+ * @return the list of cell populators
*/
- public ICellPopulator<T>[] getPopulators()
+ public List<? extends ICellPopulator<T>> getPopulators()
{
return internalGetPopulators();
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java Tue Jan 11 11:24:53 2011
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.extensions.markup.html.repeater.data.table;
+import java.util.List;
+
import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.behavior.SimpleAttributeModifier;
@@ -52,10 +54,10 @@ import org.apache.wicket.util.string.Str
* specified, the second column will not )
*
* <pre>
- * IColumn[] columns = new IColumn[2];
+ * List<IColumn<T>> columns = new ArrayList<IColumn<T>>();
*
- * columns[0] = new PropertyColumn(new Model<String>("First Name"), "name.first", "name.first");
- * columns[1] = new PropertyColumn(new Model<String>("Last Name"), "name.last");
+ * columns.add(new PropertyColumn(new Model<String>("First Name"), "name.first", "name.first"));
+ * columns.add(new PropertyColumn(new Model<String>("Last Name"), "name.last"));
*
* DataTable table = new DataTable("datatable", columns, new UserProvider(), 10);
* table.addBottomToolbar(new NavigationToolbar(table));
@@ -107,7 +109,7 @@ public class DataTable<T> extends Panel
private final WebMarkupContainer body;
- private final IColumn<?>[] columns;
+ private final List<IColumn<T>> columns;
private final RepeatingView topToolbars;
@@ -125,11 +127,12 @@ public class DataTable<T> extends Panel
* @param rowsPerPage
* number of rows per page
*/
- public DataTable(String id, IColumn<T>[] columns, IDataProvider<T> dataProvider, int rowsPerPage)
+ public DataTable(String id, List<IColumn<T>> columns, IDataProvider<T> dataProvider,
+ int rowsPerPage)
{
super(id);
- if (columns == null || columns.length < 1)
+ if (columns == null || columns.size() < 1)
{
throw new IllegalArgumentException("Argument `columns` cannot be null or empty");
}
@@ -144,7 +147,7 @@ public class DataTable<T> extends Panel
protected Item newCellItem(String id, int index, IModel model)
{
Item item = DataTable.this.newCellItem(id, index, model);
- final IColumn<?> column = DataTable.this.columns[index];
+ final IColumn<T> column = DataTable.this.columns.get(index);
if (column instanceof IStyledColumn)
{
item.add(new DataTable.CssAttributeBehavior()
@@ -235,7 +238,7 @@ public class DataTable<T> extends Panel
/**
* @return array of column objects this table displays
*/
- public final IColumn<?>[] getColumns()
+ public final List<IColumn<T>> getColumns()
{
return columns;
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java Tue Jan 11 11:24:53 2011
@@ -55,28 +55,9 @@ public class DefaultDataTable<T> extends
* @param rowsPerPage
* number of rows per page
*/
- @SuppressWarnings("unchecked")
public DefaultDataTable(String id, final List<IColumn<T>> columns,
ISortableDataProvider<T> dataProvider, int rowsPerPage)
{
- this(id, columns.toArray(new IColumn[columns.size()]), dataProvider, rowsPerPage);
- }
-
- /**
- * Constructor
- *
- * @param id
- * component id
- * @param columns
- * array of columns
- * @param dataProvider
- * data provider
- * @param rowsPerPage
- * number of rows per page
- */
- public DefaultDataTable(String id, final IColumn<T>[] columns,
- ISortableDataProvider<T> dataProvider, int rowsPerPage)
- {
super(id, columns, dataProvider, rowsPerPage);
addTopToolbar(new NavigationToolbar(this));
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java Tue Jan 11 11:24:53 2011
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.extensions.markup.html.repeater.data.table;
+import java.util.List;
+
import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByBorder;
import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -39,20 +41,22 @@ public class HeadersToolbar extends Abst
/**
* Constructor
*
+ * @param <T>
+ * the column data type
* @param table
* data table this toolbar will be attached to
* @param stateLocator
* locator for the ISortState implementation used by sortable headers
*/
- public HeadersToolbar(final DataTable<?> table, final ISortStateLocator stateLocator)
+ public <T> HeadersToolbar(final DataTable<T> table, final ISortStateLocator stateLocator)
{
super(table);
RepeatingView headers = new RepeatingView("headers");
add(headers);
- final IColumn<?>[] columns = table.getColumns();
- for (final IColumn<?> column : columns)
+ final List<IColumn<T>> columns = table.getColumns();
+ for (final IColumn<T> column : columns)
{
AbstractItem item = new AbstractItem(headers.newChildId());
headers.add(item);
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NavigationToolbar.java Tue Jan 11 11:24:53 2011
@@ -45,7 +45,7 @@ public class NavigationToolbar extends A
WebMarkupContainer span = new WebMarkupContainer("span");
add(span);
span.add(new AttributeModifier("colspan", true, new Model<String>(
- String.valueOf(table.getColumns().length))));
+ String.valueOf(table.getColumns().size()))));
span.add(newPagingNavigator("navigator", table));
span.add(newNavigatorLabel("navigatorLabel", table));
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/NoRecordsToolbar.java Tue Jan 11 11:24:53 2011
@@ -66,7 +66,7 @@ public class NoRecordsToolbar extends Ab
add(td);
td.add(new AttributeModifier("colspan", true, new Model<String>(
- String.valueOf(table.getColumns().length))));
+ String.valueOf(table.getColumns().size()))));
td.add(new Label("msg", messageModel));
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java?rev=1057584&r1=1057583&r2=1057584&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java Tue Jan 11 11:24:53 2011
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.extensions.markup.html.repeater.data.table.filter;
+import java.util.List;
+
import org.apache.wicket.Component;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
@@ -47,7 +49,7 @@ public class FilterToolbar extends Abstr
* type of filter state object
*
*/
- public <T> FilterToolbar(final DataTable<?> table, final FilterForm<T> form,
+ public <T> FilterToolbar(final DataTable<T> table, final FilterForm<T> form,
final IFilterStateLocator<T> stateLocator)
{
super(table);
@@ -67,8 +69,8 @@ public class FilterToolbar extends Abstr
filters.setRenderBodyOnly(true);
add(filters);
- IColumn<?>[] cols = table.getColumns();
- for (IColumn<?> col : cols)
+ List<IColumn<T>> cols = table.getColumns();
+ for (IColumn<T> col : cols)
{
WebMarkupContainer item = new WebMarkupContainer(filters.newChildId());
item.setRenderBodyOnly(true);