From c7a721aad7c23640d59ad682854e066f4538436c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Nov 2011 07:56:07 -0500
Subject: [PATCH] Show busy cursors when executing workers

---
 src/com/gitblit/client/RepositoriesPanel.java |   42 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java
index 20b9080..70ff6cf 100644
--- a/src/com/gitblit/client/RepositoriesPanel.java
+++ b/src/com/gitblit/client/RepositoriesPanel.java
@@ -134,6 +134,24 @@
 			}
 		});
 
+		final JButton logRepository = new JButton(Translation.get("gb.log") + "...");
+		logRepository.setEnabled(false);
+		logRepository.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				RepositoryModel model = getSelectedRepositories().get(0);
+				showSearchDialog(false, model);
+			}
+		});
+
+		final JButton searchRepository = new JButton(Translation.get("gb.search") + "...");
+		searchRepository.setEnabled(false);
+		searchRepository.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				RepositoryModel model = getSelectedRepositories().get(0);
+				showSearchDialog(true, model);
+			}
+		});
+
 		SubscribedRepositoryRenderer nameRenderer = new SubscribedRepositoryRenderer(gitblit);
 		IndicatorsRenderer typeRenderer = new IndicatorsRenderer();
 
@@ -165,9 +183,19 @@
 				}
 				boolean singleSelection = table.getSelectedRowCount() == 1;
 				boolean selected = table.getSelectedRow() > -1;
-				browseRepository.setEnabled(singleSelection);
+				if (singleSelection) {
+					RepositoryModel repository = getSelectedRepositories().get(0);
+					browseRepository.setEnabled(repository.hasCommits);
+					logRepository.setEnabled(repository.hasCommits);
+					searchRepository.setEnabled(repository.hasCommits);
+					subscribeRepository.setEnabled(repository.hasCommits);
+				} else {
+					browseRepository.setEnabled(false);
+					logRepository.setEnabled(false);
+					searchRepository.setEnabled(false);
+					subscribeRepository.setEnabled(false);
+				}
 				delRepository.setEnabled(selected);
-				subscribeRepository.setEnabled(singleSelection);
 				if (selected) {
 					int viewRow = table.getSelectedRow();
 					int modelRow = table.convertRowIndexToModel(viewRow);
@@ -216,6 +244,8 @@
 		repositoryControls.add(editRepository);
 		repositoryControls.add(delRepository);
 		repositoryControls.add(subscribeRepository);
+		repositoryControls.add(logRepository);
+		repositoryControls.add(searchRepository);
 
 		setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
 		header = new HeaderPanel(Translation.get("gb.repositories"), "gitweb-favicon.png");
@@ -449,4 +479,12 @@
 		}
 	}
 
+	private void showSearchDialog(boolean isSearch, final RepositoryModel repository) {
+		final SearchDialog dialog = new SearchDialog(gitblit, isSearch);
+		if (repository != null) {
+			dialog.selectRepository(repository);
+		}
+		dialog.setLocationRelativeTo(this);
+		dialog.setVisible(true);
+	}
 }

--
Gitblit v1.9.1