diff options
Diffstat (limited to 'java/com/tigervnc/vncviewer/PasswdDialog.java')
-rw-r--r-- | java/com/tigervnc/vncviewer/PasswdDialog.java | 175 |
1 files changed, 103 insertions, 72 deletions
diff --git a/java/com/tigervnc/vncviewer/PasswdDialog.java b/java/com/tigervnc/vncviewer/PasswdDialog.java index edd95540..26a138d6 100644 --- a/java/com/tigervnc/vncviewer/PasswdDialog.java +++ b/java/com/tigervnc/vncviewer/PasswdDialog.java @@ -22,13 +22,20 @@ package com.tigervnc.vncviewer; import java.awt.*; import java.awt.event.*; import javax.swing.*; + import com.jcraft.jsch.*; +import com.tigervnc.rfb.*; + +import static java.awt.GridBagConstraints.HORIZONTAL; +import static java.awt.GridBagConstraints.LINE_START; +import static java.awt.GridBagConstraints.NONE; +import static java.awt.GridBagConstraints.REMAINDER; -class PasswdDialog extends Dialog implements KeyListener, - UserInfo, +class PasswdDialog extends Dialog implements UserInfo, UIKeyboardInteractive { - public PasswdDialog(String title, boolean userDisabled, boolean passwdDisabled) { + public PasswdDialog(String title, + boolean userDisabled, boolean passwdDisabled) { super(true); setResizable(false); setTitle(title); @@ -38,28 +45,45 @@ class PasswdDialog extends Dialog implements KeyListener, } }); - JPanel p1 = new JPanel(); + JPanel p1 = new JPanel(new GridBagLayout()); + p1.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + userLabel = new JLabel("Username:"); - p1.add(userLabel); + userLabel.setEnabled(!userDisabled); + p1.add(userLabel, new GridBagConstraints(0, 0, + 1, 1, + LIGHT, LIGHT, + LINE_START, NONE, + new Insets(0, 0, 0, 0), + NONE, NONE)); userEntry = new JTextField(30); userEntry.setEnabled(!userDisabled); - userLabel.setEnabled(!userDisabled); - p1.add(userEntry); - userEntry.addKeyListener(this); + p1.add(userEntry, new GridBagConstraints(1, 0, + 1, 1, + HEAVY, LIGHT, + LINE_START, REMAINDER, + new Insets(0, 5, 0, 0), + NONE, NONE)); - JPanel p2 = new JPanel(); passwdLabel = new JLabel("Password:"); - passwdLabel.setPreferredSize(userLabel.getPreferredSize()); - p2.add(passwdLabel); + passwdLabel.setEnabled(!passwdDisabled); + p1.add(passwdLabel, new GridBagConstraints(0, 1, + 1, 1, + LIGHT, LIGHT, + LINE_START, NONE, + new Insets(5, 0, 0, 0), + NONE, NONE)); passwdEntry = new JPasswordField(30); passwdEntry.setEnabled(!passwdDisabled); - passwdLabel.setEnabled(!passwdDisabled); - p2.add(passwdEntry); - passwdEntry.addKeyListener(this); + p1.add(passwdEntry, new GridBagConstraints(1, 1, + 1, 1, + HEAVY, LIGHT, + LINE_START, REMAINDER, + new Insets(5, 5, 0, 0), + NONE, NONE)); - getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS)); - getContentPane().add(p1); - getContentPane().add(p2); + this.add(p1); + addListeners(this); pack(); if (userEntry.isEnabled()) { userEntry.requestFocus(); @@ -68,10 +92,6 @@ class PasswdDialog extends Dialog implements KeyListener, } } - /** Handle the key-typed event. */ - public void keyTyped(KeyEvent event) { } - /** Handle the key-released event. */ - public void keyReleased(KeyEvent event) { } /** Handle the key-pressed event. */ public void keyPressed(KeyEvent event) { Object s = event.getSource(); @@ -79,7 +99,8 @@ class PasswdDialog extends Dialog implements KeyListener, if (event.getKeyCode() == KeyEvent.VK_ENTER) { endDialog(); } - } else if (s instanceof JPasswordField && (JPasswordField)s == passwdEntry) { + } else if (s instanceof JPasswordField + && (JPasswordField)s == passwdEntry) { if (event.getKeyCode() == KeyEvent.VK_ENTER) { endDialog(); } @@ -89,81 +110,90 @@ class PasswdDialog extends Dialog implements KeyListener, public String getPassword() { return new String(passwdEntry.getPassword()); } - public String getPassphrase(){ return null; } - public boolean promptPassphrase(String message){ return false; } - public boolean promptPassword(String message){ + + public String getPassphrase() { return null; } + public boolean promptPassphrase(String message) { return false; } + + public boolean promptPassword(String message) { setTitle(message); showDialog(); - if (passwdEntry != null) - return true; + if (userEntry.isEnabled()) + if (userEntry.getText().equals("")) + return false; + if (passwdEntry.isEnabled()) + if (!passwdEntry.getText().equals("")) + return true; return false; } - public void showMessage(String message){ - JOptionPane.showMessageDialog(null, message); + + public void showMessage(String message) { + JOptionPane.showMessageDialog(null, message, "Message", + JOptionPane.PLAIN_MESSAGE); } - public boolean promptYesNo(String str){ - Object[] options={ "yes", "no" }; - int foo=JOptionPane.showOptionDialog(null, + + public boolean promptYesNo(String str) { + Object[] options={ "YES", "NO" }; + int ret=JOptionPane.showOptionDialog(null, str, "Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); - return foo==0; + return (ret == 0); } + public String[] promptKeyboardInteractive(String destination, String name, String instruction, String[] prompt, - boolean[] echo){ - Container panel = new JPanel(); - panel.setLayout(new GridBagLayout()); - - GridBagConstraints gbc = - new GridBagConstraints(0,0,1,1,1,1, - GridBagConstraints.NORTHWEST, - GridBagConstraints.NONE, - new Insets(0,0,0,0),0,0); - gbc.weightx = 1.0; - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.gridx = 0; - panel.add(new JLabel(instruction), gbc); - gbc.gridy++; - - gbc.gridwidth = GridBagConstraints.RELATIVE; + boolean[] echo) { + vlog.info("OK"); + Container panel = new JPanel(new GridBagLayout()); + ((JPanel)panel).setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + panel.add(new JLabel(instruction), + new GridBagConstraints(0, 0, + REMAINDER, 1, + LIGHT, LIGHT, + LINE_START, NONE, + new Insets(0, 0, 0, 0), + NONE, NONE)); JTextField[] texts=new JTextField[prompt.length]; - for(int i=0; i<prompt.length; i++){ - gbc.fill = GridBagConstraints.NONE; - gbc.gridx = 0; - gbc.weightx = 1; - panel.add(new JLabel(prompt[i]),gbc); - - gbc.gridx = 1; - gbc.fill = GridBagConstraints.HORIZONTAL; - gbc.weighty = 1; - if(echo[i]){ + for (int i = 0; i < prompt.length; i++) { + panel.add(new JLabel(prompt[i]), + new GridBagConstraints(0, i+1, + 1, 1, + LIGHT, LIGHT, + LINE_START, NONE, + new Insets(5, 0, 0, 0), + NONE, NONE)); + + if(echo[i]) texts[i]=new JTextField(20); - } - else{ + else texts[i]=new JPasswordField(20); - } - panel.add(texts[i], gbc); - gbc.gridy++; + + panel.add(texts[i], + new GridBagConstraints(1, i+1, + 1, 1, + HEAVY, LIGHT, + LINE_START, HORIZONTAL, + new Insets(5, 5, 0, 0), + NONE, NONE)); } - if(JOptionPane.showConfirmDialog(null, panel, - destination+": "+name, - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE) - ==JOptionPane.OK_OPTION){ + if (JOptionPane.showConfirmDialog(null, panel, + destination+": "+name, + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE) + == JOptionPane.OK_OPTION) { String[] response=new String[prompt.length]; for(int i=0; i<prompt.length; i++){ response[i]=texts[i].getText(); } - return response; - } - else{ + return response; + } else{ return null; // cancel } } @@ -172,4 +202,5 @@ class PasswdDialog extends Dialog implements KeyListener, JTextField userEntry; JLabel passwdLabel; JPasswordField passwdEntry; + static LogWriter vlog = new LogWriter("PasswdDialog"); } |