From e33b91aa4d43246ad62832e66e2acfad3dfb3608 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 04 Nov 2011 22:28:32 -0400 Subject: [PATCH] Support pagination in RSS feeds. Standardize pg as page parameter. --- src/com/gitblit/client/SearchDialog.java | 49 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/com/gitblit/client/SearchDialog.java b/src/com/gitblit/client/SearchDialog.java index 2f45611..5dbea78 100644 --- a/src/com/gitblit/client/SearchDialog.java +++ b/src/com/gitblit/client/SearchDialog.java @@ -18,6 +18,7 @@ import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Insets; +import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -77,6 +78,12 @@ private JComboBox maxHitsSelector; + private int page; + + private JButton prev; + + private JButton next; + public SearchDialog(GitblitClient gitblit) { super(); this.gitblit = gitblit; @@ -88,10 +95,28 @@ private void initialize() { + prev = new JButton("<"); + prev.setToolTipText(Translation.get("gb.pagePrevious")); + prev.setEnabled(false); + prev.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + search(--page); + } + }); + + next = new JButton(">"); + next.setToolTipText(Translation.get("gb.pageNext")); + next.setEnabled(false); + next.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + search(++page); + } + }); + final JButton search = new JButton(Translation.get("gb.search")); search.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - search(); + search(0); } }); @@ -194,12 +219,12 @@ searchTypeSelector.setSelectedItem(Constants.SearchType.COMMIT); maxHitsSelector = new JComboBox(new Integer[] { 25, 50, 75, 100 }); - maxHitsSelector.setSelectedIndex(-1); + maxHitsSelector.setSelectedIndex(0); searchFragment = new JTextField(25); searchFragment.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { - search(); + search(0); } }); @@ -214,6 +239,8 @@ northControls.add(maxHitsSelector); northControls.add(searchFragment); northControls.add(search); + northControls.add(prev); + northControls.add(next); JPanel northPanel = new JPanel(new BorderLayout(0, Utils.MARGIN)); northPanel.add(header, BorderLayout.NORTH); @@ -263,7 +290,8 @@ } } - protected void search() { + protected void search(final int page) { + this.page = page; final String repository = repositorySelector.getSelectedItem().toString(); final String branch = branchSelector.getSelectedIndex() > -1 ? branchSelector .getSelectedItem().toString() : null; @@ -272,13 +300,15 @@ final String fragment = searchFragment.getText(); final int maxEntryCount = maxHitsSelector.getSelectedIndex() > -1 ? ((Integer) maxHitsSelector .getSelectedItem()) : -1; + if (StringUtils.isEmpty(fragment)) { return; } SwingWorker<List<SyndicatedEntryModel>, Void> worker = new SwingWorker<List<SyndicatedEntryModel>, Void>() { @Override protected List<SyndicatedEntryModel> doInBackground() throws IOException { - return gitblit.search(repository, branch, fragment, searchType, maxEntryCount); + return gitblit + .search(repository, branch, fragment, searchType, maxEntryCount, page); } @Override @@ -298,11 +328,18 @@ tableModel.entries.clear(); tableModel.entries.addAll(entries); tableModel.fireTableDataChanged(); - setTitle(Translation.get("gb.search") + ": " + fragment + " (" + entries.size() + ")"); + setTitle(Translation.get("gb.search") + ": " + fragment + " (" + entries.size() + + (page > 0 ? (", pg " + (page + 1)) : "") + ")"); header.setText(getTitle()); if (pack) { Utils.packColumns(table, Utils.MARGIN); } + table.scrollRectToVisible(new Rectangle(table.getCellRect(0, 0, true))); + + // update pagination buttons + int maxHits = (Integer) maxHitsSelector.getSelectedItem(); + next.setEnabled(entries.size() == maxHits); + prev.setEnabled(page > 0); } protected SyndicatedEntryModel getSelectedSyndicatedEntry() { -- Gitblit v1.9.1