From cb285cbfddfc0b633d6b8cdb4dc0d2bd2b8b51ef Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 05 Jan 2012 17:34:05 -0500
Subject: [PATCH] Fixed bug in receive hook for repositories in subfolders

---
 src/com/gitblit/client/Utils.java |   61 ++++++++++++++++++++++++++++--
 1 files changed, 56 insertions(+), 5 deletions(-)

diff --git a/src/com/gitblit/client/Utils.java b/src/com/gitblit/client/Utils.java
index c837579..538e6be 100644
--- a/src/com/gitblit/client/Utils.java
+++ b/src/com/gitblit/client/Utils.java
@@ -17,11 +17,20 @@
 
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Desktop;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Insets;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URI;
 import java.text.MessageFormat;
 import java.util.Date;
 
 import javax.swing.JOptionPane;
+import javax.swing.JScrollPane;
 import javax.swing.JTable;
+import javax.swing.JTextArea;
 import javax.swing.table.DefaultTableColumnModel;
 import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
@@ -31,20 +40,36 @@
 
 public class Utils {
 
-	public static JTable newTable(TableModel model) {
+	public final static int MARGIN = 5;
+
+	public final static Insets INSETS = new Insets(MARGIN, MARGIN, MARGIN, MARGIN);
+
+	public final static String TIMESTAMP_FORMAT = "yyyy-MM-dd HH:mm";
+
+	public final static String DATE_FORMAT = "yyyy-MM-dd";
+
+	public static JTable newTable(TableModel model, String datePattern) {
 		JTable table = new JTable(model);
 		table.setCellSelectionEnabled(false);
 		table.setRowSelectionAllowed(true);
 		table.getTableHeader().setReorderingAllowed(false);
 		table.setGridColor(new Color(0xd9d9d9));
 		table.setBackground(Color.white);
-		table.setDefaultRenderer(Date.class, new DateCellRenderer(null, Color.orange.darker()));
+		table.setDefaultRenderer(Date.class,
+				new DateCellRenderer(datePattern, Color.orange.darker()));
 		return table;
+	}
+
+	public static void explainNotAllowed(Component c, RpcRequest request) {
+		String msg = MessageFormat.format("The Gitblit server does not allow the request \"{0}\".",
+				request.name());
+		JOptionPane.showMessageDialog(c, msg, "Not Allowed", JOptionPane.ERROR_MESSAGE);
 	}
 
 	public static void explainForbidden(Component c, RpcRequest request) {
 		String msg = MessageFormat.format(
-				"The request \"{0}\" has been forbidden by the Gitblit server.", request.name());
+				"The request \"{0}\" has been forbidden for the account by the Gitblit server.",
+				request.name());
 		JOptionPane.showMessageDialog(c, msg, "Forbidden", JOptionPane.ERROR_MESSAGE);
 	}
 
@@ -54,9 +79,26 @@
 		JOptionPane.showMessageDialog(c, msg, "Unauthorized", JOptionPane.ERROR_MESSAGE);
 	}
 
+	public static void explainUnknown(Component c, RpcRequest request) {
+		String msg = MessageFormat.format(
+				"The request \"{0}\" is not recognized by the Gitblit server.", request.name());
+		JOptionPane.showMessageDialog(c, msg, "Unknown Request", JOptionPane.ERROR_MESSAGE);
+	}
+
 	public static void showException(Component c, Throwable t) {
-		// TODO show the unexpected exception
-		t.printStackTrace();
+		StringWriter writer = new StringWriter();
+		t.printStackTrace(new PrintWriter(writer));
+		String stacktrace = writer.toString();
+		try {
+			writer.close();
+		} catch (Throwable x) {
+		}
+		JTextArea textArea = new JTextArea(stacktrace);
+		textArea.setFont(new Font("monospaced", Font.PLAIN, 11));
+		JScrollPane jsp = new JScrollPane(textArea);
+		jsp.setPreferredSize(new Dimension(800, 400));
+		JOptionPane.showMessageDialog(c, jsp, Translation.get("gb.error"),
+				JOptionPane.ERROR_MESSAGE);
 	}
 
 	public static void packColumns(JTable table, int margin) {
@@ -97,4 +139,13 @@
 		// Set the width
 		col.setPreferredWidth(width);
 	}
+
+	public static void browse(String url) {
+		try {
+			Desktop.getDesktop().browse(new URI(url));
+		} catch (Exception x) {
+			showException(null, x);
+		}
+	}
+
 }

--
Gitblit v1.9.1