James Moger
2015-11-19 e41e8f8c3bc9f5edab1d271464364f95620ece8c
src/main/java/com/gitblit/client/EditRepositoryDialog.java
@@ -58,6 +58,8 @@
import javax.swing.ListCellRenderer;
import javax.swing.ScrollPaneConstants;
import org.eclipse.jgit.lib.Repository;
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Constants.AuthorizationControl;
import com.gitblit.Constants.FederationStrategy;
@@ -69,7 +71,7 @@
/**
 * Dialog to create/edit a repository.
 *
 *
 * @author James Moger
 */
public class EditRepositoryDialog extends JDialog {
@@ -88,15 +90,17 @@
   private JTextField descriptionField;
   private JCheckBox useTickets;
   private JCheckBox acceptNewPatchsets;
   private JCheckBox useDocs;
   private JCheckBox acceptNewTickets;
   private JCheckBox requireApproval;
   private JComboBox mergeToField;
   private JCheckBox useIncrementalPushTags;
   private JCheckBox showRemoteBranches;
   private JCheckBox showReadme;
   private JCheckBox showRemoteBranches;
   private JCheckBox skipSizeCalculation;
@@ -107,11 +111,11 @@
   private JTextField mailingListsField;
   private JComboBox accessRestriction;
   private JRadioButton allowAuthenticated;
   private JRadioButton allowNamed;
   private JCheckBox allowForks;
   private JCheckBox verifyCommitter;
@@ -121,19 +125,19 @@
   private JPalette<String> ownersPalette;
   private JComboBox headRefField;
   private JComboBox gcPeriod;
   private JTextField gcThreshold;
   private JComboBox maxActivityCommits;
   private RegistrantPermissionsPanel usersPalette;
   private JPalette<String> setsPalette;
   private RegistrantPermissionsPanel teamsPalette;
   private JPalette<String> indexedBranchesPalette;
   private JPalette<String> preReceivePalette;
@@ -145,9 +149,9 @@
   private JLabel postReceiveInherited;
   private Set<String> repositoryNames;
   private JPanel customFieldsPanel;
   private List<JTextField> customTextfields;
   public EditRepositoryDialog(int protocolVersion) {
@@ -175,6 +179,7 @@
      KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
      JRootPane rootPane = new JRootPane();
      rootPane.registerKeyboardAction(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent actionEvent) {
            setVisible(false);
         }
@@ -194,33 +199,43 @@
      if (ArrayUtils.isEmpty(anRepository.availableRefs)) {
         headRefField = new JComboBox();
         headRefField.setEnabled(false);
         headRefField.setEnabled(false);
      } else {
         headRefField = new JComboBox(
               anRepository.availableRefs.toArray());
         headRefField.setSelectedItem(anRepository.HEAD);
      }
      Integer []  gcPeriods =  { 1, 2, 3, 4, 5, 7, 10, 14 };
      gcPeriod = new JComboBox(gcPeriods);
      gcPeriod.setSelectedItem(anRepository.gcPeriod);
      gcThreshold = new JTextField(8);
      gcThreshold.setText(anRepository.gcThreshold);
      ownersPalette = new JPalette<String>(true);
      useTickets = new JCheckBox(Translation.get("gb.useTicketsDescription"),
            anRepository.useTickets);
      useDocs = new JCheckBox(Translation.get("gb.useDocsDescription"),
            anRepository.useDocs);
      acceptNewTickets = new JCheckBox(Translation.get("gb.acceptsNewTicketsDescription"),
            anRepository.acceptNewTickets);
      acceptNewPatchsets = new JCheckBox(Translation.get("gb.acceptsNewPatchsetsDescription"),
            anRepository.acceptNewPatchsets);
      requireApproval = new JCheckBox(Translation.get("gb.requireApprovalDescription"),
            anRepository.requireApproval);
      if (ArrayUtils.isEmpty(anRepository.availableRefs)) {
         mergeToField = new JComboBox();
         mergeToField.setEnabled(false);
      } else {
         mergeToField = new JComboBox(
               anRepository.availableRefs.toArray());
         mergeToField.setSelectedItem(anRepository.mergeTo);
      }
      useIncrementalPushTags = new JCheckBox(Translation.get("gb.useIncrementalPushTagsDescription"),
            anRepository.useIncrementalPushTags);
      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"),
            anRepository.skipSizeCalculation);
@@ -250,21 +265,21 @@
            }
         }
      });
      boolean authenticated = anRepository.authorizationControl != null
      boolean authenticated = anRepository.authorizationControl != null
            && AuthorizationControl.AUTHENTICATED.equals(anRepository.authorizationControl);
      allowAuthenticated = new JRadioButton(Translation.get("gb.allowAuthenticatedDescription"));
      allowAuthenticated.setSelected(authenticated);
      allowAuthenticated.addItemListener(new ItemListener() {
         @Override
         public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
            if (e.getStateChange() == ItemEvent.SELECTED) {
               usersPalette.setEnabled(false);
               teamsPalette.setEnabled(false);
            }
         }
      });
      allowNamed = new JRadioButton(Translation.get("gb.allowNamedDescription"));
      allowNamed.setSelected(!authenticated);
      allowNamed.addItemListener(new ItemListener() {
@@ -276,15 +291,15 @@
            }
         }
      });
      ButtonGroup group = new ButtonGroup();
      group.add(allowAuthenticated);
      group.add(allowNamed);
      JPanel authorizationPanel = new JPanel(new GridLayout(0, 1));
      authorizationPanel.add(allowAuthenticated);
      authorizationPanel.add(allowNamed);
      allowForks = new JCheckBox(Translation.get("gb.allowForksDescription"), anRepository.allowForks);
      verifyCommitter = new JCheckBox(Translation.get("gb.verifyCommitterDescription"), anRepository.verifyCommitter);
@@ -309,16 +324,17 @@
      fieldsPanel.add(newFieldPanel(Translation.get("gb.gcPeriod"), gcPeriod));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.gcThreshold"), gcThreshold));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.enableTickets"),
            useTickets));
      fieldsPanel
            .add(newFieldPanel(Translation.get("gb.enableDocs"), useDocs));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.acceptsNewTickets"),
            acceptNewTickets));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.acceptsNewPatchsets"),
            acceptNewPatchsets));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.requireApproval"),
            requireApproval));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.mergeTo"), mergeToField));
      fieldsPanel
      .add(newFieldPanel(Translation.get("gb.enableIncrementalPushTags"), useIncrementalPushTags));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.showRemoteBranches"),
            showRemoteBranches));
      fieldsPanel.add(newFieldPanel(Translation.get("gb.showReadme"),
            showReadme));
      fieldsPanel
            .add(newFieldPanel(Translation.get("gb.skipSizeCalculation"),
                  skipSizeCalculation));
@@ -387,7 +403,7 @@
      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);
@@ -406,14 +422,15 @@
      }
      panel.addTab(Translation.get("gb.preReceiveScripts"), preReceivePanel);
      panel.addTab(Translation.get("gb.postReceiveScripts"), postReceivePanel);
      panel.addTab(Translation.get("gb.customFields"), customFieldsScrollPane);
      setupAccessPermissions(anRepository.accessRestriction);
      JButton createButton = new JButton(Translation.get("gb.save"));
      createButton.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent event) {
            if (validateFields()) {
               canceled = false;
@@ -424,6 +441,7 @@
      JButton cancelButton = new JButton(Translation.get("gb.cancel"));
      cancelButton.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent event) {
            canceled = true;
            setVisible(false);
@@ -452,7 +470,7 @@
      pack();
      nameField.requestFocus();
   }
   private JPanel newFieldPanel(String label, JComponent comp) {
      return newFieldPanel(label, 150, comp);
   }
@@ -466,12 +484,12 @@
      panel.add(comp);
      return panel;
   }
   private void setupAccessPermissions(AccessRestrictionType art) {
      if (AccessRestrictionType.NONE.equals(art)) {
         usersPalette.setEnabled(false);
         teamsPalette.setEnabled(false);
         allowAuthenticated.setEnabled(false);
         allowNamed.setEnabled(false);
         verifyCommitter.setEnabled(false);
@@ -479,7 +497,7 @@
         allowAuthenticated.setEnabled(true);
         allowNamed.setEnabled(true);
         verifyCommitter.setEnabled(true);
         if (allowNamed.isSelected()) {
            usersPalette.setEnabled(true);
            teamsPalette.setEnabled(true);
@@ -567,15 +585,17 @@
            : headRefField.getSelectedItem().toString();
      repository.gcPeriod = (Integer) gcPeriod.getSelectedItem();
      repository.gcThreshold = gcThreshold.getText();
      repository.useTickets = useTickets.isSelected();
      repository.useDocs = useDocs.isSelected();
      repository.acceptNewPatchsets = acceptNewPatchsets.isSelected();
      repository.acceptNewTickets = acceptNewTickets.isSelected();
      repository.requireApproval = requireApproval.isSelected();
      repository.mergeTo = mergeToField.getSelectedItem() == null ? null
            : Repository.shortenRefName(mergeToField.getSelectedItem().toString());
      repository.useIncrementalPushTags = useIncrementalPushTags.isSelected();
      repository.showRemoteBranches = showRemoteBranches.isSelected();
      repository.showReadme = showReadme.isSelected();
      repository.skipSizeCalculation = skipSizeCalculation.isSelected();
      repository.skipSummaryMetrics = skipSummaryMetrics.isSelected();
      repository.maxActivityCommits = (Integer) maxActivityCommits.getSelectedItem();
      repository.isFrozen = isFrozen.isSelected();
      repository.allowForks = allowForks.isSelected();
      repository.verifyCommitter = verifyCommitter.isSelected();
@@ -594,7 +614,7 @@
      repository.accessRestriction = (AccessRestrictionType) accessRestriction
            .getSelectedItem();
      repository.authorizationControl = allowAuthenticated.isSelected() ?
      repository.authorizationControl = allowAuthenticated.isSelected() ?
            AuthorizationControl.AUTHENTICATED : AuthorizationControl.NAMED;
      repository.federationStrategy = (FederationStrategy) federationStrategy
            .getSelectedItem();
@@ -602,11 +622,11 @@
      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 LinkedHashMap<String, String>();
      if (customTextfields != null) {
@@ -623,7 +643,7 @@
      JOptionPane.showMessageDialog(EditRepositoryDialog.this, message,
            Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
   }
   public void setAccessRestriction(AccessRestrictionType restriction) {
      this.accessRestriction.setSelectedItem(restriction);
      setupAccessPermissions(restriction);
@@ -658,7 +678,7 @@
   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);
   }
@@ -701,11 +721,11 @@
   public List<RegistrantAccessPermission> getTeamAccessPermissions() {
      return teamsPalette.getPermissions();
   }
   public void setCustomFields(RepositoryModel repository, Map<String, String> customFields) {
      customFieldsPanel.removeAll();
      customTextfields = new ArrayList<JTextField>();
      final Insets insets = new Insets(5, 5, 5, 5);
      JPanel fields = new JPanel(new GridLayout(0, 1, 0, 5)) {
@@ -715,8 +735,8 @@
         public Insets getInsets() {
            return insets;
         }
      };
      };
      for (Map.Entry<String, String> entry : customFields.entrySet()) {
         String field = entry.getKey();
         String value = "";
@@ -725,14 +745,14 @@
         }
         JTextField textField = new JTextField(value);
         textField.setName(field);
         textField.setPreferredSize(new Dimension(450, 26));
         fields.add(newFieldPanel(entry.getValue(), 250, textField));
         customTextfields.add(textField);
      }
      JScrollPane jsp = new JScrollPane(fields);
      JScrollPane jsp = new JScrollPane(fields);
      jsp.getVerticalScrollBar().setBlockIncrement(100);
      jsp.getVerticalScrollBar().setUnitIncrement(100);
      jsp.setViewportBorder(null);
@@ -743,7 +763,7 @@
   /**
    * ListCellRenderer to display descriptive text about the access
    * restriction.
    *
    *
    */
   private class AccessRestrictionRenderer extends DefaultListCellRenderer {
@@ -753,7 +773,7 @@
      public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {
         super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
         if (value instanceof AccessRestrictionType) {
            AccessRestrictionType restriction = (AccessRestrictionType) value;
            switch (restriction) {