From 9ba9be513a347ea9893c51f2db6b13f6c7cb08dd Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 31 Oct 2012 16:30:05 -0400 Subject: [PATCH] Added frm to default pretty print extensions (issue 156) --- src/com/gitblit/client/UsersPanel.java | 65 ++++++++++++++++++++++++++++++-- 1 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/com/gitblit/client/UsersPanel.java b/src/com/gitblit/client/UsersPanel.java index 5d31774..2c1481a 100644 --- a/src/com/gitblit/client/UsersPanel.java +++ b/src/com/gitblit/client/UsersPanel.java @@ -25,6 +25,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; @@ -40,7 +41,11 @@ import javax.swing.event.ListSelectionListener; import javax.swing.table.TableRowSorter; +import com.gitblit.Constants.PermissionType; import com.gitblit.Constants.RpcRequest; +import com.gitblit.models.RegistrantAccessPermission; +import com.gitblit.models.RepositoryModel; +import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; @@ -51,7 +56,7 @@ * @author James Moger * */ -public class UsersPanel extends JPanel { +public abstract class UsersPanel extends JPanel { private static final long serialVersionUID = 1L; @@ -111,6 +116,18 @@ String name = table.getColumnName(UsersTableModel.Columns.Name.ordinal()); table.setRowHeight(nameRenderer.getFont().getSize() + 8); table.getColumn(name).setCellRenderer(nameRenderer); + + int w = 125; + name = table.getColumnName(UsersTableModel.Columns.AccessLevel.ordinal()); + table.getColumn(name).setMinWidth(w); + table.getColumn(name).setMaxWidth(w); + name = table.getColumnName(UsersTableModel.Columns.Teams.ordinal()); + table.getColumn(name).setMinWidth(w); + table.getColumn(name).setMaxWidth(w); + name = table.getColumnName(UsersTableModel.Columns.Repositories.ordinal()); + table.getColumn(name).setMinWidth(w); + table.getColumn(name).setMaxWidth(w); + table.setRowSorter(defaultSorter); table.getRowSorter().toggleSortOrder(UsersTableModel.Columns.Name.ordinal()); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @@ -167,7 +184,7 @@ add(userTablePanel, BorderLayout.CENTER); add(userControls, BorderLayout.SOUTH); } - + @Override public void requestFocus() { filterTextfield.requestFocus(); @@ -178,6 +195,8 @@ return Utils.INSETS; } + protected abstract void updateTeamsTable(); + protected void updateTable(boolean pack) { tableModel.list.clear(); tableModel.list.addAll(gitblit.getUsers()); @@ -240,10 +259,12 @@ * */ protected void createUser() { - EditUserDialog dialog = new EditUserDialog(gitblit.getSettings()); + EditUserDialog dialog = new EditUserDialog(gitblit.getProtocolVersion(), + gitblit.getSettings()); dialog.setLocationRelativeTo(UsersPanel.this); dialog.setUsers(gitblit.getUsers()); dialog.setRepositories(gitblit.getRepositories(), null); + dialog.setTeams(gitblit.getTeams(), null); dialog.setVisible(true); final UserModel newUser = dialog.getUser(); if (newUser == null) { @@ -257,6 +278,9 @@ boolean success = gitblit.createUser(newUser); if (success) { gitblit.refreshUsers(); + if (newUser.teams.size() > 0) { + gitblit.refreshTeams(); + } } return success; } @@ -264,6 +288,9 @@ @Override protected void onSuccess() { updateTable(false); + if (newUser.teams.size() > 0) { + updateTeamsTable(); + } } @Override @@ -282,10 +309,34 @@ * @param user */ protected void editUser(final UserModel user) { - EditUserDialog dialog = new EditUserDialog(user, gitblit.getSettings()); + EditUserDialog dialog = new EditUserDialog(gitblit.getProtocolVersion(), user, + gitblit.getSettings()); dialog.setLocationRelativeTo(UsersPanel.this); dialog.setUsers(gitblit.getUsers()); - dialog.setRepositories(gitblit.getRepositories(), new ArrayList<String>(user.repositories)); + + List<RegistrantAccessPermission> permissions = user.getRepositoryPermissions(); + for (RegistrantAccessPermission permission : permissions) { + if (permission.isEditable && PermissionType.EXPLICIT.equals(permission.permissionType)) { + // Ensure this is NOT an owner permission - which is non-editable + // We don't know this from within the usermodel, ownership is a + // property of a repository. + RepositoryModel rm = gitblit.getRepository(permission.registrant); + if (rm == null) { + System.out.println(MessageFormat.format("{0}: failed to find registrant repository {1}", + getClass().getSimpleName(), permission.registrant)); + continue; + } + boolean isOwner = rm.isOwner(user.username); + if (isOwner) { + permission.permissionType = PermissionType.OWNER; + permission.isEditable = false; + } + } + } + + dialog.setRepositories(gitblit.getRepositories(), user.getRepositoryPermissions()); + dialog.setTeams(gitblit.getTeams(), user.teams == null ? null : new ArrayList<TeamModel>( + user.teams)); dialog.setVisible(true); final UserModel revisedUser = dialog.getUser(); if (revisedUser == null) { @@ -298,6 +349,7 @@ boolean success = gitblit.updateUser(user.username, revisedUser); if (success) { gitblit.refreshUsers(); + gitblit.refreshTeams(); } return success; } @@ -305,6 +357,7 @@ @Override protected void onSuccess() { updateTable(false); + updateTeamsTable(); } @Override @@ -336,6 +389,7 @@ } if (success) { gitblit.refreshUsers(); + gitblit.refreshTeams(); } return success; } @@ -343,6 +397,7 @@ @Override protected void onSuccess() { updateTable(false); + updateTeamsTable(); } @Override -- Gitblit v1.9.1