From 9af47c10c6a268877c1d232c8d71ee6df4f8a7ab Mon Sep 17 00:00:00 2001 From: Jeroen Baten <jeroen@jeroenbaten.nl> Date: Fri, 04 Jan 2013 05:18:37 -0500 Subject: [PATCH] Dutch translation before spellcheck --- src/com/gitblit/client/RegistrantPermissionsPanel.java | 101 ++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 84 insertions(+), 17 deletions(-) diff --git a/src/com/gitblit/client/RegistrantPermissionsPanel.java b/src/com/gitblit/client/RegistrantPermissionsPanel.java index 4ea173f..98dbfb7 100644 --- a/src/com/gitblit/client/RegistrantPermissionsPanel.java +++ b/src/com/gitblit/client/RegistrantPermissionsPanel.java @@ -16,10 +16,14 @@ package com.gitblit.client; import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.text.MessageFormat; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import javax.swing.DefaultCellEditor; @@ -33,7 +37,11 @@ import javax.swing.table.DefaultTableCellRenderer; import com.gitblit.Constants.AccessPermission; +import com.gitblit.Constants.PermissionType; +import com.gitblit.Constants.RegistrantType; +import com.gitblit.client.Utils.RowRenderer; import com.gitblit.models.RegistrantAccessPermission; +import com.gitblit.utils.StringUtils; public class RegistrantPermissionsPanel extends JPanel { @@ -53,16 +61,35 @@ 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, new RowRenderer() { + Color clear = new Color(0, 0, 0, 0); + Color iceGray = new Color(0xf0, 0xf0, 0xf0); + + @Override + public void prepareRow(Component c, boolean isSelected, int row, int column) { + if (isSelected) { + c.setBackground(permissionsTable.getSelectionBackground()); + } else { + if (tableModel.permissions.get(row).mutable) { + c.setBackground(clear); + } else { + c.setBackground(iceGray); + } + } + } + }); + 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 RegexRenderer()); + .setCellRenderer(new PermissionTypeRenderer()); permissionsTable.getColumnModel().getColumn(RegistrantPermissionsTableModel.Columns.Permission.ordinal()) .setCellEditor(new AccessPermissionEditor()); @@ -79,10 +106,19 @@ 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; + rp.source = rp.registrant; + } else { + rp.permissionType = PermissionType.EXPLICIT; + } + tableModel.permissions.add(rp); + // resort permissions after insert to convey idea of eval order + Collections.sort(tableModel.permissions); registrantModel.removeElement(rp.registrant); registrantSelector.setSelectedIndex(-1); @@ -103,7 +139,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) { @@ -117,7 +156,17 @@ permissions = new ArrayList<RegistrantAccessPermission>(); } for (RegistrantAccessPermission rp : permissions) { - filtered.remove(rp.registrant); + if (rp.mutable) { + // only remove editable duplicates + // this allows for specifying an explicit permission + filtered.remove(rp.registrant); + } else if (rp.isAdmin()) { + // administrators can not have their permission changed + filtered.remove(rp.registrant); + } else if (rp.isOwner()) { + // owners can not have their permission changed + filtered.remove(rp.registrant); + } } for (String registrant : filtered) { registrantModel.addElement(registrant); @@ -138,30 +187,48 @@ private static final long serialVersionUID = 1L; public AccessPermissionEditor() { - super(new JComboBox(AccessPermission.values())); + super(new JComboBox(AccessPermission.values())); } } - private class RegexRenderer extends DefaultTableCellRenderer { + private class PermissionTypeRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 1L; - public RegexRenderer() { + public PermissionTypeRenderer() { super(); setHorizontalAlignment(SwingConstants.CENTER); } @Override protected void setValue(Object value) { - boolean isExplicit = (Boolean) value; - if (isExplicit) { - // explicit permission - setText(""); - setToolTipText(null); - } else { - // regex matched permission + RegistrantAccessPermission ap = (RegistrantAccessPermission) value; + switch (ap.permissionType) { + case ADMINISTRATOR: + setText(ap.source == null ? Translation.get("gb.administrator") : ap.source); + setToolTipText(Translation.get("gb.administratorPermission")); + break; + case OWNER: + setText(Translation.get("gb.owner")); + setToolTipText(Translation.get("gb.ownerPermission")); + break; + case TEAM: + setText(ap.source == null ? Translation.get("gb.team") : ap.source); + setToolTipText(MessageFormat.format(Translation.get("gb.teamPermission"), ap.source)); + break; + case REGEX: setText("regex"); - setToolTipText(Translation.get("gb.regexPermission")); + setToolTipText(MessageFormat.format(Translation.get("gb.regexPermission"), ap.source)); + break; + default: + if (ap.isMissing()) { + setText(Translation.get("gb.missing")); + setToolTipText(Translation.get("gb.missingPermission")); + } else { + setText(""); + setToolTipText(null); + } + break; } } } -- Gitblit v1.9.1