]>
git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/jsch/swing/SwingUserInfo.java
bffa8a042f7c33be44097510a53846561a6e96ba
1 package org
.argeo
.slc
.jsch
.swing
;
3 import java
.awt
.Container
;
4 import java
.awt
.GridLayout
;
6 import java
.awt
.event
.ActionEvent
;
7 import java
.awt
.event
.ActionListener
;
8 import java
.util
.Arrays
;
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
;
17 import org
.argeo
.slc
.jsch
.SimpleUserInfo
;
19 public class SwingUserInfo
extends SimpleUserInfo
{
21 private Boolean alwaysPrompt
= false;
23 public boolean promptPassphrase(String message
) {
24 if (passphrase
!= null)
27 if (!alwaysPrompt
&& passphraseSafe
!= null)
30 PasswordDialog dialog
= new PasswordDialog(message
) {
31 private static final long serialVersionUID
= 3266299327166418364L;
34 protected void useCredentials(char[] password
) {
35 passphraseSafe
= new char[password
.length
];
36 System
.arraycopy(password
, 0, passphraseSafe
, 0,
38 // passphraseSafe = Arrays.copyOf(password, password.length);
41 dialog
.setVisible(true);
42 return dialog
.getWasProvided();
45 public boolean promptPassword(String message
) {
49 if (!alwaysPrompt
&& passwordSafe
!= null)
52 PasswordDialog dialog
= new PasswordDialog(message
) {
53 private static final long serialVersionUID
= 3266299327166418364L;
56 protected void useCredentials(char[] password
) {
57 // passwordSafe = Arrays.copyOf(password, password.length);
58 passwordSafe
= new char[password
.length
];
59 System
.arraycopy(password
, 0, passwordSafe
, 0, password
.length
);
62 dialog
.setVisible(true);
63 return dialog
.getWasProvided();
66 public void setAlwaysPrompt(Boolean alwaysPrompt
) {
67 this.alwaysPrompt
= alwaysPrompt
;
70 protected static class PasswordDialog
extends JDialog
implements
72 private static final long serialVersionUID
= 3399155607980846207L;
74 private static final String OK
= "ok";
76 private JPasswordField password
= new JPasswordField("", 10);
78 private JButton okButton
;
79 private JButton cancelButton
;
81 private Boolean wasProvided
= false;
83 public PasswordDialog(String title
) {
86 setLocationRelativeTo(null);
87 setDefaultCloseOperation(JFrame
.DISPOSE_ON_CLOSE
);
89 JPanel p1
= new JPanel(new GridLayout(1, 2, 3, 3));
90 p1
.add(new JLabel("Password"));
91 password
.setActionCommand(OK
);
92 password
.addActionListener(this);
96 Panel p2
= new Panel();
97 okButton
= addButton(p2
, "OK");
98 okButton
.setActionCommand(OK
);
99 cancelButton
= addButton(p2
, "Cancel");
106 /** To be overridden */
107 protected void useCredentials(char[] password
) {
111 private JButton
addButton(Container c
, String name
) {
112 JButton button
= new JButton(name
);
113 button
.addActionListener(this);
118 public final void actionPerformed(ActionEvent evt
) {
119 Object source
= evt
.getSource();
120 if (source
== okButton
|| evt
.getActionCommand().equals(OK
)) {
121 char[] p
= password
.getPassword();
126 } else if (source
== cancelButton
)
130 private void cleanUp() {
131 password
.setText("");
135 public Boolean
getWasProvided() {