1 19 package org.columba.mail.gui.util; 20 21 import java.awt.BorderLayout ; 22 import java.awt.GridBagConstraints ; 23 import java.awt.GridBagLayout ; 24 import java.awt.GridLayout ; 25 import java.awt.Insets ; 26 import java.awt.event.ActionEvent ; 27 import java.awt.event.ActionListener ; 28 import java.awt.event.KeyEvent ; 29 import java.io.File ; 30 31 import javax.swing.BorderFactory ; 32 import javax.swing.JButton ; 33 import javax.swing.JCheckBox ; 34 import javax.swing.JComponent ; 35 import javax.swing.JDialog ; 36 import javax.swing.JLabel ; 37 import javax.swing.JOptionPane ; 38 import javax.swing.JPanel ; 39 import javax.swing.JPasswordField ; 40 import javax.swing.KeyStroke ; 41 42 import org.columba.core.config.DefaultConfigDirectory; 43 import org.columba.core.gui.base.ButtonWithMnemonic; 44 import org.columba.core.gui.frame.FrameManager; 45 import org.columba.core.resourceloader.ImageLoader; 46 import org.columba.mail.util.MailResourceLoader; 47 48 53 public class PasswordDialog extends JDialog implements ActionListener { 54 private char[] password; 55 56 private boolean bool = false; 57 58 private JPasswordField passwordField; 59 60 private JCheckBox checkbox; 61 62 private JButton okButton; 63 64 private JButton cancelButton; 65 66 private JButton helpButton; 67 68 public PasswordDialog() { 69 super(FrameManager.getInstance().getActiveFrame(), true); 70 71 } 72 73 protected JPanel createButtonPanel() { 74 JPanel bottom = new JPanel (); 75 bottom.setLayout(new BorderLayout ()); 76 77 bottom.setBorder(BorderFactory.createEmptyBorder(17, 12, 11, 11)); 79 80 cancelButton = new ButtonWithMnemonic(MailResourceLoader.getString( 82 "global", "cancel")); 83 84 cancelButton.addActionListener(this); 86 cancelButton.setActionCommand("CANCEL"); 88 okButton = new ButtonWithMnemonic(MailResourceLoader.getString( 89 "global", "ok")); 90 91 okButton.addActionListener(this); 93 okButton.setActionCommand("OK"); okButton.setDefaultCapable(true); 95 getRootPane().setDefaultButton(okButton); 96 97 helpButton = new ButtonWithMnemonic(MailResourceLoader.getString( 98 "global", "help")); 99 100 JPanel buttonPanel = new JPanel (); 102 buttonPanel.setLayout(new GridLayout (1, 3, 5, 0)); 103 buttonPanel.add(okButton); 104 buttonPanel.add(cancelButton); 105 buttonPanel.add(helpButton); 106 107 bottom.add(buttonPanel, BorderLayout.EAST); 109 110 return bottom; 111 } 112 113 129 public void showDialog(String message, String password, boolean save) { 130 131 136 JLabel hostLabel = new JLabel (message); 137 138 passwordField = new JPasswordField (password, 40); 139 140 checkbox = new JCheckBox (MailResourceLoader.getString("dialog", 141 "password", "save_password")); 142 checkbox.setSelected(save); 143 checkbox.setActionCommand("SAVE"); 144 checkbox.addActionListener(this); 145 146 setTitle(MailResourceLoader.getString("dialog", "password", 147 "dialog_title")); 148 149 JPanel centerPanel = new JPanel (); 150 centerPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); 151 152 getContentPane().add(centerPanel, BorderLayout.CENTER); 153 154 GridBagLayout mainLayout = new GridBagLayout (); 155 centerPanel.setLayout(mainLayout); 156 157 GridBagConstraints mainConstraints = new GridBagConstraints (); 158 159 JLabel iconLabel = new JLabel (ImageLoader 160 .getMiscIcon("signature-nokey.png")); 161 mainConstraints.anchor = GridBagConstraints.NORTHWEST; 162 mainConstraints.weightx = 1.0; 163 mainConstraints.gridwidth = GridBagConstraints.RELATIVE; 164 mainConstraints.fill = GridBagConstraints.HORIZONTAL; 165 mainLayout.setConstraints(iconLabel, mainConstraints); 166 centerPanel.add(iconLabel); 167 168 mainConstraints.gridwidth = GridBagConstraints.REMAINDER; 169 mainConstraints.anchor = GridBagConstraints.WEST; 170 mainConstraints.insets = new Insets (0, 5, 0, 0); 171 mainLayout.setConstraints(hostLabel, mainConstraints); 172 centerPanel.add(hostLabel); 173 174 mainConstraints.insets = new Insets (5, 5, 0, 0); 175 mainLayout.setConstraints(passwordField, mainConstraints); 176 centerPanel.add(passwordField); 177 178 mainConstraints.insets = new Insets (5, 5, 0, 0); 179 mainLayout.setConstraints(checkbox, mainConstraints); 180 centerPanel.add(checkbox); 181 182 JPanel bottomPanel = new JPanel (); 183 bottomPanel.setLayout(new BorderLayout ()); 184 185 JPanel buttonPanel = createButtonPanel(); 186 bottomPanel.add(buttonPanel, BorderLayout.CENTER); 187 188 getContentPane().add(bottomPanel, BorderLayout.SOUTH); 189 getRootPane().setDefaultButton(okButton); 190 getRootPane().registerKeyboardAction(this, "CANCEL", 191 KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), 192 JComponent.WHEN_IN_FOCUSED_WINDOW); 193 pack(); 194 setLocationRelativeTo(null); 195 setVisible(true); 196 requestFocus(); 197 passwordField.requestFocus(); 198 } 199 200 public char[] getPassword() { 201 return password; 202 } 203 204 public boolean success() { 205 return bool; 206 } 207 208 public boolean getSave() { 209 return checkbox.isSelected(); 210 } 211 212 public void actionPerformed(ActionEvent e) { 213 String action = e.getActionCommand(); 214 215 if (action.equals("OK")) { 216 password = passwordField.getPassword(); 217 218 bool = true; 219 dispose(); 220 } else if (action.equals("CANCEL")) { 221 bool = false; 222 dispose(); 223 } else if (action.equals("SAVE")) { 224 if (!checkbox.isSelected()) { 225 return; 226 } else { 227 File configPath = DefaultConfigDirectory.getInstance().getCurrentPath(); 228 File defaultConfigPath = DefaultConfigDirectory.getDefaultPath(); 229 while (!configPath.equals(defaultConfigPath)) { 230 configPath = configPath.getParentFile(); 231 if (configPath == null) { 232 JOptionPane.showMessageDialog(this, MailResourceLoader 233 .getString("dialog", "password", 234 "warn_save_msg"), MailResourceLoader 235 .getString("dialog", "password", 236 "warn_save_title"), 237 JOptionPane.WARNING_MESSAGE); 238 return; 239 } 240 } 241 } 242 } 243 } 244 } | Popular Tags |