From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 25 Feb 2013 08:40:30 -0500 Subject: [PATCH] Merge pull request #75 from thefake/master --- src/com/gitblit/client/EditRepositoryDialog.java | 116 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 98 insertions(+), 18 deletions(-) diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java index 0adf8a8..8851de4 100644 --- a/src/com/gitblit/client/EditRepositoryDialog.java +++ b/src/com/gitblit/client/EditRepositoryDialog.java @@ -24,6 +24,8 @@ import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.text.MessageFormat; import java.util.ArrayList; @@ -36,7 +38,7 @@ import javax.swing.BoxLayout; import javax.swing.ButtonGroup; -import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListCellRenderer; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; @@ -59,6 +61,7 @@ import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.Constants.AuthorizationControl; import com.gitblit.Constants.FederationStrategy; +import com.gitblit.Constants.RegistrantType; import com.gitblit.models.RegistrantAccessPermission; import com.gitblit.models.RepositoryModel; import com.gitblit.utils.ArrayUtils; @@ -113,10 +116,16 @@ private JComboBox federationStrategy; - private JComboBox ownerField; + private JPalette<String> ownersPalette; private JComboBox headRefField; - + + private JComboBox gcPeriod; + + private JTextField gcThreshold; + + private JComboBox maxActivityCommits; + private RegistrantPermissionsPanel usersPalette; private JPalette<String> setsPalette; @@ -189,8 +198,15 @@ 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); - ownerField = new JComboBox(); + ownersPalette = new JPalette<String>(true); useTickets = new JCheckBox(Translation.get("gb.useTicketsDescription"), anRepository.useTickets); @@ -210,6 +226,9 @@ isFrozen = new JCheckBox(Translation.get("gb.isFrozenDescription"), anRepository.isFrozen); + maxActivityCommits = new JComboBox(new Integer [] { -1, 0, 25, 50, 75, 100, 150, 250, 500 }); + maxActivityCommits.setSelectedItem(anRepository.maxActivityCommits); + mailingListsField = new JTextField( ArrayUtils.isEmpty(anRepository.mailingLists) ? "" : StringUtils.flattenStrings(anRepository.mailingLists, @@ -218,13 +237,41 @@ accessRestriction = new JComboBox(AccessRestrictionType.values()); accessRestriction.setRenderer(new AccessRestrictionRenderer()); accessRestriction.setSelectedItem(anRepository.accessRestriction); + accessRestriction.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + AccessRestrictionType art = (AccessRestrictionType) accessRestriction.getSelectedItem(); + EditRepositoryDialog.this.setupAccessPermissions(art); + } + } + }); 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) { + usersPalette.setEnabled(false); + teamsPalette.setEnabled(false); + } + } + }); + allowNamed = new JRadioButton(Translation.get("gb.allowNamedDescription")); allowNamed.setSelected(!authenticated); + allowNamed.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + usersPalette.setEnabled(true); + teamsPalette.setEnabled(true); + } + } + }); ButtonGroup group = new ButtonGroup(); group.add(allowAuthenticated); @@ -255,7 +302,8 @@ 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.gcPeriod"), gcPeriod)); + fieldsPanel.add(newFieldPanel(Translation.get("gb.gcThreshold"), gcThreshold)); fieldsPanel.add(newFieldPanel(Translation.get("gb.enableTickets"), useTickets)); @@ -270,6 +318,8 @@ skipSizeCalculation)); fieldsPanel.add(newFieldPanel(Translation.get("gb.skipSummaryMetrics"), skipSummaryMetrics)); + fieldsPanel.add(newFieldPanel(Translation.get("gb.maxActivityCommits"), + maxActivityCommits)); fieldsPanel.add(newFieldPanel(Translation.get("gb.mailingLists"), mailingListsField)); @@ -281,10 +331,15 @@ clonePushPanel .add(newFieldPanel(Translation.get("gb.verifyCommitter"), verifyCommitter)); - usersPalette = new RegistrantPermissionsPanel(); + usersPalette = new RegistrantPermissionsPanel(RegistrantType.USER); + + JPanel northFieldsPanel = new JPanel(new BorderLayout(0, 5)); + northFieldsPanel.add(newFieldPanel(Translation.get("gb.owners"), ownersPalette), BorderLayout.NORTH); + northFieldsPanel.add(newFieldPanel(Translation.get("gb.accessRestriction"), + accessRestriction), BorderLayout.CENTER); + JPanel northAccessPanel = new JPanel(new BorderLayout(5, 5)); - northAccessPanel.add(newFieldPanel(Translation.get("gb.accessRestriction"), - accessRestriction), BorderLayout.NORTH); + northAccessPanel.add(northFieldsPanel, BorderLayout.NORTH); northAccessPanel.add(newFieldPanel(Translation.get("gb.authorizationControl"), authorizationPanel), BorderLayout.CENTER); northAccessPanel.add(clonePushPanel, BorderLayout.SOUTH); @@ -294,7 +349,7 @@ accessPanel.add(newFieldPanel(Translation.get("gb.userPermissions"), usersPalette), BorderLayout.CENTER); - teamsPalette = new RegistrantPermissionsPanel(); + teamsPalette = new RegistrantPermissionsPanel(RegistrantType.TEAM); JPanel teamsPanel = new JPanel(new BorderLayout(5, 5)); teamsPanel.add( newFieldPanel(Translation.get("gb.teamPermissions"), @@ -349,6 +404,8 @@ panel.addTab(Translation.get("gb.customFields"), customFieldsScrollPane); + setupAccessPermissions(anRepository.accessRestriction); + JButton createButton = new JButton(Translation.get("gb.save")); createButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { @@ -402,6 +459,27 @@ panel.add(fieldLabel); 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); + } else { + allowAuthenticated.setEnabled(true); + allowNamed.setEnabled(true); + verifyCommitter.setEnabled(true); + + if (allowNamed.isSelected()) { + usersPalette.setEnabled(true); + teamsPalette.setEnabled(true); + } + } + } private boolean validateFields() { @@ -477,16 +555,19 @@ repository.name = rname; repository.description = descriptionField.getText(); - repository.owner = ownerField.getSelectedItem() == null ? null - : ownerField.getSelectedItem().toString(); + repository.owners.clear(); + repository.owners.addAll(ownersPalette.getSelections()); repository.HEAD = headRefField.getSelectedItem() == null ? null : headRefField.getSelectedItem().toString(); + repository.gcPeriod = (Integer) gcPeriod.getSelectedItem(); + repository.gcThreshold = gcThreshold.getText(); repository.useTickets = useTickets.isSelected(); repository.useDocs = useDocs.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(); @@ -538,6 +619,7 @@ public void setAccessRestriction(AccessRestrictionType restriction) { this.accessRestriction.setSelectedItem(restriction); + setupAccessPermissions(restriction); } public void setAuthorizationControl(AuthorizationControl authorization) { @@ -546,11 +628,8 @@ this.allowNamed.setSelected(!authenticated); } - public void setUsers(String owner, List<String> all, List<RegistrantAccessPermission> permissions) { - ownerField.setModel(new DefaultComboBoxModel(all.toArray())); - if (!StringUtils.isEmpty(owner)) { - ownerField.setSelectedItem(owner); - } + public void setUsers(List<String> owners, List<String> all, List<RegistrantAccessPermission> permissions) { + ownersPalette.setObjects(all, owners); usersPalette.setObjects(all, permissions); } @@ -659,14 +738,15 @@ * restriction. * */ - private class AccessRestrictionRenderer extends JLabel implements - ListCellRenderer { + private class AccessRestrictionRenderer extends DefaultListCellRenderer { private static final long serialVersionUID = 1L; @Override 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) { -- Gitblit v1.9.1