From 41cffba4298d61383d0dd99857429960a4ca3d44 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 04 Nov 2011 23:00:19 -0400
Subject: [PATCH] Refinements to search dialog and null checks in cell renderers

---
 src/com/gitblit/client/BranchRenderer.java  |    7 ++-----
 src/com/gitblit/client/SearchDialog.java    |   44 +++++++++++++++++++++++++++++---------------
 src/com/gitblit/client/NameRenderer.java    |    4 ++--
 src/com/gitblit/client/MessageRenderer.java |    3 +++
 4 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/src/com/gitblit/client/BranchRenderer.java b/src/com/gitblit/client/BranchRenderer.java
index 586d050..9a303c3 100644
--- a/src/com/gitblit/client/BranchRenderer.java
+++ b/src/com/gitblit/client/BranchRenderer.java
@@ -41,10 +41,7 @@
 	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
 			boolean hasFocus, int row, int column) {
 		super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-		if (value == null) {
-			return this;
-		}
-		setText(value.toString());
+		setText(value == null ? "" : value.toString());
 		if (isSelected) {
 			setForeground(table.getSelectionForeground());
 		}
@@ -54,7 +51,7 @@
 	@Override
 	public Component getListCellRendererComponent(JList list, Object value, int index,
 			boolean isSelected, boolean cellHasFocus) {
-		setText(value.toString());
+		setText(value == null ? "" : value.toString());
 		if (isSelected) {
 			setBackground(list.getSelectionBackground());
 			setForeground(list.getSelectionForeground());
diff --git a/src/com/gitblit/client/MessageRenderer.java b/src/com/gitblit/client/MessageRenderer.java
index 2ff3527..3629e21 100644
--- a/src/com/gitblit/client/MessageRenderer.java
+++ b/src/com/gitblit/client/MessageRenderer.java
@@ -78,6 +78,9 @@
 			setBackground(table.getBackground());
 		messageLabel.setForeground(isSelected ? table.getSelectionForeground() : table
 				.getForeground());
+		if (value == null) {
+			return this;
+		}
 		SyndicatedEntryModel entry = (SyndicatedEntryModel) value;
 
 		if (gitblit == null) {
diff --git a/src/com/gitblit/client/NameRenderer.java b/src/com/gitblit/client/NameRenderer.java
index 8ba2e00..4cbb590 100644
--- a/src/com/gitblit/client/NameRenderer.java
+++ b/src/com/gitblit/client/NameRenderer.java
@@ -59,14 +59,14 @@
 	public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
 			boolean hasFocus, int row, int column) {
 		super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-		setValue(value, isSelected);
+		setValue(value == null ? "" : value, isSelected);
 		return this;
 	}
 
 	@Override
 	public Component getListCellRendererComponent(JList list, Object value, int index,
 			boolean isSelected, boolean cellHasFocus) {
-		setValue(value, isSelected);
+		setValue(value == null ? "" : value, isSelected);
 		if (isSelected) {
 			setBackground(list.getSelectionBackground());
 			setForeground(list.getSelectionForeground());
diff --git a/src/com/gitblit/client/SearchDialog.java b/src/com/gitblit/client/SearchDialog.java
index 5dbea78..448aaef 100644
--- a/src/com/gitblit/client/SearchDialog.java
+++ b/src/com/gitblit/client/SearchDialog.java
@@ -203,9 +203,16 @@
 					selectedBranch = branchSelector.getSelectedItem().toString();
 				}
 				updateBranches();
-				if (selectedBranch != null) {
+				if (StringUtils.isEmpty(selectedBranch)) {
+					// do not select branch
+					branchSelector.setSelectedIndex(-1);
+				} else {
 					if (branchChoices.getIndexOf(selectedBranch) > -1) {
+						// select branch
 						branchChoices.setSelectedItem(selectedBranch);
+					} else {
+						// branch does not exist, do not select branch
+						branchSelector.setSelectedIndex(-1);
 					}
 				}
 			}
@@ -213,7 +220,7 @@
 
 		branchChoices = new DefaultComboBoxModel();
 		branchSelector = new JComboBox(branchChoices);
-		branchSelector.setRenderer(new BranchRenderer());
+		branchSelector.setRenderer(new BranchRenderer());		
 
 		searchTypeSelector = new JComboBox(Constants.SearchType.values());
 		searchTypeSelector.setSelectedItem(Constants.SearchType.COMMIT);
@@ -228,19 +235,26 @@
 			}
 		});
 
-		JPanel northControls = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
-		northControls.add(new JLabel(Translation.get("gb.repository")));
-		northControls.add(repositorySelector);
-		northControls.add(new JLabel(Translation.get("gb.branch")));
-		northControls.add(branchSelector);
-		northControls.add(new JLabel(Translation.get("gb.type")));
-		northControls.add(searchTypeSelector);
-		northControls.add(new JLabel(Translation.get("gb.maxHits")));
-		northControls.add(maxHitsSelector);
-		northControls.add(searchFragment);
-		northControls.add(search);
-		northControls.add(prev);
-		northControls.add(next);
+		JPanel queryPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
+		queryPanel.add(new JLabel(Translation.get("gb.repository")));
+		queryPanel.add(repositorySelector);
+		queryPanel.add(new JLabel(Translation.get("gb.branch")));
+		queryPanel.add(branchSelector);
+		queryPanel.add(new JLabel(Translation.get("gb.type")));
+		queryPanel.add(searchTypeSelector);
+		queryPanel.add(new JLabel(Translation.get("gb.maxHits")));
+		queryPanel.add(maxHitsSelector);
+
+		JPanel actionsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
+		actionsPanel.add(search);
+		actionsPanel.add(prev);
+		actionsPanel.add(next);
+
+		JPanel northControls = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
+		northControls.add(queryPanel, BorderLayout.WEST);
+		northControls.add(searchFragment, BorderLayout.CENTER);
+		northControls.add(actionsPanel, BorderLayout.EAST);
+		
 
 		JPanel northPanel = new JPanel(new BorderLayout(0, Utils.MARGIN));
 		northPanel.add(header, BorderLayout.NORTH);

--
Gitblit v1.9.1