| | |
| | | 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 {
|
| | |
|
| | |
| | |
|
| | | 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 RegexRenderer());
|
| | | .setCellRenderer(new PermissionTypeRenderer());
|
| | | permissionsTable.getColumnModel().getColumn(RegistrantPermissionsTableModel.Columns.Permission.ordinal())
|
| | | .setCellEditor(new AccessPermissionEditor());
|
| | |
|
| | |
| | | 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);
|
| | |
| | | @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) {
|
| | |
| | | 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);
|
| | |
| | | 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
|
| | | 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;
|
| | | }
|
| | | }
|
| | | }
|