| 1 28 package net.sf.jguard.example.swing; 29 30 import java.awt.Dialog ; 31 import java.awt.Frame ; 32 import java.awt.GridLayout ; 33 import java.awt.event.ActionEvent ; 34 import java.awt.event.ActionListener ; 35 import java.io.IOException ; 36 37 import javax.security.auth.callback.Callback ; 38 import javax.security.auth.callback.CallbackHandler ; 39 import javax.security.auth.callback.NameCallback ; 40 import javax.security.auth.callback.PasswordCallback ; 41 import javax.security.auth.callback.UnsupportedCallbackException ; 42 import javax.swing.JButton ; 43 import javax.swing.JDialog ; 44 import javax.swing.JLabel ; 45 import javax.swing.JPasswordField ; 46 import javax.swing.JTextField ; 47 48 52 public class SwingCallbackHandler implements CallbackHandler { 53 54 private JDialog dialog; 55 private JTextField nameField; 56 private JPasswordField passwordField; 57 58 private static final int NB_ROWS = 3; 59 60 public SwingCallbackHandler(Frame parent) { 61 dialog = new JDialog (parent, true); 62 dialog.getContentPane().setLayout(new GridLayout (NB_ROWS,2)); 63 dialog.setLocation(parent.getLocation()); 64 } 65 66 public void handle(Callback [] callbacks) throws IOException , UnsupportedCallbackException { 67 for(int i=0; i < callbacks.length && i < NB_ROWS ; i++){ 68 if(callbacks[i] instanceof NameCallback ){ 69 NameCallback nameCallback = (NameCallback ) callbacks[i]; 70 dialog.getContentPane().add(new JLabel (nameCallback.getPrompt())); 71 nameField = new JTextField (); 72 dialog.getContentPane().add(nameField); 73 }else if(callbacks[i] instanceof PasswordCallback ){ 74 PasswordCallback passwordCallback = (PasswordCallback ) callbacks[i]; 75 dialog.getContentPane().add(new JLabel (passwordCallback.getPrompt())); 76 passwordField = new JPasswordField (); 77 dialog.getContentPane().add(passwordField); 78 } 79 } 80 JButton ok = new JButton ("ok"); 81 ConfirmListener listener = new ConfirmListener(dialog); 82 ok.addActionListener(listener); 83 dialog.getContentPane().add(ok); 84 dialog.setSize(200, 100); 85 dialog.pack(); 86 dialog.setVisible(true); 87 88 for(int i=0; i < callbacks.length && i < NB_ROWS ; i++){ 89 if(callbacks[i] instanceof NameCallback ){ 90 NameCallback nameCallback = (NameCallback ) callbacks[i]; 91 nameCallback.setName(nameField.getText()); 92 }else if(callbacks[i] instanceof PasswordCallback ){ 93 PasswordCallback passwordCallback = (PasswordCallback ) callbacks[i]; 94 passwordCallback.setPassword(passwordField.getPassword()); 95 } 96 } 97 } 98 99 } 100 101 class ConfirmListener implements ActionListener { 102 103 private Dialog dialog; 104 105 public ConfirmListener(Dialog dialog){ 106 this.dialog = dialog; 107 } 108 109 public void actionPerformed(ActionEvent e) { 110 dialog.dispose(); 111 } 112 113 } 114 | Popular Tags |