From 17820f3a1153250a325fed23dfc2da59ce6ba777 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 31 Oct 2011 22:47:21 -0400
Subject: [PATCH] More feeds work in Manager

---
 src/com/gitblit/client/GitblitPanel.java |   74 ++++++++++++++++++-------------------
 1 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/src/com/gitblit/client/GitblitPanel.java b/src/com/gitblit/client/GitblitPanel.java
index 10e9c2d..64e85ea 100644
--- a/src/com/gitblit/client/GitblitPanel.java
+++ b/src/com/gitblit/client/GitblitPanel.java
@@ -56,6 +56,7 @@
 
 import com.gitblit.Constants.RpcRequest;
 import com.gitblit.client.ClosableTabComponent.CloseTabListener;
+import com.gitblit.models.FeedModel;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.SettingModel;
 import com.gitblit.models.SyndicatedEntryModel;
@@ -127,7 +128,7 @@
 
 		tabs = new JTabbedPane(JTabbedPane.BOTTOM);
 		tabs.addTab(Translation.get("gb.repositories"), createRepositoriesPanel());
-		tabs.addTab(Translation.get("gb.recentCommits"), createFeedsPanel());
+		tabs.addTab(Translation.get("gb.recentActivity"), createFeedsPanel());
 		tabs.addTab(Translation.get("gb.users"), createUsersPanel());
 		tabs.addTab(Translation.get("gb.settings"), createSettingsPanel());
 		tabs.addTab(Translation.get("gb.status"), createStatusPanel());
@@ -186,11 +187,12 @@
 		subscribeRepository.setEnabled(false);
 		subscribeRepository.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
-				subscribeRepository(getSelectedRepositories().get(0));
+				List<FeedModel> feeds = gitblit.getAvailableFeeds(getSelectedRepositories().get(0));
+				subscribeFeeds(feeds);
 			}
 		});
 
-		NameRenderer nameRenderer = new NameRenderer(true);
+		SubscribedRepositoryRenderer nameRenderer = new SubscribedRepositoryRenderer(gitblit);
 		IndicatorsRenderer typeRenderer = new IndicatorsRenderer();
 
 		DefaultTableCellRenderer sizeRenderer = new DefaultTableCellRenderer();
@@ -333,19 +335,34 @@
 			}
 		});
 
+		JButton subscribeFeeds = new JButton(Translation.get("gb.subscribe") + "...");
+		subscribeFeeds.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				subscribeFeeds(gitblit.getAvailableFeeds());
+			}
+		});
+
 		JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
 		controls.add(refreshFeeds);
+		controls.add(subscribeFeeds);
 		controls.add(viewCommit);
 		controls.add(viewCommitDiff);
 		controls.add(viewTree);
 
 		NameRenderer nameRenderer = new NameRenderer();
 		syndicationModel = new SyndicatedEntryTableModel();
-		feedsHeader = new HeaderPanel(Translation.get("gb.recentCommits"), "feed_16x16.png");
+		feedsHeader = new HeaderPanel(Translation.get("gb.recentActivity"), "feed_16x16.png");
 		syndicationEntriesTable = Utils.newTable(syndicationModel, Utils.DATE_FORMAT);
 		String name = syndicationEntriesTable
 				.getColumnName(SyndicatedEntryTableModel.Columns.Author.ordinal());
 		syndicationEntriesTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
+		syndicationEntriesTable.getColumn(name).setCellRenderer(nameRenderer);
+		name = syndicationEntriesTable.getColumnName(SyndicatedEntryTableModel.Columns.Repository
+				.ordinal());
+		syndicationEntriesTable.getColumn(name).setCellRenderer(nameRenderer);
+
+		name = syndicationEntriesTable.getColumnName(SyndicatedEntryTableModel.Columns.Branch
+				.ordinal());
 		syndicationEntriesTable.getColumn(name).setCellRenderer(nameRenderer);
 
 		syndicationEntriesTable.addMouseListener(new MouseAdapter() {
@@ -656,7 +673,7 @@
 		syndicationModel.entries.clear();
 		syndicationModel.entries.addAll(gitblit.getSyndicatedEntries());
 		syndicationModel.fireTableDataChanged();
-		feedsHeader.setText(Translation.get("gb.recentCommits") + " ("
+		feedsHeader.setText(Translation.get("gb.recentActivity") + " ("
 				+ gitblit.getSyndicatedEntries().size() + ")");
 	}
 
@@ -921,40 +938,21 @@
 		}
 	}
 
-	protected void subscribeRepository(final RepositoryModel repository) {
-		if (repository == null) {
-			return;
-		}
-		// TODO this is lame. need better ui.
-		if (gitblit.isSubscribed(repository, null)) {
-			// unsubscribe
-			String msg = MessageFormat.format("Do you want to unsubscribe from {0}?",
-					repository.name);
-			String[] options = { "no", "yes" };
-			int result = JOptionPane.showOptionDialog(GitblitPanel.this, msg, "Unsubscribe?",
-					JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options,
-					options[0]);
-			if (result == 1) {
-				if (gitblit.unsubscribe(repository, null)) {
-					updateFeedsTable();
-					updateRepositoriesTable();
-					listener.saveRegistration(repository.name, gitblit.reg);
-				}
+	protected void subscribeFeeds(final List<FeedModel> feeds) {
+		SubscriptionsDialog dialog = new SubscriptionsDialog(feeds) {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void save() {
+				gitblit.updateSubscribedFeeds(feeds);
+				listener.saveRegistration(gitblit.reg.name, gitblit.reg);
+				setVisible(false);
+				updateRepositoriesTable();
 			}
-		} else {
-			// subscribe
-			String msg = MessageFormat.format("Do you want to subscribe to {0}?", repository.name);
-			String[] options = { "no", "yes" };
-			int result = JOptionPane.showOptionDialog(GitblitPanel.this, msg, "Subscribe?",
-					JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options,
-					options[0]);
-			if (result == 1) {
-				if (gitblit.subscribe(repository, null)) {
-					updateRepositoriesTable();
-					listener.saveRegistration(repository.name, gitblit.reg);
-				}
-			}
-		}
+		};
+		dialog.setLocationRelativeTo(GitblitPanel.this);
+		dialog.setVisible(true);
 	}
 
 	protected void refreshFeeds() {

--
Gitblit v1.9.1