summaryrefslogtreecommitdiff
path: root/orkweb/src/net/sf/oreka/tapestry/TablePaging.java
diff options
context:
space:
mode:
Diffstat (limited to 'orkweb/src/net/sf/oreka/tapestry/TablePaging.java')
-rw-r--r--orkweb/src/net/sf/oreka/tapestry/TablePaging.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/orkweb/src/net/sf/oreka/tapestry/TablePaging.java b/orkweb/src/net/sf/oreka/tapestry/TablePaging.java
new file mode 100644
index 0000000..e401543
--- /dev/null
+++ b/orkweb/src/net/sf/oreka/tapestry/TablePaging.java
@@ -0,0 +1,106 @@
+/*
+ * Oreka -- A media capture and retrieval platform
+ *
+ * Copyright (C) 2005, orecx LLC
+ *
+ * http://www.orecx.com
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License.
+ * Please refer to http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+/**
+ *
+ */
+package net.sf.oreka.tapestry;
+
+import java.util.*;
+import org.apache.log4j.*;
+import org.apache.tapestry.*;
+
+
+public abstract class TablePaging extends BaseComponent {
+
+ static Logger logger = Logger.getLogger(TablePaging.class);
+
+ public abstract TableState getTableState();
+ public abstract void setTableState(TableState state);
+
+ Integer sliderPosition;
+
+ public void firstPageAction(IRequestCycle cycle) {
+ getTableState().setNumResults(0);
+ setTableState(getTableState()); // persist !
+ }
+
+ public void previousPageAction(IRequestCycle cycle) {
+ TableState ps = getTableState();
+ if ( (ps.getCurrentOffset() - ps.getResultsPerPage()) >= 0 ) {
+ ps.setCurrentOffset(ps.getCurrentOffset() - ps.getResultsPerPage());
+ }
+ setTableState(getTableState()); // persist !
+ }
+
+ public void nextPageAction(IRequestCycle cycle) {
+ //logger.log(Level.INFO, "before:" + getPagingState().getCurrentPage());
+ //getPagingState().setCurrentPage(getPagingState().getCurrentPage()+1);
+ //logger.log(Level.INFO, "after:" + getPagingState().getCurrentPage());
+
+ TableState ps = getTableState();
+ if ( (ps.getCurrentOffset() + ps.getResultsPerPage()) < ps.getNumResults() ) {
+ ps.setCurrentOffset(ps.getCurrentOffset() + ps.getResultsPerPage());
+ }
+ setTableState(getTableState()); // persist !
+ }
+
+ public void lastPageAction(IRequestCycle cycle) {
+
+ TableState ps = getTableState();
+ double numPages = (double)ps.getNumResults() / ps.getResultsPerPage();
+ numPages = java.lang.Math.ceil(numPages);
+ //int numWholePages = ps.getNumResults() / ps.getResultsPerPage();
+ //int remainder = ps.getNumResults() % ps.getResultsPerPage();
+ //int lastPageOffset = 0;
+ //if (remainder > 0) {
+ // lastPageOffset = numWholePages * ps.getResultsPerPage();
+ //}
+ //else if (numWholePages > 0){
+ // lastPageOffset = (numWholePages - 1) * ps.getResultsPerPage();
+ //}
+ int lastPageOffset = 0;
+ if (numPages >= 1) {
+ lastPageOffset = (int)(numPages-1) * ps.getResultsPerPage();
+ }
+ ps.setCurrentOffset(lastPageOffset);
+ setTableState(getTableState()); // persist !
+ }
+
+ public void sliderClickAction(IRequestCycle cycle) {
+
+ Object[] parameters = cycle.getServiceParameters();
+ Integer sliderPosition = (Integer)parameters[0];
+
+ TableState ts = getTableState();
+ ts.setSliderPosition(sliderPosition);
+ double newOffset = ((double)ts.getNumResults() / getSliderPositions().size()) * sliderPosition.intValue();
+ ts.setCurrentOffset((int)newOffset);
+ logger.log(Level.INFO, "Slider: pos:" + sliderPosition.intValue() + " offset:" + newOffset);
+ setTableState(getTableState()); // persist !
+ }
+
+ /**
+ * @return Returns the sliderPositions.
+ */
+ public List getSliderPositions() {
+
+ ArrayList sliderPositions = new ArrayList();
+ int numPositions = java.lang.Math.min(getTableState().getNumPages(), 20);
+ for(int i=0;i<numPositions;i++) {
+ sliderPositions.add(new Integer(i));
+ }
+ return sliderPositions;
+ }
+
+}