From dfc4ece4083bbbb98f55291d05e7d2b1513464b7 Mon Sep 17 00:00:00 2001
From: Thomas Pummer <dev@nullpointer.at>
Date: Fri, 22 Feb 2013 11:10:11 -0500
Subject: [PATCH] the display-name in web.xml now shows the actual version of Gitblit

---
 src/com/gitblit/authority/UserCertificatePanel.java |  150 +++++++++++++++++++-------------------------------
 1 files changed, 57 insertions(+), 93 deletions(-)

diff --git a/src/com/gitblit/authority/UserCertificatePanel.java b/src/com/gitblit/authority/UserCertificatePanel.java
index 20727f6..0c49252 100644
--- a/src/com/gitblit/authority/UserCertificatePanel.java
+++ b/src/com/gitblit/authority/UserCertificatePanel.java
@@ -16,27 +16,23 @@
 package com.gitblit.authority;
 
 import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Cursor;
-import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.Frame;
-import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.io.IOException;
 import java.security.cert.X509Certificate;
+import java.text.MessageFormat;
 import java.util.Date;
 
 import javax.swing.ImageIcon;
 import javax.swing.JButton;
-import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
-import javax.swing.JTextField;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.TableRowSorter;
@@ -55,15 +51,8 @@
 	
 	private UserCertificateModel ucm;
 	
-	private JTextField displayname;
-	private JTextField username;
-	private JTextField emailAddress;
-	private JTextField organizationalUnit;
-	private JTextField organization;
-	private JTextField locality;
-	private JTextField stateProvince;
-	private JTextField countryCode;
-
+	private UserOidsPanel oidsPanel;
+	
 	private CertificatesTableModel tableModel;
 
 	private JButton saveUserButton;
@@ -80,29 +69,10 @@
 		super(new BorderLayout());
 		
 		this.owner = owner;
+		oidsPanel = new UserOidsPanel();
 		
-		displayname = new JTextField(20);
-		username = new JTextField(20);
-		username.setEditable(false);
-		emailAddress = new JTextField(20);
-		organizationalUnit = new JTextField(20);
-		organization = new JTextField(20);
-		locality = new JTextField(20);
-		stateProvince = new JTextField(20);
-		countryCode = new JTextField(20);
-				
-		JPanel fields = new JPanel(new GridLayout(0, 1, 5, 5));
-		fields.add(newFieldPanel(Translation.get("gb.displayName"), displayname));
-		fields.add(newFieldPanel(Translation.get("gb.username") + " (CN)", username));
-		fields.add(newFieldPanel(Translation.get("gb.emailAddress") + " (E)", emailAddress));
-		fields.add(newFieldPanel(Translation.get("gb.organizationalUnit") + " (OU)", organizationalUnit));
-		fields.add(newFieldPanel(Translation.get("gb.organization") + " (O)", organization));
-		fields.add(newFieldPanel(Translation.get("gb.locality") + " (L)", locality));
-		fields.add(newFieldPanel(Translation.get("gb.stateProvince") + " (ST)", stateProvince));
-		fields.add(newFieldPanel(Translation.get("gb.countryCode") + " (C)", countryCode));
-		
-		JPanel fp = new JPanel(new BorderLayout(5, 5));
-		fp.add(fields, BorderLayout.NORTH);
+		JPanel fp = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
+		fp.add(oidsPanel, BorderLayout.NORTH);
 		
 		JPanel fieldsPanel = new JPanel(new BorderLayout());
 		fieldsPanel.add(new HeaderPanel(Translation.get("gb.properties"), "vcard_16x16.png"), BorderLayout.NORTH);
@@ -114,7 +84,7 @@
 			public void actionPerformed(ActionEvent e) {
 				setEditable(false);
 				String username = ucm.user.username;
-				updateUser();
+				oidsPanel.updateUser(ucm);
 				saveUser(username, ucm);
 			}
 		});
@@ -176,31 +146,42 @@
 						// save changes
 						String username = ucm.user.username;
 						setEditable(false);
-						updateUser();
+						oidsPanel.updateUser(ucm);
 						saveUser(username, ucm);
 					}
 					
 					NewClientCertificateDialog dialog = new NewClientCertificateDialog(UserCertificatePanel.this.owner,
-							ucm.user.getDisplayName(), getDefaultExpiration());
+							ucm.user.getDisplayName(), getDefaultExpiration(), isAllowEmail());
 					dialog.setModal(true);
 					dialog.setVisible(true);
 					if (dialog.isCanceled()) {
 						return;
 					}
-					
-					setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
-					UserModel user = ucm.user;
-					X509Metadata metadata = new X509Metadata(user.username, dialog.getPassword());
+
+					final boolean sendEmail = dialog.sendEmail();
+					final UserModel user = ucm.user;
+					final X509Metadata metadata = new X509Metadata(user.username, dialog.getPassword());
 					metadata.userDisplayname = user.getDisplayName();
 					metadata.emailAddress = user.emailAddress;				
 					metadata.passwordHint = dialog.getPasswordHint();
 					metadata.notAfter = dialog.getExpiration();
 
-					newCertificate(ucm, metadata, dialog.sendEmail());
+					AuthorityWorker worker = new AuthorityWorker(UserCertificatePanel.this.owner) {
+						@Override
+						protected Boolean doRequest() throws IOException {
+							return newCertificate(ucm, metadata, sendEmail);
+						}
+
+						@Override
+						protected void onSuccess() {
+							JOptionPane.showMessageDialog(UserCertificatePanel.this.owner, 
+									MessageFormat.format(Translation.get("gb.clientCertificateGenerated"), user.getDisplayName()),
+									Translation.get("gb.newCertificate"), JOptionPane.INFORMATION_MESSAGE);
+						}
+					};
+					worker.execute();					
 				} catch (Exception x) {
 					Utils.showException(UserCertificatePanel.this, x);
-				} finally {
-					setCursor(Cursor.getDefaultCursor());
 				}
 			}
 		});
@@ -215,7 +196,7 @@
 						return;
 					}
 					int modelIndex = table.convertRowIndexToModel(row);
-					X509Certificate cert = tableModel.get(modelIndex);
+					final X509Certificate cert = tableModel.get(modelIndex);
 					
 					String [] choices = new String[RevocationReason.reasons.length];
 					for (int i = 0; i < choices.length; i++) {
@@ -224,17 +205,18 @@
 					
 					Object choice = JOptionPane.showInputDialog(UserCertificatePanel.this.owner,
 							Translation.get("gb.revokeCertificateReason"), Translation.get("gb.revokeCertificate"),
-							JOptionPane.PLAIN_MESSAGE, new ImageIcon(getClass().getResource("/rosette_16x16.png")), choices, Translation.get("gb.unspecified"));
+							JOptionPane.PLAIN_MESSAGE, new ImageIcon(getClass().getResource("/rosette_32x32.png")), choices, Translation.get("gb.unspecified"));
 					if (choice == null) {
 						return;
 					}
-					RevocationReason reason = RevocationReason.unspecified;
+					RevocationReason selection = RevocationReason.unspecified;
 					for (int i = 0 ; i < choices.length; i++) {
 						if (choices[i].equals(choice)) {
-							reason = RevocationReason.reasons[i];
+							selection = RevocationReason.reasons[i];
 							break;
 						}
 					}
+					final RevocationReason reason = selection;
 					if (!ucm.isRevoked(cert.getSerialNumber())) {
 						if (ucm.certs.size() == 1) {
 							// no other certificates
@@ -253,12 +235,26 @@
 							}
 							ucm.expires = newExpires;
 						}
-						revoke(ucm, cert, reason);
+						
+						AuthorityWorker worker = new AuthorityWorker(UserCertificatePanel.this.owner) {
+
+							@Override
+							protected Boolean doRequest() throws IOException {
+								return revoke(ucm, cert, reason);
+							}
+
+							@Override
+							protected void onSuccess() {
+								JOptionPane.showMessageDialog(UserCertificatePanel.this.owner, 
+										MessageFormat.format(Translation.get("gb.certificateRevoked"), cert.getSerialNumber(), cert.getIssuerDN().getName()),
+										Translation.get("gb.revokeCertificate"), JOptionPane.INFORMATION_MESSAGE);
+							}
+							
+						};
+						worker.execute();
 					}
 				} catch (Exception x) {
 					Utils.showException(UserCertificatePanel.this, x);
-				} finally {
-					setCursor(Cursor.getDefaultCursor());
 				}
 			}
 		});
@@ -273,40 +269,18 @@
 		setEditable(false);
 	}
 	
-	private JPanel newFieldPanel(String label, Component c) {
-		JLabel jlabel = new JLabel(label);
-		jlabel.setPreferredSize(new Dimension(150, 20));
-		JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
-		panel.add(jlabel);
-		panel.add(c);
-		return panel;
-	}
-	
 	public void setUserCertificateModel(UserCertificateModel ucm) {
 		this.ucm = ucm;
 		setEditable(false);
-		displayname.setText(ucm.user.getDisplayName());
-		username.setText(ucm.user.username);
-		emailAddress.setText(ucm.user.emailAddress);
-		organizationalUnit.setText(ucm.user.organizationalUnit);
-		organization.setText(ucm.user.organization);
-		locality.setText(ucm.user.locality);
-		stateProvince.setText(ucm.user.stateProvince);
-		countryCode.setText(ucm.user.countryCode);
+		oidsPanel.setUserCertificateModel(ucm);
 		
 		tableModel.setUserCertificateModel(ucm);
 		tableModel.fireTableDataChanged();
+		Utils.packColumns(table, Utils.MARGIN);
 	}
 	
 	public void setEditable(boolean editable) {
-		displayname.setEditable(editable);
-//		username.setEditable(editable);
-		emailAddress.setEditable(editable);
-		organizationalUnit.setEditable(editable);
-		organization.setEditable(editable);
-		locality.setEditable(editable);
-		stateProvince.setEditable(editable);
-		countryCode.setEditable(editable);
+		oidsPanel.setEditable(editable);
 		
 		editUserButton.setEnabled(!editable && ucm != null);
 		saveUserButton.setEnabled(editable && ucm != null);
@@ -315,20 +289,10 @@
 		revokeCertificateButton.setEnabled(false);
 	}
 	
-	private void updateUser() {
-		ucm.user.displayName = displayname.getText();
-		ucm.user.username = username.getText();
-		ucm.user.emailAddress = emailAddress.getText();
-		ucm.user.organizationalUnit = organizationalUnit.getText();
-		ucm.user.organization = organization.getText();
-		ucm.user.locality = locality.getText();
-		ucm.user.stateProvince = stateProvince.getText();
-		ucm.user.countryCode = countryCode.getText();
-	}
-	
 	public abstract Date getDefaultExpiration();
+	public abstract boolean isAllowEmail();
 	
-	public abstract void saveUser(String username, UserCertificateModel ucm);
-	public abstract void newCertificate(UserCertificateModel ucm, X509Metadata metadata, boolean sendEmail);
-	public abstract void revoke(UserCertificateModel ucm, X509Certificate cert, RevocationReason reason);
+	public abstract boolean saveUser(String username, UserCertificateModel ucm);
+	public abstract boolean newCertificate(UserCertificateModel ucm, X509Metadata metadata, boolean sendEmail);
+	public abstract boolean revoke(UserCertificateModel ucm, X509Certificate cert, RevocationReason reason);
 }

--
Gitblit v1.9.1