From a9eb6b1105cd47f00ae45dacda9af8e829ade191 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 11 Apr 2012 09:04:42 -0400
Subject: [PATCH] Reset build identifiers for the next release

---
 src/com/gitblit/client/EditRepositoryDialog.java |  222 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 173 insertions(+), 49 deletions(-)

diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java
index 0b6ef59..156de15 100644
--- a/src/com/gitblit/client/EditRepositoryDialog.java
+++ b/src/com/gitblit/client/EditRepositoryDialog.java
@@ -52,7 +52,7 @@
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.Constants.FederationStrategy;
 import com.gitblit.models.RepositoryModel;
-import com.gitblit.models.TeamModel;
+import com.gitblit.utils.ArrayUtils;
 import com.gitblit.utils.StringUtils;
 
 /**
@@ -90,17 +90,31 @@
 
 	private JCheckBox isFrozen;
 
+	private JTextField mailingListsField;
+
 	private JComboBox accessRestriction;
 
 	private JComboBox federationStrategy;
 
 	private JComboBox ownerField;
 
+	private JComboBox headRefField;
+
 	private JPalette<String> usersPalette;
-	
+
 	private JPalette<String> setsPalette;
-	
+
 	private JPalette<String> teamsPalette;
+	
+	private JPalette<String> indexedBranchesPalette;
+
+	private JPalette<String> preReceivePalette;
+
+	private JLabel preReceiveInherited;
+
+	private JPalette<String> postReceivePalette;
+
+	private JLabel postReceiveInherited;
 
 	private Set<String> repositoryNames;
 
@@ -120,7 +134,8 @@
 		setModal(true);
 		setResizable(false);
 		setTitle(Translation.get("gb.edit") + ": " + aRepository.name);
-		setIconImage(new ImageIcon(getClass().getResource("/gitblt-favicon.png")).getImage());
+		setIconImage(new ImageIcon(getClass()
+				.getResource("/gitblt-favicon.png")).getImage());
 	}
 
 	@Override
@@ -136,28 +151,48 @@
 	}
 
 	private void initialize(int protocolVersion, RepositoryModel anRepository) {
-		nameField = new JTextField(anRepository.name == null ? "" : anRepository.name, 35);
+		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);
+		JTextField originField = new JTextField(
+				anRepository.origin == null ? "" : anRepository.origin, 40);
 		originField.setEditable(false);
+
+		if (ArrayUtils.isEmpty(anRepository.availableRefs)) {
+			headRefField = new JComboBox();
+			headRefField.setEnabled(false);			
+		} else {
+			headRefField = new JComboBox(
+					anRepository.availableRefs.toArray());
+			headRefField.setSelectedItem(anRepository.HEAD);
+		}
 
 		ownerField = new JComboBox();
 
 		useTickets = new JCheckBox(Translation.get("gb.useTicketsDescription"),
 				anRepository.useTickets);
-		useDocs = new JCheckBox(Translation.get("gb.useDocsDescription"), anRepository.useDocs);
-		showRemoteBranches = new JCheckBox(Translation.get("gb.showRemoteBranchesDescription"),
+		useDocs = new JCheckBox(Translation.get("gb.useDocsDescription"),
+				anRepository.useDocs);
+		showRemoteBranches = new JCheckBox(
+				Translation.get("gb.showRemoteBranchesDescription"),
 				anRepository.showRemoteBranches);
 		showReadme = new JCheckBox(Translation.get("gb.showReadmeDescription"),
 				anRepository.showReadme);
-		skipSizeCalculation = new JCheckBox(Translation.get("gb.skipSizeCalculationDescription"),
+		skipSizeCalculation = new JCheckBox(
+				Translation.get("gb.skipSizeCalculationDescription"),
 				anRepository.skipSizeCalculation);
-		skipSummaryMetrics = new JCheckBox(Translation.get("gb.skipSummaryMetricsDescription"),
+		skipSummaryMetrics = new JCheckBox(
+				Translation.get("gb.skipSummaryMetricsDescription"),
 				anRepository.skipSummaryMetrics);
-		isFrozen = new JCheckBox(Translation.get("gb.isFrozenDescription"), anRepository.isFrozen);
+		isFrozen = new JCheckBox(Translation.get("gb.isFrozenDescription"),
+				anRepository.isFrozen);
+
+		mailingListsField = new JTextField(
+				ArrayUtils.isEmpty(anRepository.mailingLists) ? ""
+						: StringUtils.flattenStrings(anRepository.mailingLists,
+								" "), 50);
 
 		accessRestriction = new JComboBox(AccessRestrictionType.values());
 		accessRestriction.setRenderer(new AccessRestrictionRenderer());
@@ -176,40 +211,72 @@
 
 		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.description"),
+				descriptionField));
+		fieldsPanel
+				.add(newFieldPanel(Translation.get("gb.origin"), originField));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.headRef"), headRefField));
 		fieldsPanel.add(newFieldPanel(Translation.get("gb.owner"), ownerField));
 
-		fieldsPanel.add(newFieldPanel(Translation.get("gb.enableTickets"), useTickets));
-		fieldsPanel.add(newFieldPanel(Translation.get("gb.enableDocs"), useDocs));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.enableTickets"),
+				useTickets));
 		fieldsPanel
-				.add(newFieldPanel(Translation.get("gb.showRemoteBranches"), showRemoteBranches));
-		fieldsPanel.add(newFieldPanel(Translation.get("gb.showReadme"), showReadme));
-		fieldsPanel.add(newFieldPanel(Translation.get("gb.skipSizeCalculation"),
-				skipSizeCalculation));
+				.add(newFieldPanel(Translation.get("gb.enableDocs"), useDocs));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.showRemoteBranches"),
+				showRemoteBranches));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.showReadme"),
+				showReadme));
 		fieldsPanel
-				.add(newFieldPanel(Translation.get("gb.skipSummaryMetrics"), skipSummaryMetrics));
-		fieldsPanel.add(newFieldPanel(Translation.get("gb.isFrozen"), isFrozen));
+				.add(newFieldPanel(Translation.get("gb.skipSizeCalculation"),
+						skipSizeCalculation));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.skipSummaryMetrics"),
+				skipSummaryMetrics));
+		fieldsPanel
+				.add(newFieldPanel(Translation.get("gb.isFrozen"), isFrozen));
+		fieldsPanel.add(newFieldPanel(Translation.get("gb.mailingLists"),
+				mailingListsField));
 
 		usersPalette = new JPalette<String>();
 		JPanel accessPanel = new JPanel(new BorderLayout(5, 5));
-		accessPanel.add(newFieldPanel(Translation.get("gb.accessRestriction"), accessRestriction),
-				BorderLayout.NORTH);
-		accessPanel.add(newFieldPanel(Translation.get("gb.permittedUsers"), usersPalette),
-				BorderLayout.CENTER);
+		accessPanel.add(
+				newFieldPanel(Translation.get("gb.accessRestriction"),
+						accessRestriction), BorderLayout.NORTH);
+		accessPanel.add(
+				newFieldPanel(Translation.get("gb.permittedUsers"),
+						usersPalette), BorderLayout.CENTER);
 
 		teamsPalette = new JPalette<String>();
 		JPanel teamsPanel = new JPanel(new BorderLayout(5, 5));
-		teamsPanel.add(newFieldPanel(Translation.get("gb.permittedTeams"), teamsPalette),
-				BorderLayout.CENTER);
+		teamsPanel.add(
+				newFieldPanel(Translation.get("gb.permittedTeams"),
+						teamsPalette), BorderLayout.CENTER);
 
 		setsPalette = new JPalette<String>();
 		JPanel federationPanel = new JPanel(new BorderLayout(5, 5));
 		federationPanel.add(
-				newFieldPanel(Translation.get("gb.federationStrategy"), federationStrategy),
-				BorderLayout.NORTH);
-		federationPanel.add(newFieldPanel(Translation.get("gb.federationSets"), setsPalette),
-				BorderLayout.CENTER);
+				newFieldPanel(Translation.get("gb.federationStrategy"),
+						federationStrategy), BorderLayout.NORTH);
+		federationPanel
+				.add(newFieldPanel(Translation.get("gb.federationSets"),
+						setsPalette), BorderLayout.CENTER);
+
+		indexedBranchesPalette = new JPalette<String>();
+		JPanel indexedBranchesPanel = new JPanel(new BorderLayout(5, 5));
+		indexedBranchesPanel
+				.add(newFieldPanel(Translation.get("gb.indexedBranches"),
+						indexedBranchesPalette), BorderLayout.CENTER);
+
+		preReceivePalette = new JPalette<String>(true);
+		preReceiveInherited = new JLabel();
+		JPanel preReceivePanel = new JPanel(new BorderLayout(5, 5));
+		preReceivePanel.add(preReceivePalette, BorderLayout.CENTER);
+		preReceivePanel.add(preReceiveInherited, BorderLayout.WEST);
+
+		postReceivePalette = new JPalette<String>(true);
+		postReceiveInherited = new JLabel();
+		JPanel postReceivePanel = new JPanel(new BorderLayout(5, 5));
+		postReceivePanel.add(postReceivePalette, BorderLayout.CENTER);
+		postReceivePanel.add(postReceiveInherited, BorderLayout.WEST);
 
 		JTabbedPane panel = new JTabbedPane(JTabbedPane.TOP);
 		panel.addTab(Translation.get("gb.general"), fieldsPanel);
@@ -218,6 +285,11 @@
 			panel.addTab(Translation.get("gb.teams"), teamsPanel);
 		}
 		panel.addTab(Translation.get("gb.federation"), federationPanel);
+		if (protocolVersion >= 3) {
+			panel.addTab(Translation.get("gb.indexedBranches"), indexedBranchesPanel);
+		}
+		panel.addTab(Translation.get("gb.preReceiveScripts"), preReceivePanel);
+		panel.addTab(Translation.get("gb.postReceiveScripts"), postReceivePanel);
 
 		JButton createButton = new JButton(Translation.get("gb.save"));
 		createButton.addActionListener(new ActionListener() {
@@ -299,7 +371,8 @@
 		// confirm valid characters in repository name
 		Character c = StringUtils.findInvalidCharacter(rname);
 		if (c != null) {
-			error(MessageFormat.format("Illegal character ''{0}'' in repository name!", c));
+			error(MessageFormat.format(
+					"Illegal character ''{0}'' in repository name!", c));
 			return false;
 		}
 
@@ -310,17 +383,18 @@
 			// is case-insensitive, regardless of the Gitblit server's
 			// filesystem
 			if (repositoryNames.contains(rname.toLowerCase())) {
-				error(MessageFormat.format(
-						"Can not create repository ''{0}'' because it already exists.", rname));
+				error(MessageFormat
+						.format("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));
+					error(MessageFormat
+							.format("Failed to rename ''{0}'' because ''{1}'' already exists.",
+									repositoryName, rname));
 					return false;
 				}
 			}
@@ -338,8 +412,10 @@
 
 		repository.name = rname;
 		repository.description = descriptionField.getText();
-		repository.owner = ownerField.getSelectedItem() == null ? null : ownerField
-				.getSelectedItem().toString();
+		repository.owner = ownerField.getSelectedItem() == null ? null
+				: ownerField.getSelectedItem().toString();
+		repository.HEAD = headRefField.getSelectedItem() == null ? null
+				: headRefField.getSelectedItem().toString();
 		repository.useTickets = useTickets.isSelected();
 		repository.useDocs = useDocs.isSelected();
 		repository.showRemoteBranches = showRemoteBranches.isSelected();
@@ -348,12 +424,30 @@
 		repository.skipSummaryMetrics = skipSummaryMetrics.isSelected();
 		repository.isFrozen = isFrozen.isSelected();
 
-		repository.accessRestriction = (AccessRestrictionType) accessRestriction.getSelectedItem();
-		repository.federationStrategy = (FederationStrategy) federationStrategy.getSelectedItem();
+		String ml = mailingListsField.getText();
+		if (!StringUtils.isEmpty(ml)) {
+			Set<String> list = new HashSet<String>();
+			for (String address : ml.split("(,|\\s)")) {
+				if (StringUtils.isEmpty(address)) {
+					continue;
+				}
+				list.add(address.toLowerCase());
+			}
+			repository.mailingLists = new ArrayList<String>(list);
+		}
+
+		repository.accessRestriction = (AccessRestrictionType) accessRestriction
+				.getSelectedItem();
+		repository.federationStrategy = (FederationStrategy) federationStrategy
+				.getSelectedItem();
 
 		if (repository.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) {
 			repository.federationSets = setsPalette.getSelections();
 		}
+		
+		repository.indexedBranches = indexedBranchesPalette.getSelections();
+		repository.preReceiveScripts = preReceivePalette.getSelections();
+		repository.postReceiveScripts = postReceivePalette.getSelections();
 		return true;
 	}
 
@@ -369,7 +463,7 @@
 		}
 		usersPalette.setObjects(all, selected);
 	}
-	
+
 	public void setTeams(List<String> all, List<String> selected) {
 		teamsPalette.setObjects(all, selected);
 	}
@@ -387,6 +481,34 @@
 
 	public void setFederationSets(List<String> all, List<String> selected) {
 		setsPalette.setObjects(all, selected);
+	}
+	
+	public void setIndexedBranches(List<String> all, List<String> selected) {
+		indexedBranchesPalette.setObjects(all, selected);
+	}
+
+	public void setPreReceiveScripts(List<String> all, List<String> inherited,
+			List<String> selected) {
+		preReceivePalette.setObjects(all, selected);
+		showInherited(inherited, preReceiveInherited);
+	}
+
+	public void setPostReceiveScripts(List<String> all, List<String> inherited,
+			List<String> selected) {
+		postReceivePalette.setObjects(all, selected);
+		showInherited(inherited, postReceiveInherited);
+	}
+
+	private void showInherited(List<String> list, JLabel label) {
+		StringBuilder sb = new StringBuilder();
+		if (list != null && list.size() > 0) {
+			sb.append("<html><body><b>INHERITED</b><ul style=\"margin-left:5px;list-style-type: none;\">");
+			for (String script : list) {
+				sb.append("<li>").append(script).append("</li>");
+			}
+			sb.append("</ul></body></html>");
+		}
+		label.setText(sb.toString());
 	}
 
 	public RepositoryModel getRepository() {
@@ -409,13 +531,14 @@
 	 * restriction.
 	 * 
 	 */
-	private class AccessRestrictionRenderer extends JLabel implements ListCellRenderer {
+	private class AccessRestrictionRenderer extends JLabel implements
+			ListCellRenderer {
 
 		private static final long serialVersionUID = 1L;
 
 		@Override
-		public Component getListCellRendererComponent(JList list, Object value, int index,
-				boolean isSelected, boolean cellHasFocus) {
+		public Component getListCellRendererComponent(JList list, Object value,
+				int index, boolean isSelected, boolean cellHasFocus) {
 			if (value instanceof AccessRestrictionType) {
 				AccessRestrictionType restriction = (AccessRestrictionType) value;
 				switch (restriction) {
@@ -443,13 +566,14 @@
 	 * ListCellRenderer to display descriptive text about the federation
 	 * strategy.
 	 */
-	private class FederationStrategyRenderer extends JLabel implements ListCellRenderer {
+	private class FederationStrategyRenderer extends JLabel implements
+			ListCellRenderer {
 
 		private static final long serialVersionUID = 1L;
 
 		@Override
-		public Component getListCellRendererComponent(JList list, Object value, int index,
-				boolean isSelected, boolean cellHasFocus) {
+		public Component getListCellRendererComponent(JList list, Object value,
+				int index, boolean isSelected, boolean cellHasFocus) {
 			if (value instanceof FederationStrategy) {
 				FederationStrategy strategy = (FederationStrategy) value;
 				switch (strategy) {

--
Gitblit v1.9.1