From ef5c58d12ff33e4f2b83b6dcd53bdb6c96a6150d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 11 Apr 2011 08:18:22 -0400
Subject: [PATCH] Page log.

---
 src/com/gitblit/wicket/panels/LogPanel.java |   46 ++++++++++++++++++++++++++--------------------
 1 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/LogPanel.java b/src/com/gitblit/wicket/panels/LogPanel.java
index 630be61..077ebb9 100644
--- a/src/com/gitblit/wicket/panels/LogPanel.java
+++ b/src/com/gitblit/wicket/panels/LogPanel.java
@@ -4,9 +4,9 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
@@ -31,17 +31,26 @@
 
 	private static final long serialVersionUID = 1L;
 
-	public LogPanel(String wicketId, final String repositoryName, Repository r, int maxCount, boolean showPager) {
+	public LogPanel(String wicketId, final String repositoryName, String objectId, Repository r, int limit, int pageOffset) {
 		super(wicketId);
-
+		boolean pageResults = limit <= 0;	
+		setOutputMarkupId(pageResults);
+		
 		final Map<ObjectId, List<String>> allRefs = JGitUtils.getAllRefs(r);
-		List<RevCommit> commits = JGitUtils.getRevLog(r, maxCount);
+		List<RevCommit> commits;
+		if (pageResults) {
+			// Paging result set
+			commits = JGitUtils.getRevLog(r, objectId, pageOffset*GitBlitWebApp.PAGING_ITEM_COUNT, GitBlitWebApp.PAGING_ITEM_COUNT);
+		} else {
+			// Fixed size result set
+			commits = JGitUtils.getRevLog(r, objectId, 0, limit);
+		}
 
 		// header
-		if (showPager) {
+		if (pageResults) {
 			// shortlog page
 			// show repository summary page link
-			add(new LinkPanel("header", "title", repositoryName, SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));			
+			add(new LinkPanel("header", "title", repositoryName, SummaryPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
 		} else {
 			// summary page
 			// show shortlog page link
@@ -64,7 +73,7 @@
 
 				String shortMessage = entry.getShortMessage();
 				String trimmedMessage = WicketUtils.trimShortLog(shortMessage);
-				LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName()));
+				LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName()));
 				if (!shortMessage.equals(trimmedMessage)) {
 					WicketUtils.setHtmlTitle(shortlog, shortMessage);
 				}
@@ -72,32 +81,29 @@
 
 				item.add(new RefsPanel("commitRefs", entry, allRefs));
 
-				item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
-				item.add(new BookmarkablePageLink<Void>("diff", DiffPage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
-				item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newCommitParameter(repositoryName, entry.getName())));
+				item.add(new BookmarkablePageLink<Void>("view", CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
+				item.add(new BookmarkablePageLink<Void>("diff", DiffPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
+				item.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName())));
 
 				WicketUtils.setAlternatingBackground(item, counter);
 				counter++;
 			}
 		};
-		add(logView);
+		add(logView);		
 
 		// determine to show pager, more, or neither
-		if (maxCount <= 0) {
+		if (limit <= 0) {
 			// no display limit
 			add(new Label("moreLogs", "").setVisible(false));
 			add(new Label("pageLogs", "").setVisible(false));
-		} else {
-			if (commits.size() == maxCount) {
-
-			}
-			if (showPager) {
+		} else {			
+			if (pageResults) {
 				// paging
 				add(new Label("moreLogs", "").setVisible(false));
-				if (commits.size() == maxCount) {
+				if (commits.size() == limit) {
 					// show pager
 					logView.setItemsPerPage(GitBlitWebApp.PAGING_ITEM_COUNT);
-					add(new PagingNavigator("pageLogs", logView));
+					add(new AjaxPagingNavigator("pageLogs", logView));
 				} else {
 					// nothing to page
 					add(new Label("pageLogs", "").setVisible(false));
@@ -105,7 +111,7 @@
 			} else {
 				// more
 				add(new Label("pageLogs", "").setVisible(false));
-				if (commits.size() == maxCount) {
+				if (commits.size() == limit) {
 					// show more
 					add(new LinkPanel("moreLogs", "link", new StringResourceModel("gb.moreLogs", this, null), LogPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
 				} else {

--
Gitblit v1.9.1