From 27ae9095639bb228a1b7ff86a3ebe4264abf05be Mon Sep 17 00:00:00 2001
From: mschaefers <mschaefers@scoop-gmbh.de>
Date: Thu, 29 Nov 2012 12:33:09 -0500
Subject: [PATCH] feature: when using LdapUserService one can configure Gitblit to fetch all users from ldap that can possibly login. This allows to see newly generated LDAP users instantly in Gitblit. By now an LDAP user had to log in once to appear in GitBlit.
---
src/com/gitblit/client/RegistrationsDialog.java | 81 +++++++++++++++++++++++++++++-----------
1 files changed, 58 insertions(+), 23 deletions(-)
diff --git a/src/com/gitblit/client/RegistrationsDialog.java b/src/com/gitblit/client/RegistrationsDialog.java
index ae53d5f..9550e97 100644
--- a/src/com/gitblit/client/RegistrationsDialog.java
+++ b/src/com/gitblit/client/RegistrationsDialog.java
@@ -38,14 +38,22 @@
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
+/**
+ * Displays a list of registrations and allows management of server
+ * registrations.
+ *
+ * @author James Moger
+ *
+ */
public class RegistrationsDialog extends JDialog {
interface RegistrationListener {
- boolean deleteRegistrations(List<GitblitRegistration> list);
-
- void loginPrompt(GitblitRegistration reg);
void login(GitblitRegistration reg);
+
+ boolean saveRegistration(String name, GitblitRegistration reg);
+
+ boolean deleteRegistrations(List<GitblitRegistration> list);
}
private static final long serialVersionUID = 1L;
@@ -56,7 +64,7 @@
private JTable registrationsTable;
- private RegistrationsModel model;
+ private RegistrationsTableModel model;
public RegistrationsDialog(List<GitblitRegistration> registrations,
RegistrationListener listener) {
@@ -83,16 +91,16 @@
private void initialize() {
NameRenderer nameRenderer = new NameRenderer();
- model = new RegistrationsModel(registrations);
- registrationsTable = Utils.newTable(model);
- registrationsTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
+ model = new RegistrationsTableModel(registrations);
+ registrationsTable = Utils.newTable(model, Utils.DATE_FORMAT);
- String id = registrationsTable.getColumnName(RegistrationsModel.Columns.Name.ordinal());
+ String id = registrationsTable
+ .getColumnName(RegistrationsTableModel.Columns.Name.ordinal());
registrationsTable.getColumn(id).setCellRenderer(nameRenderer);
registrationsTable.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
- login(false);
+ login();
}
}
});
@@ -100,8 +108,7 @@
final JButton create = new JButton(Translation.get("gb.create"));
create.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
- RegistrationsDialog.this.setVisible(false);
- listener.loginPrompt(GitblitRegistration.LOCALHOST);
+ create();
}
});
@@ -109,15 +116,15 @@
login.setEnabled(false);
login.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
- login(false);
+ login();
}
});
- final JButton loginPrompt = new JButton(Translation.get("gb.login") + "...");
- loginPrompt.setEnabled(false);
- loginPrompt.addActionListener(new ActionListener() {
+ final JButton edit = new JButton(Translation.get("gb.edit"));
+ edit.setEnabled(false);
+ edit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
- login(true);
+ edit();
}
});
@@ -139,7 +146,7 @@
boolean singleSelection = registrationsTable.getSelectedRowCount() == 1;
boolean selected = registrationsTable.getSelectedRow() > -1;
login.setEnabled(singleSelection);
- loginPrompt.setEnabled(singleSelection);
+ edit.setEnabled(singleSelection);
delete.setEnabled(selected);
}
});
@@ -147,7 +154,7 @@
JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
controls.add(create);
controls.add(login);
- controls.add(loginPrompt);
+ controls.add(edit);
controls.add(delete);
final Insets insets = new Insets(5, 5, 5, 5);
@@ -159,6 +166,7 @@
return insets;
}
};
+ centerPanel.add(new HeaderPanel(Translation.get("gb.servers"), null), BorderLayout.NORTH);
centerPanel.add(new JScrollPane(registrationsTable), BorderLayout.CENTER);
centerPanel.add(controls, BorderLayout.SOUTH);
@@ -166,15 +174,42 @@
getContentPane().add(centerPanel, BorderLayout.CENTER);
}
- private void login(boolean prompt) {
+ private void login() {
int viewRow = registrationsTable.getSelectedRow();
int modelRow = registrationsTable.convertRowIndexToModel(viewRow);
GitblitRegistration reg = registrations.get(modelRow);
RegistrationsDialog.this.setVisible(false);
- if (prompt) {
- listener.loginPrompt(reg);
- } else {
- listener.login(reg);
+ listener.login(reg);
+ }
+
+ private void create() {
+ EditRegistrationDialog dialog = new EditRegistrationDialog(getOwner());
+ dialog.setLocationRelativeTo(this);
+ dialog.setVisible(true);
+ GitblitRegistration reg = dialog.getRegistration();
+ if (reg == null) {
+ return;
+ }
+ if (listener.saveRegistration(reg.name, reg)) {
+ model.list.add(reg);
+ model.fireTableDataChanged();
+ }
+ }
+
+ private void edit() {
+ int viewRow = registrationsTable.getSelectedRow();
+ int modelRow = registrationsTable.convertRowIndexToModel(viewRow);
+ GitblitRegistration reg = registrations.get(modelRow);
+ String originalName = reg.name;
+ EditRegistrationDialog dialog = new EditRegistrationDialog(getOwner(), reg, false);
+ dialog.setLocationRelativeTo(this);
+ dialog.setVisible(true);
+ reg = dialog.getRegistration();
+ if (reg == null) {
+ return;
+ }
+ if (listener.saveRegistration(originalName, reg)) {
+ model.fireTableDataChanged();
}
}
--
Gitblit v1.9.1