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.
*