From 7203a415392b5372c0866991f1c2810eb5e3527a Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 18 Apr 2011 17:50:31 -0400
Subject: [PATCH] Add search form to the page nav links panel within a repository.

---
 src/com/gitblit/wicket/pages/SummaryPage.html     |    2 
 src/com/gitblit/wicket/panels/PageLinksPanel.java |   36 ++++++++++++++++++
 src/com/gitblit/wicket/panels/PageLinksPanel.html |   17 +++++++-
 src/com/gitblit/wicket/GitBlitWebApp.java         |    7 ---
 src/com/gitblit/wicket/resources/gitblit.css      |   13 ++++++
 src/com/gitblit/utils/JGitUtils.java              |    4 ++
 6 files changed, 67 insertions(+), 12 deletions(-)

diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java
index 3b69c22..49fbf1e 100644
--- a/src/com/gitblit/utils/JGitUtils.java
+++ b/src/com/gitblit/utils/JGitUtils.java
@@ -519,6 +519,10 @@
 			}
 			return null;
 		}
+		
+		public String toString() {
+			return name().toLowerCase();
+		}
 	}
 
 	public static List<RevCommit> searchRevlogs(Repository r, String objectId, String value, final SearchType type, int offset, int maxCount) {
diff --git a/src/com/gitblit/wicket/GitBlitWebApp.java b/src/com/gitblit/wicket/GitBlitWebApp.java
index dc1e2c9..106981e 100644
--- a/src/com/gitblit/wicket/GitBlitWebApp.java
+++ b/src/com/gitblit/wicket/GitBlitWebApp.java
@@ -6,8 +6,6 @@
 import org.apache.wicket.Response;
 import org.apache.wicket.Session;
 import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.protocol.http.request.urlcompressing.UrlCompressingWebRequestProcessor;
-import org.apache.wicket.request.IRequestCycleProcessor;
 import org.apache.wicket.request.target.coding.MixedParamUrlCodingStrategy;
 
 import com.gitblit.GitBlit;
@@ -84,11 +82,6 @@
 	@Override
 	public final Session newSession(Request request, Response response) {
 		return new GitBlitWebSession(request);
-	}
-
-	@Override
-	protected final IRequestCycleProcessor newRequestCycleProcessor() {
-		return new UrlCompressingWebRequestProcessor();
 	}
 
 	@Override
diff --git a/src/com/gitblit/wicket/pages/SummaryPage.html b/src/com/gitblit/wicket/pages/SummaryPage.html
index 7075bd2..47c10b3 100644
--- a/src/com/gitblit/wicket/pages/SummaryPage.html
+++ b/src/com/gitblit/wicket/pages/SummaryPage.html
@@ -10,7 +10,7 @@
 	<!-- page nav links -->	
 	<div wicket:id="pageLinks">[page links]</div>
 	
-	<div>
+	<div style="clear:both;">
 		<!-- Repository Activity Chart -->	
 		<div style="width:400px;float:right;">
 			<img class="activityGraph" wicket:id="commitsChart" />
diff --git a/src/com/gitblit/wicket/panels/PageLinksPanel.html b/src/com/gitblit/wicket/panels/PageLinksPanel.html
index f2e4d31..40ec634 100644
--- a/src/com/gitblit/wicket/panels/PageLinksPanel.html
+++ b/src/com/gitblit/wicket/panels/PageLinksPanel.html
@@ -5,9 +5,20 @@
       lang="en"> 
 
 <wicket:panel>
-	<!-- page nav links -->	
-	<div class="page_nav">
-		<a wicket:id="summary"><wicket:message key="gb.summary"></wicket:message></a> | <a wicket:id="log"><wicket:message key="gb.log"></wicket:message></a> | <a wicket:id="branches"><wicket:message key="gb.branches"></wicket:message></a> | <a wicket:id="tags"><wicket:message key="gb.tags"></wicket:message></a> | <a wicket:id="tree"><wicket:message key="gb.tree"></wicket:message></a> <span wicket:id="extra"><span wicket:id="extraSeparator"></span><span wicket:id="extraLink"></span></span>
+	<!-- floating search form on right -->
+	<form wicket:id="searchForm">
+		<div class="search">
+			<select wicket:id="searchType"/>
+			<wicket:message key="gb.search"></wicket:message>:
+			<input type="text" id="searchBox" wicket:id="searchBox" value=""/>
+		</div>
+	</form>
+		
+	<!-- page nav links -->
+	<div class="page_nav">		
+		<div>
+			<a wicket:id="summary"><wicket:message key="gb.summary"></wicket:message></a> | <a wicket:id="log"><wicket:message key="gb.log"></wicket:message></a> | <a wicket:id="branches"><wicket:message key="gb.branches"></wicket:message></a> | <a wicket:id="tags"><wicket:message key="gb.tags"></wicket:message></a> | <a wicket:id="tree"><wicket:message key="gb.tree"></wicket:message></a> <span wicket:id="extra"><span wicket:id="extraSeparator"></span><span wicket:id="extraLink"></span></span>
+		</div>
 	</div>	
 </wicket:panel>
 </html>
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/panels/PageLinksPanel.java b/src/com/gitblit/wicket/panels/PageLinksPanel.java
index f8824db..6503405 100644
--- a/src/com/gitblit/wicket/panels/PageLinksPanel.java
+++ b/src/com/gitblit/wicket/panels/PageLinksPanel.java
@@ -2,26 +2,34 @@
 
 import java.text.MessageFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.StatelessForm;
+import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.eclipse.jgit.lib.Repository;
 
 import com.gitblit.GitBlit;
 import com.gitblit.Keys;
 import com.gitblit.utils.JGitUtils;
+import com.gitblit.utils.JGitUtils.SearchType;
 import com.gitblit.wicket.LinkPanel;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.pages.BranchesPage;
 import com.gitblit.wicket.pages.LogPage;
+import com.gitblit.wicket.pages.SearchPage;
 import com.gitblit.wicket.pages.SummaryPage;
 import com.gitblit.wicket.pages.TagsPage;
 import com.gitblit.wicket.pages.TicketsPage;
@@ -78,6 +86,8 @@
 			}
 		};
 		add(extrasView);
+
+		add(new SearchForm("searchForm", repositoryName));
 	}
 
 	public void disablePageLink(String pageName) {
@@ -93,4 +103,30 @@
 			}
 		}
 	}
+
+	class SearchForm extends StatelessForm<Void> {
+		private static final long serialVersionUID = 1L;
+
+		private final String repositoryName;
+
+		private final IModel<String> searchBoxModel = new Model<String>("");
+		
+		private final IModel<SearchType> searchTypeModel = new Model<SearchType>(SearchType.COMMIT);
+
+		public SearchForm(String id, String repositoryName) {
+			super(id);
+			this.repositoryName = repositoryName;
+			DropDownChoice<SearchType> searchType = new DropDownChoice<SearchType>("searchType", Arrays.asList(SearchType.values()));
+			searchType.setModel(searchTypeModel);
+			add(searchType);
+			add(new TextField<String>("searchBox", searchBoxModel));
+		}
+
+		@Override
+		public void onSubmit() {
+			SearchType searchType = searchTypeModel.getObject();
+			String searchString = searchBoxModel.getObject();
+			setResponsePage(SearchPage.class, WicketUtils.newSearchParameter(repositoryName, null, searchString, searchType));
+		}
+	}
 }
\ No newline at end of file
diff --git a/src/com/gitblit/wicket/resources/gitblit.css b/src/com/gitblit/wicket/resources/gitblit.css
index 736dbb3..8264cbb 100644
--- a/src/com/gitblit/wicket/resources/gitblit.css
+++ b/src/com/gitblit/wicket/resources/gitblit.css
@@ -5,6 +5,10 @@
 	font-family: verdana, sans-serif;
 	font-size: 12px;
 	line-height: 15px;
+	margin: 0;
+	padding: 0;
+	border: 0;
+	outline: 0;
 }
 
 body {
@@ -141,7 +145,7 @@
 div.page_nav {
 	color: #ddd;
 	background-color: #000070;
-	padding: 5px;
+	padding: 7px;
 }
 
 div.page_nav a {
@@ -161,6 +165,13 @@
 	padding: 2px 5px 7px 5px;	
 }
 
+div.search {
+	color:yellow;
+	text-align:right;
+	float:right;
+	padding:3px;
+}
+
 .repositories_message {
 	border: solid #bbb;
 	border-width: 0px 0px 1px;

--
Gitblit v1.9.1