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


Reply via email to