James Moger
2012-10-30 abcb146f0c4e5c99e5e44349a65e6fd49e9296d9
src/com/gitblit/client/UsersPanel.java
@@ -40,7 +40,10 @@
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.TeamModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
@@ -51,7 +54,7 @@
 * @author James Moger
 * 
 */
public class UsersPanel extends JPanel {
public abstract class UsersPanel extends JPanel {
   private static final long serialVersionUID = 1L;
@@ -111,6 +114,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 +182,7 @@
      add(userTablePanel, BorderLayout.CENTER);
      add(userControls, BorderLayout.SOUTH);
   }
   @Override
   public void requestFocus() {
      filterTextfield.requestFocus();
@@ -178,6 +193,8 @@
      return Utils.INSETS;
   }
   protected abstract void updateTeamsTable();
   protected void updateTable(boolean pack) {
      tableModel.list.clear();
      tableModel.list.addAll(gitblit.getUsers());
@@ -240,10 +257,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 +276,9 @@
            boolean success = gitblit.createUser(newUser);
            if (success) {
               gitblit.refreshUsers();
               if (newUser.teams.size() > 0) {
                  gitblit.refreshTeams();
               }
            }
            return success;
         }
@@ -264,6 +286,9 @@
         @Override
         protected void onSuccess() {
            updateTable(false);
            if (newUser.teams.size() > 0) {
               updateTeamsTable();
            }
         }
         @Override
@@ -282,10 +307,28 @@
    * @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.
            boolean isOwner = gitblit.getRepository(permission.registrant).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 +341,7 @@
            boolean success = gitblit.updateUser(user.username, revisedUser);
            if (success) {
               gitblit.refreshUsers();
               gitblit.refreshTeams();
            }
            return success;
         }
@@ -305,6 +349,7 @@
         @Override
         protected void onSuccess() {
            updateTable(false);
            updateTeamsTable();
         }
         @Override
@@ -336,6 +381,7 @@
               }
               if (success) {
                  gitblit.refreshUsers();
                  gitblit.refreshTeams();
               }
               return success;
            }
@@ -343,6 +389,7 @@
            @Override
            protected void onSuccess() {
               updateTable(false);
               updateTeamsTable();
            }
            @Override