James Moger
2011-11-04 e33b91aa4d43246ad62832e66e2acfad3dfb3608
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;
@@ -41,7 +42,6 @@
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableRowSorter;
import com.gitblit.Constants.RpcRequest;
import com.gitblit.models.FeedModel;
import com.gitblit.models.SyndicatedEntryModel;
import com.gitblit.utils.StringUtils;
@@ -77,6 +77,12 @@
   private JComboBox authorSelector;
   private int page;
   private JButton prev;
   private JButton next;
   public FeedsPanel(GitblitClient gitblit) {
      super();
      this.gitblit = gitblit;
@@ -84,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);
         }
      });
@@ -131,7 +156,7 @@
      NameRenderer nameRenderer = new NameRenderer();
      tableModel = new SyndicatedEntryTableModel();
      header = new HeaderPanel(Translation.get("gb.timeline"), "feed_16x16.png");
      header = new HeaderPanel(Translation.get("gb.activity"), "feed_16x16.png");
      table = Utils.newTable(tableModel, Utils.DATE_FORMAT);
      defaultSorter = new TableRowSorter<SyndicatedEntryTableModel>(tableModel);
      String name = table.getColumnName(SyndicatedEntryTableModel.Columns.Author.ordinal());
@@ -142,6 +167,9 @@
      name = table.getColumnName(SyndicatedEntryTableModel.Columns.Branch.ordinal());
      table.getColumn(name).setCellRenderer(new BranchRenderer());
      name = table.getColumnName(SyndicatedEntryTableModel.Columns.Message.ordinal());
      table.getColumn(name).setCellRenderer(new MessageRenderer(gitblit));
      table.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {
@@ -203,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);
@@ -219,12 +249,12 @@
      return Utils.INSETS;
   }
   protected void refreshFeeds() {
      // TODO change request type here
      GitblitWorker worker = new GitblitWorker(FeedsPanel.this, RpcRequest.LIST_USERS) {
   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;
         }
@@ -242,29 +272,41 @@
      tableModel.entries.clear();
      tableModel.entries.addAll(gitblit.getSyndicatedEntries());
      tableModel.fireTableDataChanged();
      header.setText(Translation.get("gb.timeline") + " ("
            + gitblit.getSyndicatedEntries().size() + ")");
      header.setText(Translation.get("gb.activity") + " ("
            + 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() {
      String repository = repositorySelector.getSelectedItem().toString();
      String repository = ALL;
      if (repositorySelector.getSelectedIndex() > -1) {
         repository = repositorySelector.getSelectedItem().toString();
      }
      // determine unique repositories and authors
      Set<String> uniqueAuthors = new HashSet<String>();