]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/UserPasswordDialog.java
b43d6b0dc331b91c54b5ac9e5727de2342d7408c
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / core / UserPasswordDialog.java
1 package org.argeo.security.core;
2
3 import java.awt.Container;
4 import java.awt.GridLayout;
5 import java.awt.Panel;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
8 import java.util.Arrays;
9
10 import javax.swing.JButton;
11 import javax.swing.JDialog;
12 import javax.swing.JFrame;
13 import javax.swing.JLabel;
14 import javax.swing.JPanel;
15 import javax.swing.JPasswordField;
16 import javax.swing.JTextField;
17
18 public class UserPasswordDialog extends JDialog implements ActionListener {
19 private static final long serialVersionUID = -9052993072210981198L;
20 private static String OK = "ok";
21
22 private JTextField username = new JTextField("", 10);
23 private JPasswordField password = new JPasswordField("", 10);
24
25 private JButton okButton;
26 private JButton cancelButton;
27
28 public UserPasswordDialog() {
29 setTitle("Credentials");
30 setModal(true);
31 setLocationRelativeTo(null);
32 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
33
34 JPanel p1 = new JPanel(new GridLayout(2, 2, 3, 3));
35 p1.add(new JLabel("User"));
36 p1.add(username);
37 p1.add(new JLabel("Password"));
38 password.setActionCommand(OK);
39 password.addActionListener(this);
40 p1.add(password);
41 add("Center", p1);
42
43 Panel p2 = new Panel();
44 okButton = addButton(p2, "OK");
45 okButton.setActionCommand(OK);
46 cancelButton = addButton(p2, "Cancel");
47 add("South", p2);
48 setSize(240, 120);
49
50 pack();
51 }
52
53 /** To be overridden */
54 protected void useCredentials(String username, char[] password) {
55 // does nothing
56 }
57
58 private JButton addButton(Container c, String name) {
59 JButton button = new JButton(name);
60 button.addActionListener(this);
61 c.add(button);
62 return button;
63 }
64
65 public final void actionPerformed(ActionEvent evt) {
66 Object source = evt.getSource();
67 if (source == okButton || evt.getActionCommand().equals(OK)) {
68 char[] p = password.getPassword();
69 useCredentials(username.getText(), p);
70 Arrays.fill(p, '0');
71 cleanUp();
72 } else if (source == cancelButton)
73 cleanUp();
74 }
75
76 private void cleanUp() {
77 password.setText("");
78 dispose();
79 }
80
81 public static void main(String[] args) {
82 UserPasswordDialog dialog = new UserPasswordDialog() {
83 private static final long serialVersionUID = -891646559691412088L;
84
85 protected void useCredentials(String username, char[] password) {
86 System.out.println(username + "/" + new String(password));
87 }
88 };
89 dialog.setVisible(true);
90 System.out.println("After show");
91 }
92 }