From f08aab5c5e632431635e73b47b6096dc47243755 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 13 Dec 2011 08:37:02 -0500
Subject: [PATCH] Teams JSON-RPC support

---
 src/com/gitblit/client/UsersPanel.java |   38 ++++++++++++++++++++++++++++++++++----
 1 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/src/com/gitblit/client/UsersPanel.java b/src/com/gitblit/client/UsersPanel.java
index 5d31774..0dfa043 100644
--- a/src/com/gitblit/client/UsersPanel.java
+++ b/src/com/gitblit/client/UsersPanel.java
@@ -41,6 +41,7 @@
 import javax.swing.table.TableRowSorter;
 
 import com.gitblit.Constants.RpcRequest;
+import com.gitblit.models.TeamModel;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.StringUtils;
 
@@ -51,7 +52,7 @@
  * @author James Moger
  * 
  */
-public class UsersPanel extends JPanel {
+public abstract class UsersPanel extends JPanel {
 
 	private static final long serialVersionUID = 1L;
 
@@ -111,6 +112,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 +180,7 @@
 		add(userTablePanel, BorderLayout.CENTER);
 		add(userControls, BorderLayout.SOUTH);
 	}
-	
+
 	@Override
 	public void requestFocus() {
 		filterTextfield.requestFocus();
@@ -178,6 +191,8 @@
 		return Utils.INSETS;
 	}
 
+	protected abstract void updateTeamsTable();
+	
 	protected void updateTable(boolean pack) {
 		tableModel.list.clear();
 		tableModel.list.addAll(gitblit.getUsers());
@@ -240,10 +255,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 +274,9 @@
 				boolean success = gitblit.createUser(newUser);
 				if (success) {
 					gitblit.refreshUsers();
+					if (newUser.teams.size() > 0) {
+						gitblit.refreshTeams();
+					}
 				}
 				return success;
 			}
@@ -264,6 +284,9 @@
 			@Override
 			protected void onSuccess() {
 				updateTable(false);
+				if (newUser.teams.size() > 0) {
+					updateTeamsTable();
+				}
 			}
 
 			@Override
@@ -282,10 +305,13 @@
 	 * @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));
+		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 +324,7 @@
 				boolean success = gitblit.updateUser(user.username, revisedUser);
 				if (success) {
 					gitblit.refreshUsers();
+					gitblit.refreshTeams();
 				}
 				return success;
 			}
@@ -305,6 +332,7 @@
 			@Override
 			protected void onSuccess() {
 				updateTable(false);
+				updateTeamsTable();
 			}
 
 			@Override
@@ -336,6 +364,7 @@
 					}
 					if (success) {
 						gitblit.refreshUsers();
+						gitblit.refreshTeams();
 					}
 					return success;
 				}
@@ -343,6 +372,7 @@
 				@Override
 				protected void onSuccess() {
 					updateTable(false);
+					updateTeamsTable();
 				}
 
 				@Override

--
Gitblit v1.9.1