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/FeedsPanel.java | 70 +++++++++++++++++++++++++++-------- 1 files changed, 54 insertions(+), 16 deletions(-) diff --git a/src/com/gitblit/client/FeedsPanel.java b/src/com/gitblit/client/FeedsPanel.java index a8094f8..97764db 100644 --- a/src/com/gitblit/client/FeedsPanel.java +++ b/src/com/gitblit/client/FeedsPanel.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; @@ -76,6 +77,12 @@ private JComboBox authorSelector; + private int page; + + private JButton prev; + + private JButton next; + public FeedsPanel(GitblitClient gitblit) { super(); this.gitblit = gitblit; @@ -83,10 +90,29 @@ } private void initialize() { + + prev = new JButton("<"); + prev.setToolTipText(Translation.get("gb.pagePrevious")); + prev.setEnabled(false); + prev.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + refreshFeeds(--page); + } + }); + + next = new JButton(">"); + next.setToolTipText(Translation.get("gb.pageNext")); + next.setEnabled(false); + next.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + refreshFeeds(++page); + } + }); + JButton refreshFeeds = new JButton(Translation.get("gb.refresh")); refreshFeeds.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - refreshFeeds(); + refreshFeeds(0); } }); @@ -205,6 +231,8 @@ northControls.add(repositorySelector); northControls.add(new JLabel(Translation.get("gb.author"))); northControls.add(authorSelector); +// northControls.add(prev); +// northControls.add(next); JPanel northPanel = new JPanel(new BorderLayout(0, Utils.MARGIN)); northPanel.add(header, BorderLayout.NORTH); @@ -221,11 +249,12 @@ return Utils.INSETS; } - protected void refreshFeeds() { + protected void refreshFeeds(final int page) { + this.page = page; GitblitWorker worker = new GitblitWorker(FeedsPanel.this, null) { @Override protected Boolean doRequest() throws IOException { - gitblit.refreshSubscribedFeeds(); + gitblit.refreshSubscribedFeeds(page); return true; } @@ -244,24 +273,33 @@ tableModel.entries.addAll(gitblit.getSyndicatedEntries()); tableModel.fireTableDataChanged(); header.setText(Translation.get("gb.activity") + " (" - + gitblit.getSyndicatedEntries().size() + ")"); + + gitblit.getSyndicatedEntries().size() + (page > 0 ? (", pg " + (page + 1)) : "") + + ")"); if (pack) { Utils.packColumns(table, Utils.MARGIN); } - // determine unique repositories - Set<String> uniqueRepositories = new HashSet<String>(); - for (SyndicatedEntryModel entry : tableModel.entries) { - uniqueRepositories.add(entry.repository); + table.scrollRectToVisible(new Rectangle(table.getCellRect(0, 0, true))); + + if (page == 0) { + // determine unique repositories + Set<String> uniqueRepositories = new HashSet<String>(); + for (SyndicatedEntryModel entry : tableModel.entries) { + uniqueRepositories.add(entry.repository); + } + + // repositories + List<String> sortedRespositories = new ArrayList<String>(uniqueRepositories); + StringUtils.sortRepositorynames(sortedRespositories); + repositoryChoices.removeAllElements(); + repositoryChoices.addElement(ALL); + for (String repo : sortedRespositories) { + repositoryChoices.addElement(repo); + } } - // repositories - List<String> sortedRespositories = new ArrayList<String>(uniqueRepositories); - StringUtils.sortRepositorynames(sortedRespositories); - repositoryChoices.removeAllElements(); - repositoryChoices.addElement(ALL); - for (String repo : sortedRespositories) { - repositoryChoices.addElement(repo); - } + // update pagination buttons + next.setEnabled(tableModel.entries.size() > 0); + prev.setEnabled(page > 0); } private void updateAuthors() { -- Gitblit v1.9.1