John Crygier
2012-05-07 022ebb4010ecf91ef5049f0386ef398f1d7fb32b
src/com/gitblit/client/EditRepositoryDialog.java
@@ -28,10 +28,13 @@
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
@@ -44,10 +47,12 @@
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.ListCellRenderer;
import javax.swing.ScrollPaneConstants;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.FederationStrategy;
@@ -98,13 +103,15 @@
   private JComboBox ownerField;
   private JComboBox defaultHeadField;
   private JComboBox headRefField;
   private JPalette<String> usersPalette;
   private JPalette<String> setsPalette;
   private JPalette<String> teamsPalette;
   private JPalette<String> indexedBranchesPalette;
   private JPalette<String> preReceivePalette;
@@ -115,6 +122,8 @@
   private JLabel postReceiveInherited;
   private Set<String> repositoryNames;
   private JPanel customFieldsPanel;
   public EditRepositoryDialog(int protocolVersion) {
      this(protocolVersion, new RepositoryModel());
@@ -158,13 +167,13 @@
            anRepository.origin == null ? "" : anRepository.origin, 40);
      originField.setEditable(false);
      if (ArrayUtils.isEmpty(anRepository.availableHeads)) {
         defaultHeadField = new JComboBox();
         defaultHeadField.setEnabled(false);
      if (ArrayUtils.isEmpty(anRepository.availableRefs)) {
         headRefField = new JComboBox();
         headRefField.setEnabled(false);
      } else {
         defaultHeadField = new JComboBox(
               anRepository.availableHeads.toArray());
         defaultHeadField.setSelectedItem(anRepository.defaultHead);
         headRefField = new JComboBox(
               anRepository.availableRefs.toArray());
         headRefField.setSelectedItem(anRepository.HEAD);
      }
      ownerField = new JComboBox();
@@ -213,8 +222,7 @@
            descriptionField));
      fieldsPanel
            .add(newFieldPanel(Translation.get("gb.origin"), originField));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.defaultHead"),
            defaultHeadField));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.headRef"), headRefField));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.owner"), ownerField));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.enableTickets"),
@@ -259,6 +267,12 @@
            .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));
@@ -270,6 +284,12 @@
      JPanel postReceivePanel = new JPanel(new BorderLayout(5, 5));
      postReceivePanel.add(postReceivePalette, BorderLayout.CENTER);
      postReceivePanel.add(postReceiveInherited, BorderLayout.WEST);
      customFieldsPanel = new JPanel();
      customFieldsPanel.setLayout(new BoxLayout(customFieldsPanel, BoxLayout.Y_AXIS));
      JScrollPane customFieldsScrollPane = new JScrollPane(customFieldsPanel);
      customFieldsScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
      customFieldsScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
      JTabbedPane panel = new JTabbedPane(JTabbedPane.TOP);
      panel.addTab(Translation.get("gb.general"), fieldsPanel);
@@ -278,8 +298,14 @@
         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);
      panel.addTab(Translation.get("gb.customFields"), customFieldsScrollPane);
      JButton createButton = new JButton(Translation.get("gb.save"));
      createButton.addActionListener(new ActionListener() {
@@ -321,11 +347,15 @@
      pack();
      nameField.requestFocus();
   }
   private JPanel newFieldPanel(String label, JComponent comp) {
      return newFieldPanel(label, 150, comp);
   }
   private JPanel newFieldPanel(String label, int labelSize, JComponent comp) {
      JLabel fieldLabel = new JLabel(label);
      fieldLabel.setFont(fieldLabel.getFont().deriveFont(Font.BOLD));
      fieldLabel.setPreferredSize(new Dimension(150, 20));
      fieldLabel.setPreferredSize(new Dimension(labelSize, 20));
      JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
      panel.add(fieldLabel);
      panel.add(comp);
@@ -404,8 +434,8 @@
      repository.description = descriptionField.getText();
      repository.owner = ownerField.getSelectedItem() == null ? null
            : ownerField.getSelectedItem().toString();
      repository.defaultHead = defaultHeadField.getSelectedItem() == null ? null
            : defaultHeadField.getSelectedItem().toString();
      repository.HEAD = headRefField.getSelectedItem() == null ? null
            : headRefField.getSelectedItem().toString();
      repository.useTickets = useTickets.isSelected();
      repository.useDocs = useDocs.isSelected();
      repository.showRemoteBranches = showRemoteBranches.isSelected();
@@ -434,9 +464,19 @@
      if (repository.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) {
         repository.federationSets = setsPalette.getSelections();
      }
      repository.indexedBranches = indexedBranchesPalette.getSelections();
      repository.preReceiveScripts = preReceivePalette.getSelections();
      repository.postReceiveScripts = postReceivePalette.getSelections();
      // Custom Fields
      repository.customFields = new HashMap<String, String>();
      for (Component aCustomFieldPanel : customFieldsPanel.getComponents()) {
         JTextField textField = (JTextField) ((JPanel)aCustomFieldPanel).getComponent(1);
         repository.customFields.put(textField.getName(), textField.getText());
      }
      return true;
   }
@@ -470,6 +510,10 @@
   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,
@@ -510,6 +554,26 @@
   public List<String> getPermittedTeams() {
      return teamsPalette.getSelections();
   }
   public void setCustomFields(RepositoryModel repository, List<String> customFields) {
      customFieldsPanel.removeAll();
      for (String customFieldDef : customFields) {
         String[] customFieldProperty = customFieldDef.split("=");
         String fieldName = customFieldProperty[0];
         String fieldLabel = customFieldProperty[1];
         JTextField textField = new JTextField(repository.customFields.get(fieldName), 50);
         textField.setName(fieldName);
         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))));
      }
   }
   /**
    * ListCellRenderer to display descriptive text about the access