You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2010/12/01 20:12:19 UTC

svn commit: r1041134 - in /wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort: OrderByBorder.java OrderByLink.java

Author: pete
Date: Wed Dec  1 19:12:18 2010
New Revision: 1041134

URL: http://svn.apache.org/viewvc?rev=1041134&view=rev
Log:
provide a few hooks for changing the sort order behavior of sortable data providers

Modified:
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java?rev=1041134&r1=1041133&r2=1041134&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByBorder.java Wed Dec  1 19:12:18 2010
@@ -38,25 +38,43 @@ public class OrderByBorder extends Borde
 	/**
 	 * @param id
 	 *            see
-	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, OrderByLink.ICssProvider) }
+	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
 	 * @param property
 	 *            see
-	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, OrderByLink.ICssProvider) }
+	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
 	 * @param stateLocator
 	 *            see
-	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, OrderByLink.ICssProvider) }
+	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
 	 * @param cssProvider
 	 *            see
-	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, OrderByLink.ICssProvider) }
+	 *            {@link OrderByLink#OrderByLink(String, String, ISortStateLocator, org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider) }
 	 */
 	public OrderByBorder(String id, String property, ISortStateLocator stateLocator,
 		OrderByLink.ICssProvider cssProvider)
 	{
 		super(id);
-		OrderByLink link = new OrderByLink("orderByLink", property, stateLocator,
-			OrderByLink.VoidCssProvider.getInstance())
-		{
 
+		OrderByLink link = newOrderByLink("orderByLink", property, stateLocator);
+		addToBorder(link);
+		addToBorder(new OrderByLink.CssModifier(link, cssProvider));
+		link.add(getBodyContainer());
+	}
+
+	/**
+	 * create new sort order toggling link
+	 *
+	 * @param id
+	 *            component id
+	 * @param property
+	 *            sort property
+	 * @param stateLocator
+	 *            sort state locator
+	 * @return link
+	 */
+	protected OrderByLink newOrderByLink(String id, String property, ISortStateLocator stateLocator)
+	{
+		return new OrderByLink(id, property, stateLocator, OrderByLink.VoidCssProvider.getInstance())
+		{
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -65,9 +83,6 @@ public class OrderByBorder extends Borde
 				OrderByBorder.this.onSortChanged();
 			}
 		};
-		addToBorder(link);
-		addToBorder(new OrderByLink.CssModifier(link, cssProvider));
-		link.add(getBodyContainer());
 	}
 
 	/**

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java?rev=1041134&r1=1041133&r2=1041134&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java Wed Dec  1 19:12:18 2010
@@ -127,23 +127,36 @@ public class OrderByLink extends Link
 		}
 
 		ISortState state = stateLocator.getSortState();
+
+		// get current sort order
 		SortOrder order = state.getPropertySortOrder(property);
 
+		// set next sort order
+		state.setPropertySortOrder(property, nextSortOrder(order));
+
+		return this;
+	}
+
+	/**
+	 * returns the next sort order when changing it
+	 *
+	 * @param order
+	 *          previous sort order
+	 * @return next sort order
+	 */
+	protected SortOrder nextSortOrder(SortOrder order)
+	{
 		// init / flip order
 		if(order == SortOrder.NONE)
 		{
-			order = SortOrder.ASCENDING;
+			return SortOrder.ASCENDING;
 		}
 		else
 		{
-			order = order == SortOrder.ASCENDING ? SortOrder.DESCENDING : SortOrder.ASCENDING;
+			return order == SortOrder.ASCENDING ? SortOrder.DESCENDING : SortOrder.ASCENDING;
 		}
-		state.setPropertySortOrder(property, order);
-
-		return this;
 	}
 
-
 	/**
 	 * Uses the specified ICssProvider to add css class attributes to the link.
 	 *