James Moger
2011-04-18 7203a415392b5372c0866991f1c2810eb5e3527a
Add search form to the page nav links panel within a repository.
6 files modified
79 ■■■■ changed files
src/com/gitblit/utils/JGitUtils.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.java 7 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/SummaryPage.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/PageLinksPanel.html 17 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/PageLinksPanel.java 36 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/resources/gitblit.css 13 ●●●●● patch | view | raw | blame | history
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) {
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
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" />
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>
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));
        }
    }
}
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;