From fe326255202dcfac8b0991ca9d28e3cf4bcc4fe6 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 23 Oct 2011 12:28:48 -0400
Subject: [PATCH] Per-repository setting to skip summary metrics

---
 src/com/gitblit/client/EditRepositoryDialog.java |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 53 insertions(+), 5 deletions(-)

diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java
index 93fcced..55f5268 100644
--- a/src/com/gitblit/client/EditRepositoryDialog.java
+++ b/src/com/gitblit/client/EditRepositoryDialog.java
@@ -24,6 +24,7 @@
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -42,7 +43,10 @@
 import javax.swing.JList;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.JRootPane;
+import javax.swing.JTabbedPane;
 import javax.swing.JTextField;
+import javax.swing.KeyStroke;
 import javax.swing.ListCellRenderer;
 
 import com.gitblit.Constants.AccessRestrictionType;
@@ -58,6 +62,8 @@
 public class EditRepositoryDialog extends JDialog {
 
 	private static final long serialVersionUID = 1L;
+
+	private final String repositoryName;
 
 	private final RepositoryModel repository;
 
@@ -76,6 +82,10 @@
 	private JCheckBox showRemoteBranches;
 
 	private JCheckBox showReadme;
+
+	private JCheckBox skipSizeCalculation;
+
+	private JCheckBox skipSummaryMetrics;
 
 	private JCheckBox isFrozen;
 
@@ -99,19 +109,37 @@
 
 	public EditRepositoryDialog(RepositoryModel aRepository) {
 		super();
+		this.repositoryName = aRepository.name;
 		this.repository = new RepositoryModel();
 		this.repositoryNames = new HashSet<String>();
 		this.isCreate = false;
 		initialize(aRepository);
 		setModal(true);
+		setResizable(false);
 		setTitle(Translation.get("gb.edit") + ": " + aRepository.name);
 		setIconImage(new ImageIcon(getClass().getResource("/gitblt-favicon.png")).getImage());
+	}
+
+	@Override
+	protected JRootPane createRootPane() {
+		KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
+		JRootPane rootPane = new JRootPane();
+		rootPane.registerKeyboardAction(new ActionListener() {
+			public void actionPerformed(ActionEvent actionEvent) {
+				setVisible(false);
+			}
+		}, stroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
+		return rootPane;
 	}
 
 	private void initialize(RepositoryModel anRepository) {
 		nameField = new JTextField(anRepository.name == null ? "" : anRepository.name, 35);
 		descriptionField = new JTextField(anRepository.description == null ? ""
 				: anRepository.description, 35);
+
+		JTextField originField = new JTextField(anRepository.origin == null ? ""
+				: anRepository.origin, 40);
+		originField.setEditable(false);
 
 		ownerField = new JComboBox();
 
@@ -122,6 +150,10 @@
 				anRepository.showRemoteBranches);
 		showReadme = new JCheckBox(Translation.get("gb.showReadmeDescription"),
 				anRepository.showReadme);
+		skipSizeCalculation = new JCheckBox(Translation.get("gb.skipSizeCalculationDescription"),
+				anRepository.skipSizeCalculation);
+		skipSummaryMetrics = new JCheckBox(Translation.get("gb.skipSummaryMetricsDescription"),
+				anRepository.skipSummaryMetrics);
 		isFrozen = new JCheckBox(Translation.get("gb.isFrozenDescription"), anRepository.isFrozen);
 
 		accessRestriction = new JComboBox(AccessRestrictionType.values());
@@ -142,6 +174,7 @@
 		JPanel fieldsPanel = new JPanel(new GridLayout(0, 1));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.name"), nameField));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.description"), descriptionField));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.origin"), originField));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.owner"), ownerField));
 
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.enableTickets"), useTickets));
@@ -149,6 +182,10 @@
 		fieldsPanel
 				.add(newFieldPanel(Translation.get("gb.showRemoteBranches"), showRemoteBranches));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.showReadme"), showReadme));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.skipSizeCalculation"),
+				skipSizeCalculation));
+		fieldsPanel
+				.add(newFieldPanel(Translation.get("gb.skipSummaryMetrics"), skipSummaryMetrics));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.isFrozen"), isFrozen));
 
 		usersPalette = new JPalette<String>();
@@ -166,10 +203,10 @@
 		federationPanel.add(newFieldPanel(Translation.get("gb.federationSets"), setsPalette),
 				BorderLayout.CENTER);
 
-		JPanel panel = new JPanel(new BorderLayout(5, 5));
-		panel.add(fieldsPanel, BorderLayout.NORTH);
-		panel.add(accessPanel, BorderLayout.CENTER);
-		panel.add(federationPanel, BorderLayout.SOUTH);
+		JTabbedPane panel = new JTabbedPane(JTabbedPane.TOP);
+		panel.addTab(Translation.get("gb.general"), fieldsPanel);
+		panel.addTab(Translation.get("gb.accessRestriction"), accessPanel);
+		panel.addTab(Translation.get("gb.federation"), federationPanel);
 
 		JButton createButton = new JButton(Translation.get("gb.save"));
 		createButton.addActionListener(new ActionListener() {
@@ -209,7 +246,6 @@
 		getContentPane().setLayout(new BorderLayout(5, 5));
 		getContentPane().add(centerPanel, BorderLayout.CENTER);
 		pack();
-		setLocationRelativeTo(null);
 	}
 
 	private JPanel newFieldPanel(String label, JComponent comp) {
@@ -266,6 +302,16 @@
 						"Can not create repository ''{0}'' because it already exists.", rname));
 				return false;
 			}
+		} else {
+			// check rename collision
+			if (!repositoryName.equalsIgnoreCase(rname)) {
+				if (repositoryNames.contains(rname.toLowerCase())) {
+					error(MessageFormat.format(
+							"Failed to rename ''{0}'' because ''{1}'' already exists.",
+							repositoryName, rname));
+					return false;
+				}
+			}
 		}
 
 		if (accessRestriction.getSelectedItem() == null) {
@@ -286,6 +332,8 @@
 		repository.useDocs = useDocs.isSelected();
 		repository.showRemoteBranches = showRemoteBranches.isSelected();
 		repository.showReadme = showReadme.isSelected();
+		repository.skipSizeCalculation = skipSizeCalculation.isSelected();
+		repository.skipSummaryMetrics = skipSummaryMetrics.isSelected();
 		repository.isFrozen = isFrozen.isSelected();
 
 		repository.accessRestriction = (AccessRestrictionType) accessRestriction.getSelectedItem();

--
Gitblit v1.9.1