From 0e44acbb2fec928a1606dc60f427a148fff405c9 Mon Sep 17 00:00:00 2001
From: Mohamed Ragab <moragab@gmail.com>
Date: Wed, 02 May 2012 11:15:01 -0400
Subject: [PATCH] Added a script to facilitate setting the proxy host and port and no proxy hosts, and then it concatenates all the java system properties for setting the java proxy configurations and puts the resulting string in an environment variable JAVA_PROXY_CONFIG, modified the scirpts gitblit,  gitblit-ubuntu, and gitblit-centos to source the java-proxy-config.sh script and then include the resulting java proxy configuration in the java command

---
 src/com/gitblit/client/GitblitPanel.java |  748 ++++++++++----------------------------------------------
 1 files changed, 139 insertions(+), 609 deletions(-)

diff --git a/src/com/gitblit/client/GitblitPanel.java b/src/com/gitblit/client/GitblitPanel.java
index 05ba415..f14ce79 100644
--- a/src/com/gitblit/client/GitblitPanel.java
+++ b/src/com/gitblit/client/GitblitPanel.java
@@ -16,47 +16,21 @@
 package com.gitblit.client;
 
 import java.awt.BorderLayout;
-import java.awt.Color;
 import java.awt.Component;
-import java.awt.Desktop;
-import java.awt.Dimension;
-import java.awt.GridLayout;
 import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.io.IOException;
-import java.net.URI;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JOptionPane;
 import javax.swing.JPanel;
-import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.RowFilter;
-import javax.swing.SwingConstants;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.DefaultTableCellRenderer;
-import javax.swing.table.TableCellRenderer;
-import javax.swing.table.TableRowSorter;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 
-import com.gitblit.Constants.RpcRequest;
 import com.gitblit.client.ClosableTabComponent.CloseTabListener;
-import com.gitblit.models.RepositoryModel;
-import com.gitblit.models.UserModel;
-import com.gitblit.utils.StringUtils;
+import com.gitblit.models.FeedModel;
 
 /**
- * GitblitPanel performs the login, all business logic, and contains all widgets
- * to represent the state of a repository for the given account credentials.
+ * GitblitPanel is a container for the repository, users, settings, etc panels.
  * 
  * @author James Moger
  * 
@@ -65,350 +39,169 @@
 
 	private static final long serialVersionUID = 1L;
 
-	private final int margin = 5;
+	private final RegistrationsDialog.RegistrationListener listener;
 
-	private final Insets insets = new Insets(margin, margin, margin, margin);
-
-	private GitblitModel gitblit;
+	private GitblitClient gitblit;
 
 	private JTabbedPane tabs;
 
-	private JTable repositoriesTable;
+	private RepositoriesPanel repositoriesPanel;
 
-	private RepositoriesModel repositoriesModel;
+	private FeedsPanel feedsPanel;
 
-	private JList usersList;
+	private UsersPanel usersPanel;
+	
+	private TeamsPanel teamsPanel;
 
-	private JPanel usersPanel;
+	private SettingsPanel settingsPanel;
 
-	private JButton createRepository;
+	private StatusPanel statusPanel;
 
-	private JButton delRepository;
-
-	private NameRenderer nameRenderer;
-
-	private IndicatorsRenderer typeRenderer;
-
-	private DefaultTableCellRenderer ownerRenderer;
-
-	private DefaultTableCellRenderer sizeRenderer;
-
-	private TableRowSorter<RepositoriesModel> defaultSorter;
-
-	public GitblitPanel(GitblitRegistration reg) {
-		this(reg.url, reg.account, reg.password);
-	}
-
-	public GitblitPanel(String url, String account, char[] password) {
-		this.gitblit = new GitblitModel(url, account, password);
-
-		final JButton browseRepository = new JButton(Translation.get("gb.browse"));
-		browseRepository.setEnabled(false);
-		browseRepository.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				RepositoryModel model = getSelectedRepositories().get(0);
-				String u = MessageFormat.format("{0}/summary/{1}", gitblit.url,
-						StringUtils.encodeURL(model.name));
-				try {
-					Desktop.getDesktop().browse(new URI(u));
-				} catch (Exception x) {
-					x.printStackTrace();
-				}
-			}
-		});
-
-		JButton refreshRepositories = new JButton(Translation.get("gb.refresh"));
-		refreshRepositories.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				refreshRepositories();
-			}
-		});
-
-		createRepository = new JButton(Translation.get("gb.create"));
-		createRepository.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				createRepository();
-			}
-		});
-
-		final JButton editRepository = new JButton(Translation.get("gb.edit"));
-		editRepository.setEnabled(false);
-		editRepository.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				editRepository(getSelectedRepositories().get(0));
-			}
-		});
-
-		delRepository = new JButton(Translation.get("gb.delete"));
-		delRepository.setEnabled(false);
-		delRepository.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				deleteRepositories(getSelectedRepositories());
-			}
-		});
-
-		final JButton cloneRepository = new JButton(Translation.get("gb.clone"));
-		cloneRepository.setEnabled(false);
-		cloneRepository.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				for (RepositoryModel model : getSelectedRepositories()) {
-					System.out.println("TODO Clone " + model);
-				}
-			}
-		});
-
-		nameRenderer = new NameRenderer();
-		typeRenderer = new IndicatorsRenderer();
-
-		sizeRenderer = new DefaultTableCellRenderer();
-		sizeRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
-		sizeRenderer.setForeground(new Color(0, 0x80, 0));
-
-		ownerRenderer = new DefaultTableCellRenderer();
-		ownerRenderer.setForeground(Color.gray);
-		ownerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
-
-		repositoriesModel = new RepositoriesModel();
-		defaultSorter = new TableRowSorter<RepositoriesModel>(repositoriesModel);
-		repositoriesTable = new JTable(repositoriesModel);
-		repositoriesTable.setRowSorter(defaultSorter);
-		repositoriesTable.getRowSorter().toggleSortOrder(RepositoriesModel.Columns.Name.ordinal());
-
-		repositoriesTable.setCellSelectionEnabled(false);
-		repositoriesTable.setRowSelectionAllowed(true);
-		repositoriesTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
-		repositoriesTable.getTableHeader().setReorderingAllowed(false);
-		repositoriesTable.setGridColor(new Color(0xd9d9d9));
-		repositoriesTable.setBackground(Color.white);
-		repositoriesTable.setDefaultRenderer(Date.class,
-				new DateCellRenderer(null, Color.orange.darker()));
-		setRenderer(RepositoriesModel.Columns.Name, nameRenderer);
-		setRenderer(RepositoriesModel.Columns.Indicators, typeRenderer);
-		setRenderer(RepositoriesModel.Columns.Owner, ownerRenderer);
-		setRenderer(RepositoriesModel.Columns.Size, sizeRenderer);
-
-		repositoriesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
-			@Override
-			public void valueChanged(ListSelectionEvent e) {
-				if (e.getValueIsAdjusting()) {
-					return;
-				}
-				boolean singleSelection = repositoriesTable.getSelectedRowCount() == 1;
-				boolean selected = repositoriesTable.getSelectedRow() > -1;
-				browseRepository.setEnabled(singleSelection);
-				delRepository.setEnabled(selected);
-				cloneRepository.setEnabled(selected);
-				if (selected) {
-					int viewRow = repositoriesTable.getSelectedRow();
-					int modelRow = repositoriesTable.convertRowIndexToModel(viewRow);
-					RepositoryModel model = ((RepositoriesModel) repositoriesTable.getModel()).list
-							.get(modelRow);
-					editRepository.setEnabled(singleSelection
-							&& (gitblit.allowAdmin() || gitblit.isOwner(model)));
-				} else {
-					editRepository.setEnabled(false);
-				}
-			}
-		});
-
-		final JTextField repositoryFilter = new JTextField();
-		repositoryFilter.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				filterRepositories(repositoryFilter.getText());
-			}
-		});
-
-		JPanel filterPanel = new JPanel(new BorderLayout(margin, margin));
-		filterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);
-		filterPanel.add(repositoryFilter, BorderLayout.CENTER);
-
-		JPanel tablePanel = new JPanel(new BorderLayout(margin, margin));
-		tablePanel.add(filterPanel, BorderLayout.NORTH);
-		tablePanel.add(new JScrollPane(repositoriesTable), BorderLayout.CENTER);
-
-		JPanel repositoryControls = new JPanel();
-		repositoryControls.add(refreshRepositories);
-		repositoryControls.add(browseRepository);
-		repositoryControls.add(cloneRepository);
-		repositoryControls.add(createRepository);
-		repositoryControls.add(editRepository);
-		repositoryControls.add(delRepository);
-
-		JPanel repositoriesPanel = new JPanel(new BorderLayout(margin, margin));
-		repositoriesPanel.add(newHeaderLabel(Translation.get("gb.repositories")),
-				BorderLayout.NORTH);
-		repositoriesPanel.add(tablePanel, BorderLayout.CENTER);
-		repositoriesPanel.add(repositoryControls, BorderLayout.SOUTH);
-
-		JButton refreshUsers = new JButton(Translation.get("gb.refresh"));
-		refreshUsers.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				refreshUsers();
-			}
-		});
-
-		JButton createUser = new JButton(Translation.get("gb.create"));
-		createUser.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				createUser();
-			}
-		});
-
-		final JButton editUser = new JButton(Translation.get("gb.edit"));
-		editUser.setEnabled(false);
-		editUser.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				editUser(getSelectedUsers().get(0));
-			}
-		});
-
-		final JButton delUser = new JButton(Translation.get("gb.delete"));
-		delUser.setEnabled(false);
-		delUser.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				deleteUsers(getSelectedUsers());
-			}
-		});
-
-		usersList = new JList();
-		usersList.addListSelectionListener(new ListSelectionListener() {
-
-			@Override
-			public void valueChanged(ListSelectionEvent e) {
-				if (e.getValueIsAdjusting()) {
-					return;
-				}
-				boolean selected = usersList.getSelectedIndex() > -1;
-				boolean singleSelection = usersList.getSelectedIndices().length == 1;
-				editUser.setEnabled(singleSelection && selected);
-				delUser.setEnabled(selected);
-			}
-		});
-
-		JPanel userControls = new JPanel(new GridLayout(0, 2));
-		userControls.add(refreshUsers);
-		userControls.add(createUser);
-		userControls.add(editUser);
-		userControls.add(delUser);
-
-		usersPanel = new JPanel(new BorderLayout(margin, margin));
-		usersPanel.add(newHeaderLabel(Translation.get("gb.users")), BorderLayout.NORTH);
-		usersPanel.add(new JScrollPane(usersList), BorderLayout.CENTER);
-		usersPanel.add(userControls, BorderLayout.SOUTH);
-
-		/*
-		 * Assemble the main panel
-		 */
-		JPanel mainPanel = new JPanel(new BorderLayout(margin, margin));
-		mainPanel.add(repositoriesPanel, BorderLayout.CENTER);
-		mainPanel.add(usersPanel, BorderLayout.EAST);
+	public GitblitPanel(GitblitRegistration reg, RegistrationsDialog.RegistrationListener listener) {
+		this.gitblit = new GitblitClient(reg);
+		this.listener = listener;
 
 		tabs = new JTabbedPane(JTabbedPane.BOTTOM);
-		tabs.addTab(Translation.get("gb.repositories"), mainPanel);
-		tabs.addTab(Translation.get("gb.federation"), new JPanel());
+		tabs.addTab(Translation.get("gb.repositories"), createRepositoriesPanel());
+		tabs.addTab(Translation.get("gb.activity"), createFeedsPanel());
+		tabs.addTab(Translation.get("gb.teams"), createTeamsPanel());
+		tabs.addTab(Translation.get("gb.users"), createUsersPanel());
+		tabs.addTab(Translation.get("gb.settings"), createSettingsPanel());
+		tabs.addTab(Translation.get("gb.status"), createStatusPanel());
+		tabs.addChangeListener(new ChangeListener() {
+			public void stateChanged(ChangeEvent e) {
+				tabs.getSelectedComponent().requestFocus();
+			}
+		});
 
 		setLayout(new BorderLayout());
 		add(tabs, BorderLayout.CENTER);
 	}
 
-	private JLabel newHeaderLabel(String text) {
-		JLabel label = new JLabel(text);
-		label.setOpaque(true);
-		label.setForeground(Color.white);
-		label.setBackground(Color.gray);
-		label.setFont(label.getFont().deriveFont(14f));
-		return label;
+	private JPanel createRepositoriesPanel() {
+		repositoriesPanel = new RepositoriesPanel(gitblit) {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void subscribeFeeds(List<FeedModel> feeds) {
+				GitblitPanel.this.subscribeFeeds(feeds);
+			}
+
+			@Override
+			protected void updateUsersTable() {
+				usersPanel.updateTable(false);
+			}
+			
+			@Override
+			protected void updateTeamsTable() {
+				teamsPanel.updateTable(false);
+			}
+
+		};
+		return repositoriesPanel;
 	}
 
-	private void setRenderer(RepositoriesModel.Columns col, TableCellRenderer renderer) {
-		String name = repositoriesTable.getColumnName(col.ordinal());
-		repositoriesTable.getColumn(name).setCellRenderer(renderer);
+	private JPanel createFeedsPanel() {
+		feedsPanel = new FeedsPanel(gitblit) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void subscribeFeeds(List<FeedModel> feeds) {
+				GitblitPanel.this.subscribeFeeds(feeds);
+			}
+		};
+		return feedsPanel;
+	}
+
+	private JPanel createUsersPanel() {
+		usersPanel = new UsersPanel(gitblit) {
+			
+			private static final long serialVersionUID = 1L;
+			
+			@Override
+			protected void updateTeamsTable() {
+				teamsPanel.updateTable(false);
+			}
+		};
+		return usersPanel;
+	}
+	
+	private JPanel createTeamsPanel() {
+		teamsPanel = new TeamsPanel(gitblit) {
+			
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void updateUsersTable() {
+				usersPanel.updateTable(false);
+			}
+		};
+		return teamsPanel;
+	}	
+
+	private JPanel createSettingsPanel() {
+		settingsPanel = new SettingsPanel(gitblit);
+		return settingsPanel;
+	}
+
+	private JPanel createStatusPanel() {
+		statusPanel = new StatusPanel(gitblit);
+		return statusPanel;
 	}
 
 	public void login() throws IOException {
 		gitblit.login();
 
-		updateRepositoriesTable();
-		Utils.packColumns(repositoriesTable, 2);
+		repositoriesPanel.updateTable(true);
+		feedsPanel.updateTable(true);
 
-		if (gitblit.allowAdmin()) {
-			updateUsersTable();
+		if (gitblit.allowManagement()) {
+			if (gitblit.getProtocolVersion() >= 2) {
+				// refresh teams panel
+				teamsPanel.updateTable(false);
+			} else {
+				// remove teams panel
+				String teams = Translation.get("gb.teams");
+				for (int i = 0; i < tabs.getTabCount(); i++) {
+					if (teams.equals(tabs.getTitleAt(i))) {
+						tabs.removeTabAt(i);
+						break;
+					}
+				}
+			}
+			usersPanel.updateTable(false);
 		} else {
 			// user does not have administrator privileges
 			// hide admin repository buttons
-			createRepository.setVisible(false);
-			delRepository.setVisible(false);
+			repositoriesPanel.disableManagement();
 
-			// hide users panel
-			usersPanel.setVisible(false);
-
-			// remove federation tab
-			tabs.removeTabAt(1);
+			while (tabs.getTabCount() > 2) {
+				// remove all management/administration tabs
+				tabs.removeTabAt(2);
+			}
 		}
-	}
 
-	private void updateRepositoriesTable() {
-		repositoriesModel.list.clear();
-		repositoriesModel.list.addAll(gitblit.getRepositories());
-		repositoriesModel.fireTableDataChanged();
-	}
-
-	private void updateUsersTable() {
-		usersList.setListData(gitblit.getUsers().toArray());
-	}
-
-	private void filterRepositories(final String fragment) {
-		if (StringUtils.isEmpty(fragment)) {
-			repositoriesTable.setRowSorter(defaultSorter);
-			return;
-		}
-		RowFilter<RepositoriesModel, Object> containsFilter = new RowFilter<RepositoriesModel, Object>() {
-			public boolean include(Entry<? extends RepositoriesModel, ? extends Object> entry) {
-				for (int i = entry.getValueCount() - 1; i >= 0; i--) {
-					if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) {
-						return true;
+		if (gitblit.allowAdministration()) {
+			settingsPanel.updateTable(true);
+			statusPanel.updateTable(false);
+		} else {
+			// remove the settings and status tab
+			String[] titles = { Translation.get("gb.settings"), Translation.get("gb.status") };
+			for (String title : titles) {
+				for (int i = 0; i < tabs.getTabCount(); i++) {
+					if (tabs.getTitleAt(i).equals(title)) {
+						tabs.removeTabAt(i);
+						break;
 					}
 				}
-				return false;
 			}
-		};
-		RepositoriesModel model = (RepositoriesModel) repositoriesTable.getModel();
-		TableRowSorter<RepositoriesModel> sorter = new TableRowSorter<RepositoriesModel>(model);
-		sorter.setRowFilter(containsFilter);
-		repositoriesTable.setRowSorter(sorter);
-	}
-
-	private List<RepositoryModel> getSelectedRepositories() {
-		List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();
-		for (int viewRow : repositoriesTable.getSelectedRows()) {
-			int modelRow = repositoriesTable.convertRowIndexToModel(viewRow);
-			RepositoryModel model = ((RepositoriesModel) repositoriesTable.getModel()).list
-					.get(modelRow);
-			repositories.add(model);
 		}
-		return repositories;
-	}
-
-	private List<UserModel> getSelectedUsers() {
-		List<UserModel> users = new ArrayList<UserModel>();
-		for (int viewRow : usersList.getSelectedIndices()) {
-			UserModel model = (UserModel) usersList.getModel().getElementAt(viewRow);
-			users.add(model);
-		}
-		return users;
 	}
 
 	@Override
 	public Insets getInsets() {
-		return insets;
-	}
-
-	@Override
-	public Dimension getPreferredSize() {
-		if (gitblit.allowAdmin()) {
-			return new Dimension(950, 550);
-		}
-		return new Dimension(775, 450);
+		return Utils.INSETS;
 	}
 
 	@Override
@@ -416,283 +209,20 @@
 		gitblit = null;
 	}
 
-	protected void refreshRepositories() {
-		GitblitWorker worker = new GitblitWorker(GitblitPanel.this, RpcRequest.LIST_REPOSITORIES) {
-			@Override
-			protected Boolean doRequest() throws IOException {
-				gitblit.refreshRepositories();
-				return true;
-			}
+	protected void subscribeFeeds(final List<FeedModel> feeds) {
+		SubscriptionsDialog dialog = new SubscriptionsDialog(feeds) {
+
+			private static final long serialVersionUID = 1L;
 
 			@Override
-			protected void onSuccess() {
-				updateRepositoriesTable();
+			public void save() {
+				gitblit.updateSubscribedFeeds(feeds);
+				listener.saveRegistration(gitblit.reg.name, gitblit.reg);
+				setVisible(false);
+				repositoriesPanel.updateTable(false);
 			}
 		};
-		worker.execute();
-	}
-
-	/**
-	 * Displays the create repository dialog and fires a SwingWorker to update
-	 * the server, if appropriate.
-	 * 
-	 */
-	protected void createRepository() {
-		EditRepositoryDialog dialog = new EditRepositoryDialog();
-		dialog.setUsers(null, gitblit.getUsernames(), null);
-		dialog.setRepositories(gitblit.getRepositories());
+		dialog.setLocationRelativeTo(GitblitPanel.this);
 		dialog.setVisible(true);
-		final RepositoryModel newRepository = dialog.getRepository();
-		final List<String> permittedUsers = dialog.getPermittedUsers();
-		if (newRepository == null) {
-			return;
-		}
-
-		GitblitWorker worker = new GitblitWorker(this, RpcRequest.CREATE_REPOSITORY) {
-
-			@Override
-			protected Boolean doRequest() throws IOException {
-				boolean success = gitblit.createRepository(newRepository, permittedUsers);
-				if (success) {
-					gitblit.refreshRepositories();
-					if (permittedUsers.size() > 0) {
-						gitblit.refreshUsers();
-					}
-				}
-				return success;
-			}
-
-			@Override
-			protected void onSuccess() {
-				updateRepositoriesTable();
-				updateUsersTable();
-			}
-
-			@Override
-			protected void onFailure() {
-				showFailure("Failed to execute request \"{0}\" for repository \"{1}\".",
-						getRequestType(), newRepository.name);
-			}
-		};
-		worker.execute();
-	}
-
-	/**
-	 * Displays the edit repository dialog and fires a SwingWorker to update the
-	 * server, if appropriate.
-	 * 
-	 * @param repository
-	 */
-	protected void editRepository(final RepositoryModel repository) {
-		EditRepositoryDialog dialog = new EditRepositoryDialog(repository);
-		List<String> usernames = gitblit.getUsernames();
-		List<String> members = gitblit.getPermittedUsernames(repository);
-		dialog.setUsers(repository.owner, usernames, members);
-		dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets);
-		dialog.setVisible(true);
-		final RepositoryModel revisedRepository = dialog.getRepository();
-		final List<String> permittedUsers = dialog.getPermittedUsers();
-		if (revisedRepository == null) {
-			return;
-		}
-
-		GitblitWorker worker = new GitblitWorker(this, RpcRequest.EDIT_REPOSITORY) {
-
-			@Override
-			protected Boolean doRequest() throws IOException {
-				boolean success = gitblit.updateRepository(repository.name, revisedRepository,
-						permittedUsers);
-				if (success) {
-					gitblit.refreshRepositories();
-					gitblit.refreshUsers();
-				}
-				return success;
-			}
-
-			@Override
-			protected void onSuccess() {
-				updateRepositoriesTable();
-				updateUsersTable();
-			}
-
-			@Override
-			protected void onFailure() {
-				showFailure("Failed to execute request \"{0}\" for repository \"{1}\".",
-						getRequestType(), repository.name);
-			}
-		};
-		worker.execute();
-	}
-
-	protected void deleteRepositories(final List<RepositoryModel> repositories) {
-		if (repositories == null || repositories.size() == 0) {
-			return;
-		}
-		StringBuilder message = new StringBuilder("Delete the following repositories?\n\n");
-		for (RepositoryModel repository : repositories) {
-			message.append(repository.name).append("\n");
-		}
-		int result = JOptionPane.showConfirmDialog(GitblitPanel.this, message.toString(),
-				"Delete Repositories?", JOptionPane.YES_NO_OPTION);
-		if (result == JOptionPane.YES_OPTION) {
-			GitblitWorker worker = new GitblitWorker(this, RpcRequest.DELETE_REPOSITORY) {
-				@Override
-				protected Boolean doRequest() throws IOException {
-					boolean success = true;
-					for (RepositoryModel repository : repositories) {
-						success &= gitblit.deleteRepository(repository);
-					}
-					if (success) {
-						gitblit.refreshUsers();
-					}
-					return success;
-				}
-
-				@Override
-				protected void onSuccess() {
-					updateRepositoriesTable();
-					updateUsersTable();
-				}
-
-				@Override
-				protected void onFailure() {
-					showFailure("Failed to delete specified repositories!");
-				}
-			};
-			worker.execute();
-		}
-	}
-
-	protected void refreshUsers() {
-		GitblitWorker worker = new GitblitWorker(GitblitPanel.this, RpcRequest.LIST_USERS) {
-			@Override
-			protected Boolean doRequest() throws IOException {
-				gitblit.refreshUsers();
-				return true;
-			}
-
-			@Override
-			protected void onSuccess() {
-				updateUsersTable();
-			}
-		};
-		worker.execute();
-	}
-
-	/**
-	 * Displays the create user dialog and fires a SwingWorker to update the
-	 * server, if appropriate.
-	 * 
-	 */
-	protected void createUser() {
-		EditUserDialog dialog = new EditUserDialog(gitblit.getSettings());
-		dialog.setUsers(gitblit.getUsers());
-		dialog.setRepositories(gitblit.getRepositories(), null);
-		dialog.setVisible(true);
-		final UserModel newUser = dialog.getUser();
-		if (newUser == null) {
-			return;
-		}
-
-		GitblitWorker worker = new GitblitWorker(this, RpcRequest.CREATE_USER) {
-
-			@Override
-			protected Boolean doRequest() throws IOException {
-				boolean success = gitblit.createUser(newUser);
-				if (success) {
-					gitblit.refreshUsers();
-				}
-				return success;
-			}
-
-			@Override
-			protected void onSuccess() {
-				updateUsersTable();
-			}
-
-			@Override
-			protected void onFailure() {
-				showFailure("Failed to execute request \"{0}\" for user \"{1}\".",
-						getRequestType(), newUser.username);
-			}
-		};
-		worker.execute();
-	}
-
-	/**
-	 * Displays the edit user dialog and fires a SwingWorker to update the
-	 * server, if appropriate.
-	 * 
-	 * @param user
-	 */
-	protected void editUser(final UserModel user) {
-		EditUserDialog dialog = new EditUserDialog(user, gitblit.getSettings());
-		dialog.setRepositories(gitblit.getRepositories(), new ArrayList<String>(user.repositories));
-		dialog.setVisible(true);
-		final UserModel revisedUser = dialog.getUser();
-		if (revisedUser == null) {
-			return;
-		}
-
-		GitblitWorker worker = new GitblitWorker(this, RpcRequest.EDIT_USER) {
-			@Override
-			protected Boolean doRequest() throws IOException {
-				boolean success = gitblit.updateUser(user.username, revisedUser);
-				if (success) {
-					gitblit.refreshUsers();
-				}
-				return success;
-			}
-
-			@Override
-			protected void onSuccess() {
-				updateUsersTable();
-			}
-
-			@Override
-			protected void onFailure() {
-				showFailure("Failed to execute request \"{0}\" for user \"{1}\".",
-						getRequestType(), user.username);
-			}
-		};
-		worker.execute();
-	}
-
-	protected void deleteUsers(final List<UserModel> users) {
-		if (users == null || users.size() == 0) {
-			return;
-		}
-		StringBuilder message = new StringBuilder("Delete the following users?\n\n");
-		for (UserModel user : users) {
-			message.append(user.username).append("\n");
-		}
-		int result = JOptionPane.showConfirmDialog(GitblitPanel.this, message.toString(),
-				"Delete Users?", JOptionPane.YES_NO_OPTION);
-		if (result == JOptionPane.YES_OPTION) {
-			GitblitWorker worker = new GitblitWorker(this, RpcRequest.DELETE_USER) {
-				@Override
-				protected Boolean doRequest() throws IOException {
-					boolean success = true;
-					for (UserModel user : users) {
-						success &= gitblit.deleteUser(user);
-					}
-					if (success) {
-						gitblit.refreshUsers();
-					}
-					return success;
-				}
-
-				@Override
-				protected void onSuccess() {
-					updateUsersTable();
-				}
-
-				@Override
-				protected void onFailure() {
-					showFailure("Failed to delete specified users!");
-				}
-			};
-			worker.execute();
-		}
 	}
 }
\ No newline at end of file

--
Gitblit v1.9.1