1 17 package org.columba.mail.gui.config.account; 18 19 import java.awt.Component ; 20 import java.awt.event.ActionEvent ; 21 import java.awt.event.ActionListener ; 22 import java.io.File ; 23 24 import javax.swing.JButton ; 25 import javax.swing.JCheckBox ; 26 import javax.swing.JComboBox ; 27 import javax.swing.JFileChooser ; 28 import javax.swing.JLabel ; 29 import javax.swing.JTextField ; 30 31 import org.columba.core.gui.base.CheckBoxWithMnemonic; 32 import org.columba.core.gui.base.LabelWithMnemonic; 33 import org.columba.mail.config.SecurityItem; 34 import org.columba.mail.util.MailResourceLoader; 35 36 import com.jgoodies.forms.builder.DefaultFormBuilder; 37 import com.jgoodies.forms.layout.FormLayout; 38 39 42 public class SecurityPanel extends DefaultPanel implements ActionListener { 43 private JLabel idLabel; 44 45 private JTextField idTextField; 46 47 private JLabel typeLabel; 48 49 private JComboBox typeComboBox; 50 51 private JLabel pathLabel; 52 53 private JButton pathButton; 54 55 private JCheckBox enableCheckBox; 56 57 private JCheckBox alwaysSignCheckBox; 58 59 private JCheckBox alwaysEncryptCheckBox; 60 61 private SecurityItem item; 62 63 public SecurityPanel(SecurityItem item) { 64 super(); 65 this.item = item; 66 67 initComponents(); 68 updateComponents(true); 69 layoutComponents(); 70 71 } 73 74 protected void updateComponents(boolean b) { 75 if (b) { 76 idTextField.setText(item.get(SecurityItem.ID)); 77 pathButton.setText(item.get(SecurityItem.PATH)); 78 79 enableCheckBox.setSelected(item.getBoolean(SecurityItem.ENABLED)); 80 81 alwaysSignCheckBox.setSelected(item 82 .getBoolean(SecurityItem.ALWAYS_SIGN)); 83 alwaysEncryptCheckBox.setSelected(item 84 .getBoolean(SecurityItem.ALWAYS_ENCRYPT)); 85 86 enablePGP(enableCheckBox.isSelected()); 87 } else { 88 item.setString(SecurityItem.ID, idTextField.getText()); 89 item.setString(SecurityItem.PATH, pathButton.getText()); 90 91 item.setBoolean(SecurityItem.ENABLED, enableCheckBox.isSelected()); 92 93 item.setBoolean(SecurityItem.ALWAYS_SIGN, alwaysSignCheckBox 94 .isSelected()); 95 item.setBoolean(SecurityItem.ALWAYS_ENCRYPT, alwaysEncryptCheckBox 96 .isSelected()); 97 } 98 } 99 100 protected void layoutComponents() { 101 FormLayout layout = new FormLayout( 103 "10dlu, max(70dlu;default), 3dlu, fill:max(150dlu;default):grow ", 104 105 ""); 108 DefaultFormBuilder builder = new DefaultFormBuilder(layout, this); 110 111 builder.setDefaultDialogBorder(); 113 114 builder.setLeadingColumnOffset(1); 116 117 builder.appendSeparator(MailResourceLoader.getString("dialog", 119 "account", "pgp_options")); 120 builder.nextLine(); 121 122 builder.append(enableCheckBox, 3); 123 builder.nextLine(); 124 125 builder.append(idLabel, 1); 126 builder.append(idTextField); 127 builder.nextLine(); 128 129 builder.append(alwaysSignCheckBox, 3); 130 builder.nextLine(); 131 132 136 } 137 138 protected void initComponents() { 139 enableCheckBox = new CheckBoxWithMnemonic(MailResourceLoader.getString( 140 "dialog", "account", "enable_PGP_Support")); 141 enableCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT); 142 enableCheckBox.setActionCommand("ENABLE"); 143 enableCheckBox.addActionListener(this); 144 145 idLabel = new LabelWithMnemonic(MailResourceLoader.getString("dialog", 146 "account", "User_ID")); 147 148 typeLabel = new JLabel (MailResourceLoader.getString("dialog", 149 "account", "PGP_Version")); 151 pathLabel = new JLabel (MailResourceLoader.getString("dialog", 152 "account", "Path_to_Binary")); 154 idTextField = new JTextField (); 155 156 typeComboBox = new JComboBox (); 157 158 typeComboBox.insertItemAt("GnuPG", 0); 160 typeComboBox.insertItemAt("PGP2", 1); 161 typeComboBox.insertItemAt("PGP5", 2); 162 typeComboBox.insertItemAt("PGP6", 3); 163 typeComboBox.setSelectedIndex(0); 164 typeComboBox.setEnabled(false); 165 166 pathButton = new JButton (); 167 168 pathButton.setActionCommand("PATH"); 170 pathButton.addActionListener(this); 171 172 alwaysSignCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 173 .getString("dialog", "account", 174 "Always_sign_when_sending_messages")); 175 alwaysSignCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT); 176 alwaysSignCheckBox.setEnabled(false); 177 178 alwaysEncryptCheckBox = new CheckBoxWithMnemonic( 179 MailResourceLoader 180 .getString( 181 "dialog", "account", "Always_encrypt_when_sending_messages")); alwaysEncryptCheckBox.setAlignmentX(Component.LEFT_ALIGNMENT); 183 alwaysEncryptCheckBox.setEnabled(false); 184 } 185 186 public void enablePGP(boolean b) { 187 idTextField.setEnabled(b); 189 idLabel.setEnabled(b); 190 typeLabel.setEnabled(b); 191 pathLabel.setEnabled(b); 192 pathButton.setEnabled(b); 193 alwaysSignCheckBox.setEnabled(b); 194 alwaysEncryptCheckBox.setEnabled(b); 195 } 196 197 public void actionPerformed(ActionEvent e) { 198 String action = e.getActionCommand(); 199 200 if (action.equals("ENABLE")) { 201 enablePGP(enableCheckBox.isSelected()); 202 } else if (action.equals("PATH")) { 203 JFileChooser fileChooser = new JFileChooser (); 204 fileChooser.setDialogTitle(MailResourceLoader.getString("dialog", 205 "account", "PGP_Binary")); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 207 208 int returnVal = fileChooser.showDialog(null, MailResourceLoader 209 .getString("dialog", "account", "Select_File")); 211 if (returnVal == JFileChooser.APPROVE_OPTION) { 212 File file = fileChooser.getSelectedFile(); 213 pathButton.setText(file.getPath()); 214 } 215 } 216 } 217 218 public boolean isFinished() { 219 boolean result = true; 220 221 return result; 222 } 223 } | Popular Tags |