From c721a5d012ac3b841e1203ccd7fb60981a345c83 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 30 Oct 2012 17:28:28 -0400 Subject: [PATCH] Replaced fork icon --- src/com/gitblit/client/RegistrantPermissionsPanel.java | 66 +++++++++++++++++++++++++++++--- 1 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/com/gitblit/client/RegistrantPermissionsPanel.java b/src/com/gitblit/client/RegistrantPermissionsPanel.java index fa7ff5a..b8ab939 100644 --- a/src/com/gitblit/client/RegistrantPermissionsPanel.java +++ b/src/com/gitblit/client/RegistrantPermissionsPanel.java @@ -29,9 +29,14 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.table.DefaultTableCellRenderer; import com.gitblit.Constants.AccessPermission; +import com.gitblit.Constants.PermissionType; +import com.gitblit.Constants.RegistrantType; import com.gitblit.models.RegistrantAccessPermission; +import com.gitblit.utils.StringUtils; public class RegistrantPermissionsPanel extends JPanel { @@ -51,16 +56,21 @@ private JPanel addPanel; - public RegistrantPermissionsPanel() { + public RegistrantPermissionsPanel(final RegistrantType registrantType) { super(new BorderLayout(5, 5)); tableModel = new RegistrantPermissionsTableModel(); - permissionsTable = new JTable(tableModel); + permissionsTable = Utils.newTable(tableModel, Utils.DATE_FORMAT); + permissionsTable.setModel(tableModel); permissionsTable.setPreferredScrollableViewportSize(new Dimension(400, 150)); JScrollPane jsp = new JScrollPane(permissionsTable); add(jsp, BorderLayout.CENTER); + permissionsTable.getColumnModel().getColumn(RegistrantPermissionsTableModel.Columns.Registrant.ordinal()) + .setCellRenderer(new NameRenderer()); + permissionsTable.getColumnModel().getColumn(RegistrantPermissionsTableModel.Columns.Type.ordinal()) + .setCellRenderer(new PermissionTypeRenderer()); permissionsTable.getColumnModel().getColumn(RegistrantPermissionsTableModel.Columns.Permission.ordinal()) - .setCellEditor(new AccessPermissionEditor()); + .setCellEditor(new AccessPermissionEditor()); registrantModel = new DefaultComboBoxModel(); registrantSelector = new JComboBox(registrantModel); @@ -75,9 +85,15 @@ return; } - RegistrantAccessPermission rp = new RegistrantAccessPermission(); + RegistrantAccessPermission rp = new RegistrantAccessPermission(registrantType); rp.registrant = registrantSelector.getSelectedItem().toString(); rp.permission = (AccessPermission) permissionSelector.getSelectedItem(); + if (StringUtils.findInvalidCharacter(rp.registrant) != null) { + rp.permissionType = PermissionType.REGEX; + } else { + rp.permissionType = PermissionType.EXPLICIT; + } + tableModel.permissions.add(rp); registrantModel.removeElement(rp.registrant); @@ -99,7 +115,10 @@ @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); - permissionsTable.setEnabled(false); + permissionsTable.setEnabled(enabled); + registrantSelector.setEnabled(enabled); + permissionSelector.setEnabled(enabled); + addButton.setEnabled(enabled); } public void setObjects(List<String> registrants, List<RegistrantAccessPermission> permissions) { @@ -113,7 +132,11 @@ permissions = new ArrayList<RegistrantAccessPermission>(); } for (RegistrantAccessPermission rp : permissions) { - filtered.remove(rp.registrant); + if (rp.isEditable) { + // only remove editable duplicates + // this allows for specifying an explicit permission + filtered.remove(rp.registrant); + } } for (String registrant : filtered) { registrantModel.addElement(registrant); @@ -134,7 +157,36 @@ private static final long serialVersionUID = 1L; public AccessPermissionEditor() { - super(new JComboBox(AccessPermission.values())); + super(new JComboBox(AccessPermission.values())); } } + + private class PermissionTypeRenderer extends DefaultTableCellRenderer { + + private static final long serialVersionUID = 1L; + + public PermissionTypeRenderer() { + super(); + setHorizontalAlignment(SwingConstants.CENTER); + } + + @Override + protected void setValue(Object value) { + PermissionType pType = (PermissionType) value; + switch (pType) { + case OWNER: + setText("owner"); + setToolTipText(Translation.get("gb.ownerPermission")); + break; + case REGEX: + setText("regex"); + setToolTipText(Translation.get("gb.regexPermission")); + break; + default: + setText(""); + setToolTipText(null); + break; + } + } + } } -- Gitblit v1.9.1