Author: ssmiweve
Date: 2009-01-13 18:49:55 +0100 (Tue, 13 Jan 2009)
New Revision: 7144

Modified:
   
branches/2.18/view-config-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationConfig.java
   
branches/2.18/view-control-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationController.java
Log:
patch from Anders Widgren
Issue SKER5036:  (Could be a good idea to have the possibility to jump result 
pages with more than one page at the time.)       

Modified: 
branches/2.18/view-config-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationConfig.java
===================================================================
--- 
branches/2.18/view-config-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationConfig.java
       2009-01-11 20:54:10 UTC (rev 7143)
+++ 
branches/2.18/view-config-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationConfig.java
       2009-01-13 17:49:55 UTC (rev 7144)
@@ -18,13 +18,15 @@
  */
 package no.sesat.search.view.navigation;
 
+import static 
no.sesat.search.site.config.AbstractDocumentFactory.fillBeanProperty;
 import no.sesat.search.mode.config.SearchConfiguration;
-import static 
no.sesat.search.site.config.AbstractDocumentFactory.fillBeanProperty;
-import static no.sesat.search.site.config.AbstractDocumentFactory.ParseType;
+import no.sesat.search.site.config.AbstractDocumentFactory.ParseType;
 import no.sesat.search.view.navigation.NavigationConfig.Nav.ControllerFactory;
+
 import org.w3c.dom.Element;
 
-/**
+/** Configuration for result paging.
+ * Makes it possible to configure pageSize, number of page number thumbnails, 
and jump forward multiple pages options.
  *
  * @version $Id$
  */
@@ -34,24 +36,39 @@
     /** Used for both the id of the configuration AND the parameter name. **/
     public static final String OFFSET_KEY = 
SearchConfiguration.DEFAULT_PAGING_PARAMETER;
 
+    private int multiplePageSize;
     private int pageSize;
     private int numberOfPages;
     private String commandName;
     private String hitcountSource;
 
-    public ResultPagingNavigationConfig(final NavigationConfig.Nav parent, 
final NavigationConfig.Navigation navigation, final Element e) {
+    public ResultPagingNavigationConfig(
+            final NavigationConfig.Nav parent,
+            final NavigationConfig.Navigation navigation,
+            final Element e) {
+
         super(parent, navigation, e);
 
+        fillBeanProperty(this, null, "multiplePageSize", ParseType.Int, e, 
"0");
         fillBeanProperty(this, null, "pageSize", ParseType.Int, e, "10");
         fillBeanProperty(this, null, "numberOfPages", ParseType.Int, e, "10");
         fillBeanProperty(this, null, "commandName", ParseType.String, e, null);
         fillBeanProperty(this, null, "hitcountSource", ParseType.String, e, 
"");
     }
+
+    public int getMultiplePageSize() {
+        return multiplePageSize;
+    }
+
+    public void setMultiplePageSize(final int multiplePageSize) {
+        this.multiplePageSize = multiplePageSize;
+    }
+
     public int getPageSize() {
         return pageSize;
     }
 
-    public void setPageSize(int pageSize) {
+    public void setPageSize(final int pageSize) {
         this.pageSize = pageSize;
     }
 
@@ -59,7 +76,7 @@
         return numberOfPages;
     }
 
-    public void setNumberOfPages(int numberOfPages) {
+    public void setNumberOfPages(final int numberOfPages) {
         this.numberOfPages = numberOfPages;
     }
 
@@ -69,15 +86,15 @@
     }
 
     @Override
-    public void setCommandName(String commandName) {
+    public void setCommandName(final String commandName) {
         this.commandName = commandName;
     }
 
     public String getHitcountSource() {
         return hitcountSource;
-}
+    }
 
-    public void setHitcountSource(String hitcountSource) {
+    public void setHitcountSource(final String hitcountSource) {
         this.hitcountSource = hitcountSource;
     }
 }

Modified: 
branches/2.18/view-control-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationController.java
===================================================================
--- 
branches/2.18/view-control-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationController.java
  2009-01-11 20:54:10 UTC (rev 7143)
+++ 
branches/2.18/view-control-spi/src/main/java/no/sesat/search/view/navigation/ResultPagingNavigationController.java
  2009-01-13 17:49:55 UTC (rev 7144)
@@ -18,6 +18,7 @@
  */
 package no.sesat.search.view.navigation;
 
+import static 
no.sesat.search.view.navigation.ResultPagingNavigationConfig.OFFSET_KEY;
 import no.sesat.search.datamodel.generic.StringDataObject;
 import no.sesat.search.datamodel.search.SearchDataObject;
 import no.sesat.search.result.BasicNavigationItem;
@@ -25,7 +26,7 @@
 import no.sesat.search.result.ResultItem;
 import no.sesat.search.result.ResultList;
 import no.sesat.search.site.config.TextMessages;
-import static 
no.sesat.search.view.navigation.ResultPagingNavigationConfig.OFFSET_KEY;
+
 import org.apache.log4j.Logger;
 
 
@@ -48,6 +49,8 @@
 
     private static final String MSG_PREV = "prev";
     private static final String MSG_NEXT = "next";
+    private static final String MSG_PREV_MULTIPLE = "prevmult";
+    private static final String MSG_NEXT_MULTIPLE = "nextmult";
 
     private ResultPagingNavigationConfig config;
 
@@ -102,12 +105,28 @@
 
             // Add navigation item for previous page.
             if (pager.getCurrentPage() > 1) {
+
                 final String pageOffset = 
Integer.toString(pager.getOffsetOfPage(pager.getCurrentPage() - 1));
-                final String url = 
context.getUrlGenerator().getURL(pageOffset, config);
-                item.addResult(new 
BasicNavigationItem(messages.getMessage(MSG_PREV), url, config.getPageSize()));
+
+                item.addResult(new BasicNavigationItem(
+                        messages.getMessage(MSG_PREV),
+                        context.getUrlGenerator().getURL(pageOffset, config),
+                        config.getPageSize()));
+
+                // Add navigation for multi-previous page.
+                if(config.getMultiplePageSize() > 0 && pager.getCurrentPage() 
> config.getMultiplePageSize()) {
+
+                    final String pageOffsetMulti = Integer.toString(
+                            pager.getOffsetOfPage(pager.getCurrentPage() - 
config.getMultiplePageSize()));
+
+                    item.addResult(new BasicNavigationItem(
+                            messages.getMessage(MSG_PREV_MULTIPLE),
+                            context.getUrlGenerator().getURL(pageOffsetMulti, 
config),
+                            
config.getMultiplePageSize()*config.getPageSize()));
+                }
             }
 
-            // Add navigation items for the individual pages.
+            // Add navigation items for the individual page thumbnails.
             for (int i = pager.getFirstVisiblePage(); i <= 
pager.getLastVisiblePage(); ++i) {
 
                 final String pageOffset = 
Integer.toString(pager.getOffsetOfPage(i));
@@ -123,9 +142,27 @@
 
             // Add navigation item for next page.
             if (pager.getCurrentPage() < pager.getNumberOfPages()) {
+
                 final String pageOffset = 
Integer.toString(pager.getOffsetOfPage(pager.getCurrentPage() + 1));
-                final String url = 
context.getUrlGenerator().getURL(pageOffset, config);
-                item.addResult(new 
BasicNavigationItem(messages.getMessage(MSG_NEXT), url, config.getPageSize()));
+
+                item.addResult(new BasicNavigationItem(
+                        messages.getMessage(MSG_NEXT),
+                        context.getUrlGenerator().getURL(pageOffset, config),
+                        config.getPageSize()));
+
+                final int remainingPages = pager.getNumberOfPages() - 
pager.getCurrentPage();
+
+                // Add navigation for multi-next page.
+                if(config.getMultiplePageSize() > 0 && remainingPages >= 
config.getMultiplePageSize()) {
+
+                    final String pageOffsetMulti = Integer.toString(
+                            pager.getOffsetOfPage(pager.getCurrentPage() + 
config.getMultiplePageSize()));
+
+                    item.addResult(new BasicNavigationItem(
+                            messages.getMessage(MSG_NEXT_MULTIPLE),
+                            context.getUrlGenerator().getURL(pageOffsetMulti, 
config),
+                            
config.getMultiplePageSize()*config.getPageSize()));
+                }
             }
         }
         return item;

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to