From 0e44acbb2fec928a1606dc60f427a148fff405c9 Mon Sep 17 00:00:00 2001
From: Mohamed Ragab <moragab@gmail.com>
Date: Wed, 02 May 2012 11:15:01 -0400
Subject: [PATCH] Added a script to facilitate setting the proxy host and port and no proxy hosts, and then it concatenates all the java system properties for setting the java proxy configurations and puts the resulting string in an environment variable JAVA_PROXY_CONFIG, modified the scirpts gitblit,  gitblit-ubuntu, and gitblit-centos to source the java-proxy-config.sh script and then include the resulting java proxy configuration in the java command

---
 src/com/gitblit/client/FeedsPanel.java |  134 +++++++++++++++++++++++++++++---------------
 1 files changed, 88 insertions(+), 46 deletions(-)

diff --git a/src/com/gitblit/client/FeedsPanel.java b/src/com/gitblit/client/FeedsPanel.java
index 60d2d5f..97f37c0 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;
@@ -41,9 +42,8 @@
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.TableRowSorter;
 
-import com.gitblit.Constants.RpcRequest;
+import com.gitblit.models.FeedEntryModel;
 import com.gitblit.models.FeedModel;
-import com.gitblit.models.SyndicatedEntryModel;
 import com.gitblit.utils.StringUtils;
 
 /**
@@ -61,9 +61,9 @@
 
 	private final String ALL = "*";
 
-	private SyndicatedEntryTableModel tableModel;
+	private FeedEntryTableModel tableModel;
 
-	private TableRowSorter<SyndicatedEntryTableModel> defaultSorter;
+	private TableRowSorter<FeedEntryTableModel> defaultSorter;
 
 	private HeaderPanel header;
 
@@ -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);
 			}
 		});
 
@@ -130,18 +155,21 @@
 		controls.add(viewTree);
 
 		NameRenderer nameRenderer = new NameRenderer();
-		tableModel = new SyndicatedEntryTableModel();
-		header = new HeaderPanel(Translation.get("gb.timeline"), "feed_16x16.png");
+		tableModel = new FeedEntryTableModel();
+		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());
+		defaultSorter = new TableRowSorter<FeedEntryTableModel>(tableModel);
+		String name = table.getColumnName(FeedEntryTableModel.Columns.Author.ordinal());
 		table.setRowHeight(nameRenderer.getFont().getSize() + 8);
 		table.getColumn(name).setCellRenderer(nameRenderer);
-		name = table.getColumnName(SyndicatedEntryTableModel.Columns.Repository.ordinal());
+		name = table.getColumnName(FeedEntryTableModel.Columns.Repository.ordinal());
 		table.getColumn(name).setCellRenderer(nameRenderer);
 
-		name = table.getColumnName(SyndicatedEntryTableModel.Columns.Branch.ordinal());
+		name = table.getColumnName(FeedEntryTableModel.Columns.Branch.ordinal());
 		table.getColumn(name).setCellRenderer(new BranchRenderer());
+
+		name = table.getColumnName(FeedEntryTableModel.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,33 +272,45 @@
 		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 (FeedEntryModel 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>();
-		for (SyndicatedEntryModel entry : tableModel.entries) {
+		for (FeedEntryModel entry : tableModel.entries) {
 			if (repository.equals(ALL) || entry.repository.equalsIgnoreCase(repository)) {
 				uniqueAuthors.add(entry.author);
 			}
@@ -283,25 +325,25 @@
 		}
 	}
 
-	protected SyndicatedEntryModel getSelectedSyndicatedEntry() {
+	protected FeedEntryModel getSelectedSyndicatedEntry() {
 		int viewRow = table.getSelectedRow();
 		int modelRow = table.convertRowIndexToModel(viewRow);
-		SyndicatedEntryModel entry = tableModel.get(modelRow);
+		FeedEntryModel entry = tableModel.get(modelRow);
 		return entry;
 	}
 
 	protected void viewCommit() {
-		SyndicatedEntryModel entry = getSelectedSyndicatedEntry();
+		FeedEntryModel entry = getSelectedSyndicatedEntry();
 		Utils.browse(entry.link);
 	}
 
 	protected void viewCommitDiff() {
-		SyndicatedEntryModel entry = getSelectedSyndicatedEntry();
+		FeedEntryModel entry = getSelectedSyndicatedEntry();
 		Utils.browse(entry.link.replace("/commit/", "/commitdiff/"));
 	}
 
 	protected void viewTree() {
-		SyndicatedEntryModel entry = getSelectedSyndicatedEntry();
+		FeedEntryModel entry = getSelectedSyndicatedEntry();
 		Utils.browse(entry.link.replace("/commit/", "/tree/"));
 	}
 
@@ -324,30 +366,30 @@
 			table.setRowSorter(defaultSorter);
 			return;
 		}
-		final int repositoryIndex = SyndicatedEntryTableModel.Columns.Repository.ordinal();
-		final int authorIndex = SyndicatedEntryTableModel.Columns.Author.ordinal();
-		RowFilter<SyndicatedEntryTableModel, Object> containsFilter;
+		final int repositoryIndex = FeedEntryTableModel.Columns.Repository.ordinal();
+		final int authorIndex = FeedEntryTableModel.Columns.Author.ordinal();
+		RowFilter<FeedEntryTableModel, Object> containsFilter;
 		if (repository.equals(ALL)) {
 			// author filter
-			containsFilter = new RowFilter<SyndicatedEntryTableModel, Object>() {
+			containsFilter = new RowFilter<FeedEntryTableModel, Object>() {
 				public boolean include(
-						Entry<? extends SyndicatedEntryTableModel, ? extends Object> entry) {
+						Entry<? extends FeedEntryTableModel, ? extends Object> entry) {
 					return entry.getStringValue(authorIndex).equalsIgnoreCase(author);
 				}
 			};
 		} else if (author.equals(ALL)) {
 			// repository filter
-			containsFilter = new RowFilter<SyndicatedEntryTableModel, Object>() {
+			containsFilter = new RowFilter<FeedEntryTableModel, Object>() {
 				public boolean include(
-						Entry<? extends SyndicatedEntryTableModel, ? extends Object> entry) {
+						Entry<? extends FeedEntryTableModel, ? extends Object> entry) {
 					return entry.getStringValue(repositoryIndex).equalsIgnoreCase(repository);
 				}
 			};
 		} else {
 			// repository-author filter
-			containsFilter = new RowFilter<SyndicatedEntryTableModel, Object>() {
+			containsFilter = new RowFilter<FeedEntryTableModel, Object>() {
 				public boolean include(
-						Entry<? extends SyndicatedEntryTableModel, ? extends Object> entry) {
+						Entry<? extends FeedEntryTableModel, ? extends Object> entry) {
 					boolean authorMatch = entry.getStringValue(authorIndex)
 							.equalsIgnoreCase(author);
 					boolean repositoryMatch = entry.getStringValue(repositoryIndex)
@@ -356,7 +398,7 @@
 				}
 			};
 		}
-		TableRowSorter<SyndicatedEntryTableModel> sorter = new TableRowSorter<SyndicatedEntryTableModel>(
+		TableRowSorter<FeedEntryTableModel> sorter = new TableRowSorter<FeedEntryTableModel>(
 				tableModel);
 		sorter.setRowFilter(containsFilter);
 		table.setRowSorter(sorter);

--
Gitblit v1.9.1