From f5cbd026002eed8209368e9071726dfb67183e81 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 30 Oct 2012 08:18:19 -0400
Subject: [PATCH] Fixed missing repo counts on user projects
---
src/com/gitblit/client/EditRepositoryDialog.java | 88 ++++++++++++++++++++++++++++++++++++--------
1 files changed, 72 insertions(+), 16 deletions(-)
diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java
index e15b154..06621c2 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;
@@ -37,6 +39,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 +62,8 @@
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;
import com.gitblit.utils.StringUtils;
@@ -116,11 +121,11 @@
private JComboBox headRefField;
- private JPalette<String> usersPalette;
+ private RegistrantPermissionsPanel usersPalette;
private JPalette<String> setsPalette;
- private JPalette<String> teamsPalette;
+ private RegistrantPermissionsPanel teamsPalette;
private JPalette<String> indexedBranchesPalette;
@@ -217,13 +222,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);
@@ -280,7 +313,7 @@
clonePushPanel
.add(newFieldPanel(Translation.get("gb.verifyCommitter"), verifyCommitter));
- usersPalette = new JPalette<String>();
+ usersPalette = new RegistrantPermissionsPanel(RegistrantType.USER);
JPanel northAccessPanel = new JPanel(new BorderLayout(5, 5));
northAccessPanel.add(newFieldPanel(Translation.get("gb.accessRestriction"),
accessRestriction), BorderLayout.NORTH);
@@ -290,13 +323,13 @@
JPanel accessPanel = new JPanel(new BorderLayout(5, 5));
accessPanel.add(northAccessPanel, BorderLayout.NORTH);
- accessPanel.add(newFieldPanel(Translation.get("gb.permittedUsers"),
+ accessPanel.add(newFieldPanel(Translation.get("gb.userPermissions"),
usersPalette), BorderLayout.CENTER);
- teamsPalette = new JPalette<String>();
+ teamsPalette = new RegistrantPermissionsPanel(RegistrantType.TEAM);
JPanel teamsPanel = new JPanel(new BorderLayout(5, 5));
teamsPanel.add(
- newFieldPanel(Translation.get("gb.permittedTeams"),
+ newFieldPanel(Translation.get("gb.teamPermissions"),
teamsPalette), BorderLayout.CENTER);
setsPalette = new JPalette<String>();
@@ -347,6 +380,8 @@
panel.addTab(Translation.get("gb.customFields"), customFieldsScrollPane);
+
+ setupAccessPermissions(anRepository.accessRestriction);
JButton createButton = new JButton(Translation.get("gb.save"));
createButton.addActionListener(new ActionListener() {
@@ -401,6 +436,25 @@
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);
+ } else {
+ allowAuthenticated.setEnabled(true);
+ allowNamed.setEnabled(true);
+
+ if (allowNamed.isSelected()) {
+ usersPalette.setEnabled(true);
+ teamsPalette.setEnabled(true);
+ }
+ }
+
}
private boolean validateFields() {
@@ -537,6 +591,7 @@
public void setAccessRestriction(AccessRestrictionType restriction) {
this.accessRestriction.setSelectedItem(restriction);
+ setupAccessPermissions(restriction);
}
public void setAuthorizationControl(AuthorizationControl authorization) {
@@ -545,16 +600,16 @@
this.allowNamed.setSelected(!authenticated);
}
- public void setUsers(String owner, List<String> all, List<String> selected) {
+ public void setUsers(String owner, List<String> all, List<RegistrantAccessPermission> permissions) {
ownerField.setModel(new DefaultComboBoxModel(all.toArray()));
if (!StringUtils.isEmpty(owner)) {
ownerField.setSelectedItem(owner);
}
- usersPalette.setObjects(all, selected);
+ usersPalette.setObjects(all, permissions);
}
- public void setTeams(List<String> all, List<String> selected) {
- teamsPalette.setObjects(all, selected);
+ public void setTeams(List<String> all, List<RegistrantAccessPermission> permissions) {
+ teamsPalette.setObjects(all, permissions);
}
public void setRepositories(List<RepositoryModel> repositories) {
@@ -607,12 +662,12 @@
return repository;
}
- public List<String> getPermittedUsers() {
- return usersPalette.getSelections();
+ public List<RegistrantAccessPermission> getUserAccessPermissions() {
+ return usersPalette.getPermissions();
}
- public List<String> getPermittedTeams() {
- return teamsPalette.getSelections();
+ public List<RegistrantAccessPermission> getTeamAccessPermissions() {
+ return teamsPalette.getPermissions();
}
public void setCustomFields(RepositoryModel repository, Map<String, String> customFields) {
@@ -658,14 +713,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