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 2010/11/21 19:20:17 UTC

svn commit: r1037520 - /wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/

Author: mgrigorov
Date: Sun Nov 21 18:20:16 2010
New Revision: 1037520

URL: http://svn.apache.org/viewvc?rev=1037520&view=rev
Log:
WICKET-3169 Parametrize IFilterStateLocator

Add generics to o.a.w.extensions.markup.html.repeater.data.table.filter

Modified:
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/AbstractFilter.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilter.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterToolbar.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/GoAndClearFilter.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilterStateLocator.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilteredColumn.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilter.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilteredPropertyColumn.java

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/AbstractFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/AbstractFilter.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/AbstractFilter.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/AbstractFilter.java Sun Nov 21 18:20:16 2010
@@ -29,7 +29,7 @@ public class AbstractFilter extends Pane
 {
 	private static final long serialVersionUID = 1L;
 
-	private final FilterForm form;
+	private final FilterForm<?> form;
 
 	/**
 	 * @param id
@@ -37,7 +37,7 @@ public class AbstractFilter extends Pane
 	 * @param form
 	 *            filter form of the filter toolbar
 	 */
-	public AbstractFilter(String id, FilterForm form)
+	public AbstractFilter(String id, FilterForm<?> form)
 	{
 		super(id);
 		this.form = form;
@@ -56,7 +56,7 @@ public class AbstractFilter extends Pane
 		form.enableFocusTracking(fc);
 	}
 
-	protected IFilterStateLocator getStateLocator()
+	protected IFilterStateLocator<?> getStateLocator()
 	{
 		return form.getStateLocator();
 	}

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilter.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilter.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilter.java Sun Nov 21 18:20:16 2010
@@ -34,12 +34,10 @@ import org.apache.wicket.model.Model;
  * @author Igor Vaynberg (ivaynberg)
  * @param <T>
  *            The model object type
- * 
  */
 public class ChoiceFilter<T> extends AbstractFilter
 {
 	private static final long serialVersionUID = 1L;
-	private static final IChoiceRenderer defaultRenderer = new ChoiceRenderer();
 
 	private final DropDownChoice<T> choice;
 
@@ -50,10 +48,10 @@ public class ChoiceFilter<T> extends Abs
 	 * @param choices
 	 * @param autoSubmit
 	 */
-	public ChoiceFilter(String id, IModel<T> model, FilterForm form,
+	public ChoiceFilter(String id, IModel<T> model, FilterForm<?> form,
 		IModel<List<? extends T>> choices, boolean autoSubmit)
 	{
-		this(id, model, form, choices, defaultRenderer, autoSubmit);
+		this(id, model, form, choices, new ChoiceRenderer<T>(), autoSubmit);
 	}
 
 	/**
@@ -63,10 +61,10 @@ public class ChoiceFilter<T> extends Abs
 	 * @param choices
 	 * @param autoSubmit
 	 */
-	public ChoiceFilter(String id, IModel<T> model, FilterForm form, List<? extends T> choices,
+	public ChoiceFilter(String id, IModel<T> model, FilterForm<?> form, List<? extends T> choices,
 		boolean autoSubmit)
 	{
-		this(id, model, form, Model.ofList(choices), defaultRenderer, autoSubmit);
+		this(id, model, form, Model.ofList(choices), new ChoiceRenderer<T>(), autoSubmit);
 	}
 
 	/**
@@ -77,7 +75,7 @@ public class ChoiceFilter<T> extends Abs
 	 * @param renderer
 	 * @param autoSubmit
 	 */
-	public ChoiceFilter(String id, IModel<T> model, FilterForm form, List<? extends T> choices,
+	public ChoiceFilter(String id, IModel<T> model, FilterForm<?> form, List<? extends T> choices,
 		IChoiceRenderer<T> renderer, boolean autoSubmit)
 	{
 		this(id, model, form, Model.ofList(choices), renderer, autoSubmit);
@@ -98,7 +96,7 @@ public class ChoiceFilter<T> extends Abs
 	 *            if true this filter will submit the form on selection change
 	 * @see DropDownChoice
 	 */
-	public ChoiceFilter(String id, IModel<T> model, FilterForm form,
+	public ChoiceFilter(String id, IModel<T> model, FilterForm<?> form,
 		IModel<List<? extends T>> choices, IChoiceRenderer<T> renderer, boolean autoSubmit)
 	{
 		super(id, form);

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/ChoiceFilteredPropertyColumn.java Sun Nov 21 18:20:16 2010
@@ -85,7 +85,7 @@ public class ChoiceFilteredPropertyColum
 	 * @see org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilteredColumn#getFilter(java.lang.String,
 	 *      org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm)
 	 */
-	public Component getFilter(String componentId, FilterForm form)
+	public Component getFilter(String componentId, FilterForm<?> form)
 	{
 		ChoiceFilter<Y> filter = new ChoiceFilter<Y>(componentId, getFilterModel(form), form,
 			filterChoices, enableAutoSubmit());
@@ -106,7 +106,7 @@ public class ChoiceFilteredPropertyColum
 	 *            filter form
 	 * @return model passed on to the text filter
 	 */
-	protected IModel<Y> getFilterModel(FilterForm form)
+	protected IModel<Y> getFilterModel(FilterForm<?> form)
 	{
 		return new PropertyModel<Y>(form.getDefaultModel(), getPropertyExpression());
 	}

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java Sun Nov 21 18:20:16 2010
@@ -31,15 +31,16 @@ import org.apache.wicket.util.string.App
 /**
  * A form with filter-related special functionality for its form components.
  * 
+ * @param <T>
+ *            type of filter state object
  * @author igor
- * 
  */
-public class FilterForm extends Form<Object>
+public class FilterForm<T> extends Form<T>
 {
 	private static final long serialVersionUID = 1L;
 
 	private final HiddenField<?> hidden;
-	private final IFilterStateLocator locator;
+	private final IFilterStateLocator<T> locator;
 
 	/**
 	 * @param id
@@ -47,9 +48,9 @@ public class FilterForm extends Form<Obj
 	 * @param locator
 	 *            filter state locator
 	 */
-	public FilterForm(String id, IFilterStateLocator locator)
+	public FilterForm(String id, IFilterStateLocator<T> locator)
 	{
-		super(id, new FilterStateModel(locator));
+		super(id, new FilterStateModel<T>(locator));
 
 		this.locator = locator;
 
@@ -96,7 +97,7 @@ public class FilterForm extends Form<Obj
 	/**
 	 * @return IFilterStateLocator passed to this form
 	 */
-	public final IFilterStateLocator getStateLocator()
+	public final IFilterStateLocator<T> getStateLocator()
 	{
 		return locator;
 	}
@@ -146,14 +147,15 @@ public class FilterForm extends Form<Obj
 	/**
 	 * Model that uses filter state locator as a passthrough for model objects
 	 * 
+	 * @param <T>
+	 *            type of filter state object
 	 * @author Igor Vaynberg (ivaynberg)
-	 * 
 	 */
-	private static class FilterStateModel implements IModel<Object>
+	private static class FilterStateModel<T> implements IModel<T>
 	{
 		private static final long serialVersionUID = 1L;
 
-		private final IFilterStateLocator locator;
+		private final IFilterStateLocator<T> locator;
 
 		/**
 		 * Constructor
@@ -161,7 +163,7 @@ public class FilterForm extends Form<Obj
 		 * @param locator
 		 *            IFilterStateLocator implementation used to provide model object for this model
 		 */
-		public FilterStateModel(IFilterStateLocator locator)
+		public FilterStateModel(IFilterStateLocator<T> locator)
 		{
 			if (locator == null)
 			{
@@ -173,7 +175,7 @@ public class FilterForm extends Form<Obj
 		/**
 		 * @see org.apache.wicket.model.IModel#getObject()
 		 */
-		public Object getObject()
+		public T getObject()
 		{
 			return locator.getFilterState();
 		}
@@ -181,7 +183,7 @@ public class FilterForm extends Form<Obj
 		/**
 		 * @see org.apache.wicket.model.IModel#setObject(java.lang.Object)
 		 */
-		public void setObject(Object object)
+		public void setObject(T object)
 		{
 			locator.setFilterState(object);
 		}

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterStateModel.java Sun Nov 21 18:20:16 2010
@@ -31,13 +31,15 @@ import org.apache.wicket.model.IModel;
  * Text field tf will now user the object that filter state locator locates as its underlying model.
  * </p>
  * 
+ * @param <T>
+ *            type of filter state object
  * @author Igor Vaynberg (ivaynberg)
  */
-class FilterStateModel implements IModel<Object>
+class FilterStateModel<T> implements IModel<T>
 {
 	private static final long serialVersionUID = 1L;
 
-	private final IFilterStateLocator locator;
+	private final IFilterStateLocator<T> locator;
 
 	/**
 	 * Constructor
@@ -45,7 +47,7 @@ class FilterStateModel implements IModel
 	 * @param locator
 	 *            IFilterStateLocator implementation used to provide model object for this model
 	 */
-	public FilterStateModel(IFilterStateLocator locator)
+	public FilterStateModel(IFilterStateLocator<T> locator)
 	{
 		this.locator = locator;
 	}
@@ -53,7 +55,7 @@ class FilterStateModel implements IModel
 	/**
 	 * @see org.apache.wicket.model.IModel#getObject()
 	 */
-	public Object getObject()
+	public T getObject()
 	{
 		return locator.getFilterState();
 	}
@@ -61,7 +63,7 @@ class FilterStateModel implements IModel
 	/**
 	 * @see org.apache.wicket.model.IModel#setObject(java.lang.Object)
 	 */
-	public void setObject(Object object)
+	public void setObject(T object)
 	{
 		locator.setFilterState(object);
 	}

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=1037520&r1=1037519&r2=1037520&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 Sun Nov 21 18:20:16 2010
@@ -29,7 +29,6 @@ import org.apache.wicket.markup.repeater
  * components are provided by columns that implement IFilteredColumn.
  * 
  * @author Igor Vaynberg (ivaynberg)
- * 
  */
 public class FilterToolbar extends AbstractToolbar
 {
@@ -38,15 +37,19 @@ public class FilterToolbar extends Abstr
 	/**
 	 * Constructor
 	 * 
+	 * @param id
 	 * @param table
 	 *            data table this toolbar will be added to
 	 * @param form
 	 *            the filter form
 	 * @param stateLocator
 	 *            locator responsible for finding object used to store filter's state
+	 * @param <T>
+	 *            type of filter state object
+	 * 
 	 */
-	public FilterToolbar(String id, final DataTable<?> table, final FilterForm form,
-		final IFilterStateLocator stateLocator)
+	public <T> FilterToolbar(String id, final DataTable<?> table, final FilterForm<T> form,
+		final IFilterStateLocator<T> stateLocator)
 	{
 		super(id, table);
 

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/GoAndClearFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/GoAndClearFilter.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/GoAndClearFilter.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/GoAndClearFilter.java Sun Nov 21 18:20:16 2010
@@ -49,7 +49,7 @@ public class GoAndClearFilter extends Go
 	 * @param form
 	 *            filter form of the filter toolbar
 	 */
-	public GoAndClearFilter(String id, FilterForm form)
+	public GoAndClearFilter(String id, FilterForm<?> form)
 	{
 		this(id, form, DEFAULT_GO_MODEL, DEFAULT_CLEAR_MODEL);
 	}
@@ -66,7 +66,7 @@ public class GoAndClearFilter extends Go
 	 * @param clearModel
 	 *            model for the label of the 'clear' button
 	 */
-	public GoAndClearFilter(String id, FilterForm form, IModel<String> goModel,
+	public GoAndClearFilter(String id, FilterForm<?> form, IModel<String> goModel,
 		IModel<String> clearModel)
 	{
 		super(id, goModel);

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilterStateLocator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilterStateLocator.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilterStateLocator.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilterStateLocator.java Sun Nov 21 18:20:16 2010
@@ -27,11 +27,11 @@ import org.apache.wicket.IClusterable;
  * Example
  * 
  * <pre>
- *    class UserDataProvider extends SortableDataProvider implements IFilterStateLocator {
+ *    class UserDataProvider extends SortableDataProvider implements IFilterStateLocator<User> {
  *      private User filterBean=new User;
  *      
- *      public getFilterState() { return filterBean; }
- *      public setFilterState(Object o) { filterBean=(User)o; }
+ *      public User getFilterState() { return filterBean; }
+ *      public void setFilterState(User user) { filterBean=user; }
  *      
  *      public Iterator iterate(int start, int count) {
  *        getUserDao().find(start, count, filterBean);
@@ -39,16 +39,17 @@ import org.apache.wicket.IClusterable;
  *    }
  * </pre>
  * 
- * 
+ * @param <T>
+ *            type of filter state object
  * @author igor
  * 
  */
-public interface IFilterStateLocator extends IClusterable
+public interface IFilterStateLocator<T> extends IClusterable
 {
 	/**
 	 * @return object that represents the state of the filter toolbar
 	 */
-	Object getFilterState();
+	T getFilterState();
 
 	/**
 	 * Setter for the filter state object
@@ -56,5 +57,5 @@ public interface IFilterStateLocator ext
 	 * @param state
 	 *            filter state object
 	 */
-	void setFilterState(Object state);
+	void setFilterState(T state);
 }

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilteredColumn.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilteredColumn.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilteredColumn.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/IFilteredColumn.java Sun Nov 21 18:20:16 2010
@@ -40,12 +40,12 @@ public interface IFilteredColumn<T> exte
 	 *            component id for returned filter component
 	 * @param form
 	 *            FilterForm object for the toolbar. components can use this form's model to access
-	 *            properties of the state object (<code>PropertyModel(form.getModel(), "property"</code>)
-	 *            or retrieve the {@link IFilterStateLocator} object by using {@link
-	 *            FilterForm#getStateLocator()}
+	 *            properties of the state object (
+	 *            <code>PropertyModel(form.getModel(), "property"</code>) or retrieve the
+	 *            {@link IFilterStateLocator} object by using {@link FilterForm#getStateLocator()}
 	 * @return component that will be used to represent a filter for this column, or null if no such
 	 *         component is desired
 	 */
-	Component getFilter(String componentId, FilterForm form);
+	Component getFilter(String componentId, FilterForm<?> form);
 
 }

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilter.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilter.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilter.java Sun Nov 21 18:20:16 2010
@@ -43,7 +43,7 @@ public class TextFilter<T> extends Abstr
 	 * @param form
 	 *            filter form this filter will be added to
 	 */
-	public TextFilter(String id, IModel<T> model, FilterForm form)
+	public TextFilter(String id, IModel<T> model, FilterForm<?> form)
 	{
 		super(id, form);
 		filter = new TextField<T>("filter", model);

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilteredPropertyColumn.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilteredPropertyColumn.java?rev=1037520&r1=1037519&r2=1037520&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilteredPropertyColumn.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/TextFilteredPropertyColumn.java Sun Nov 21 18:20:16 2010
@@ -61,7 +61,7 @@ public class TextFilteredPropertyColumn<
 	 * @see org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilteredColumn#getFilter(java.lang.String,
 	 *      org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm)
 	 */
-	public Component getFilter(String componentId, FilterForm form)
+	public Component getFilter(String componentId, FilterForm<?> form)
 	{
 		return new TextFilter<F>(componentId, getFilterModel(form), form);
 	}
@@ -74,7 +74,7 @@ public class TextFilteredPropertyColumn<
 	 *            filter form
 	 * @return model passed on to the text filter
 	 */
-	protected IModel<F> getFilterModel(FilterForm form)
+	protected IModel<F> getFilterModel(FilterForm<?> form)
 	{
 		return new PropertyModel<F>(form.getDefaultModel(), getPropertyExpression());
 	}