From a5b1594130419c1523b3786d0bbb12adfd1e4d7b Mon Sep 17 00:00:00 2001 From: James Moger Date: Thu, 10 May 2012 17:34:17 -0400 Subject: [PATCH] Adjustments to custom fields in Manager --- .../gitblit/client/EditRepositoryDialog.java | 63 ++++++++++++------- src/com/gitblit/client/RepositoriesPanel.java | 6 +- src/com/gitblit/models/ServerSettings.java | 8 ++- src/com/gitblit/models/SettingModel.java | 18 ++++++ 4 files changed, 72 insertions(+), 23 deletions(-) diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java index cc225123..96c0dd1f 100644 --- a/src/com/gitblit/client/EditRepositoryDialog.java +++ b/src/com/gitblit/client/EditRepositoryDialog.java @@ -28,12 +28,12 @@ import java.awt.event.KeyEvent; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Set; -import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; @@ -124,6 +124,8 @@ public class EditRepositoryDialog extends JDialog { private Set repositoryNames; private JPanel customFieldsPanel; + + private List customTextfields; public EditRepositoryDialog(int protocolVersion) { this(protocolVersion, new RepositoryModel()); @@ -470,13 +472,14 @@ public class EditRepositoryDialog extends JDialog { repository.postReceiveScripts = postReceivePalette.getSelections(); // Custom Fields - repository.customFields = new HashMap(); - - for (Component aCustomFieldPanel : customFieldsPanel.getComponents()) { - JTextField textField = (JTextField) ((JPanel)aCustomFieldPanel).getComponent(1); - repository.customFields.put(textField.getName(), textField.getText()); + repository.customFields = new LinkedHashMap(); + if (customTextfields != null) { + for (JTextField field : customTextfields) { + String key = field.getName(); + String value = field.getText(); + repository.customFields.put(key, value); + } } - return true; } @@ -555,24 +558,42 @@ public class EditRepositoryDialog extends JDialog { return teamsPalette.getSelections(); } - public void setCustomFields(RepositoryModel repository, List customFields) { + public void setCustomFields(RepositoryModel repository, Map customFields) { customFieldsPanel.removeAll(); + customTextfields = new ArrayList(); - for (String customFieldDef : customFields) { - String[] customFieldProperty = customFieldDef.split("="); - String fieldName = customFieldProperty[0]; - String fieldLabel = customFieldProperty[1]; + final Insets insets = new Insets(5, 5, 5, 5); + JPanel fields = new JPanel(new GridLayout(0, 1, 0, 5)) { + + private static final long serialVersionUID = 1L; + + @Override + public Insets getInsets() { + return insets; + } + }; + + for (Map.Entry entry : customFields.entrySet()) { + String field = entry.getKey(); + String value = ""; + if (repository.customFields != null && repository.customFields.containsKey(field)) { + value = repository.customFields.get(field); + } + JTextField textField = new JTextField(value); + textField.setName(field); - JTextField textField = new JTextField(repository.customFields.get(fieldName), 50); - textField.setName(fieldName); + textField.setPreferredSize(new Dimension(450, 26)); - customFieldsPanel.add(newFieldPanel(fieldLabel, 250, textField)); - } - - if (customFields.size() < 14) { - customFieldsPanel.add(Box.createVerticalGlue()); - customFieldsPanel.add(Box.createRigidArea(new Dimension(300, 300 - (customFields.size() * 22)))); + fields.add(newFieldPanel(entry.getValue(), 250, textField)); + + customTextfields.add(textField); } + JScrollPane jsp = new JScrollPane(fields); + jsp.getVerticalScrollBar().setBlockIncrement(100); + jsp.getVerticalScrollBar().setUnitIncrement(100); + jsp.setViewportBorder(null); + customFieldsPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); + customFieldsPanel.add(jsp); } /** diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java index 89ec6054..7cff4b68 100644 --- a/src/com/gitblit/client/RepositoriesPanel.java +++ b/src/com/gitblit/client/RepositoriesPanel.java @@ -29,6 +29,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; import javax.swing.JButton; import javax.swing.JLabel; @@ -431,7 +432,10 @@ public abstract class RepositoriesPanel extends JPanel { gitblit.getPreReceiveScriptsInherited(repository), repository.preReceiveScripts); dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(repository), gitblit.getPostReceiveScriptsInherited(repository), repository.postReceiveScripts); - dialog.setCustomFields(repository, gitblit.getSettings().get(Keys.repository.customFields).getStrings()); + if (gitblit.getSettings().hasKey(Keys.groovy.customFields)) { + Map map = gitblit.getSettings().get(Keys.groovy.customFields).getMap(); + dialog.setCustomFields(repository, map); + } dialog.setVisible(true); final RepositoryModel revisedRepository = dialog.getRepository(); final List permittedUsers = dialog.getPermittedUsers(); diff --git a/src/com/gitblit/models/ServerSettings.java b/src/com/gitblit/models/ServerSettings.java index 3658096e..27199b41 100644 --- a/src/com/gitblit/models/ServerSettings.java +++ b/src/com/gitblit/models/ServerSettings.java @@ -54,10 +54,16 @@ public class ServerSettings implements Serializable { } public void add(SettingModel setting) { - settings.put(setting.name, setting); + if (setting != null) { + settings.put(setting.name, setting); + } } public SettingModel get(String key) { return settings.get(key); } + + public boolean hasKey(String key) { + return settings.containsKey(key); + } } diff --git a/src/com/gitblit/models/SettingModel.java b/src/com/gitblit/models/SettingModel.java index 8a5c0c64..a04126e1 100644 --- a/src/com/gitblit/models/SettingModel.java +++ b/src/com/gitblit/models/SettingModel.java @@ -17,7 +17,9 @@ package com.gitblit.models; import java.io.Serializable; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import com.gitblit.utils.StringUtils; @@ -141,4 +143,20 @@ public class SettingModel implements Serializable { strings = StringUtils.getStringsFromValue(currentValue, separator); return strings; } + + /** + * Returns a map of strings from the current value. + * + * @return map of string, string + */ + public Map getMap() { + Map map = new LinkedHashMap(); + for (String string : getStrings()) { + String[] kvp = string.split("=", 2); + String key = kvp[0]; + String value = kvp[1]; + map.put(key, value); + } + return map; + } } -- 2.39.5