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