1 19 package org.columba.mail.gui.config.account; 20 21 import java.awt.event.ActionEvent ; 22 import java.awt.event.ActionListener ; 23 import java.io.File ; 24 25 import javax.swing.JButton ; 26 import javax.swing.JCheckBox ; 27 import javax.swing.JFileChooser ; 28 import javax.swing.JLabel ; 29 import javax.swing.JOptionPane ; 30 import javax.swing.JPanel ; 31 import javax.swing.JTextField ; 32 33 import org.columba.core.gui.base.CheckBoxWithMnemonic; 34 import org.columba.core.gui.base.LabelWithMnemonic; 35 import org.columba.mail.config.AccountItem; 36 import org.columba.mail.config.Identity; 37 import org.columba.mail.config.MailConfig; 38 import org.columba.mail.folder.imap.IMAPRootFolder; 39 import org.columba.mail.gui.tree.FolderTreeModel; 40 import org.columba.mail.util.MailResourceLoader; 41 import org.columba.ristretto.message.Address; 42 import org.columba.ristretto.parser.ParserException; 43 44 import com.jgoodies.forms.builder.DefaultFormBuilder; 45 import com.jgoodies.forms.layout.FormLayout; 46 47 public class IdentityPanel extends DefaultPanel implements ActionListener { 48 private JLabel nameLabel; 49 private JTextField nameTextField; 50 private JLabel addressLabel; 51 private JTextField addressTextField; 52 private JLabel organisationLabel; 53 private JTextField organisationTextField; 54 private JLabel replyaddressLabel; 55 private JTextField replyaddressTextField; 56 private JLabel accountnameLabel; 57 private JTextField accountnameTextField; 58 private JCheckBox defaultAccountCheckBox; 59 private JButton selectSignatureButton; 60 private JCheckBox attachsignatureCheckBox; 61 private AccountItem account; 62 private JButton editSignatureButton; 63 64 public IdentityPanel(AccountItem account) { 66 super(); 67 68 this.account = account; 70 71 initComponents(); 72 layoutComponents(); 73 updateComponents(true); 74 } 75 76 protected void updateComponents(boolean b) { 77 Identity identity = account.getIdentity(); 78 if (b) { 79 accountnameTextField.setText(account.getName()); 80 Address address = identity.getAddress(); 81 nameTextField.setText(address.getDisplayName()); 82 addressTextField.setText(address.getMailAddress()); 83 address = identity.getReplyToAddress(); 84 replyaddressTextField.setText( 85 address == null ? "" : address.getMailAddress()); 86 organisationTextField.setText(identity.getOrganisation()); 87 File signature = identity.getSignature(); 88 selectSignatureButton.setText( 89 signature == null ? new File (System.getProperty("user.home"), ".signature").getPath() : signature.getPath()); 90 91 attachsignatureCheckBox.setSelected(signature != null); 92 93 defaultAccountCheckBox.setSelected( 94 MailConfig.getInstance().getAccountList().getDefaultAccountUid() 95 == account.getInteger("uid")); 96 } else { 97 try { 98 Address address = Address.parse(addressTextField.getText()); 99 if (nameTextField.getText() != null) { 100 address.setDisplayName(nameTextField.getText()); 101 } 102 identity.setAddress(address); 103 if (replyaddressTextField.getText().length() > 0) { 104 address = Address.parse(replyaddressTextField.getText()); 105 } else { 106 address = null; 107 } 108 identity.setReplyToAddress(address); 109 } catch (ParserException pe) {} identity.setOrganisation(organisationTextField.getText()); 111 if (attachsignatureCheckBox.isSelected()) { 112 identity.setSignature(new File (selectSignatureButton.getText())); 113 } else { 114 identity.setSignature(null); 115 } 116 117 if( !account.getName().equals(accountnameTextField.getText())) { 118 account.setName(accountnameTextField.getText()); 119 if( !account.isPopAccount()) { 120 122 IMAPRootFolder imapRoot = (IMAPRootFolder) FolderTreeModel.getInstance().getImapFolder(account.getUid()); 123 try { 124 imapRoot.setName(accountnameTextField.getText()); 125 FolderTreeModel.getInstance().nodeStructureChanged(imapRoot); 126 } catch (Exception e) { 127 } 128 } 129 } 130 131 if (defaultAccountCheckBox.isSelected()) { 132 MailConfig.getInstance().getAccountList().setDefaultAccount( 133 account.getUid()); 134 } 135 } 136 } 137 138 protected void initComponents() { 139 accountnameLabel = new LabelWithMnemonic(MailResourceLoader.getString( 140 "dialog", "account", "identity_accountname")); 141 142 accountnameTextField = new JTextField (); 143 accountnameLabel.setLabelFor(accountnameTextField); 144 defaultAccountCheckBox = new CheckBoxWithMnemonic(MailResourceLoader.getString( 145 "dialog", "account", "defaultaccount")); 146 147 nameLabel = new LabelWithMnemonic(MailResourceLoader.getString( 148 "dialog", "account", "yourname")); 149 150 nameTextField = new JTextField (); 151 nameLabel.setLabelFor(nameTextField); 152 addressLabel = new LabelWithMnemonic(MailResourceLoader.getString( 153 "dialog", "account", "address")); 154 155 addressTextField = new JTextField (); 156 addressLabel.setLabelFor(addressTextField); 157 replyaddressLabel = new LabelWithMnemonic(MailResourceLoader.getString( 158 "dialog", "account", "replytoaddress")); 159 160 organisationLabel = new LabelWithMnemonic(MailResourceLoader.getString( 161 "dialog", "account", "organisation")); 162 163 replyaddressTextField = new JTextField (); 164 replyaddressLabel.setLabelFor(replyaddressTextField); 165 organisationTextField = new JTextField (); 166 organisationLabel.setLabelFor(organisationTextField); 167 168 attachsignatureCheckBox = new CheckBoxWithMnemonic(MailResourceLoader.getString( 169 "dialog", "account", "attachthissignature")); 170 171 selectSignatureButton = new JButton ("~/.signature"); 172 selectSignatureButton.setActionCommand("CHOOSE"); 173 selectSignatureButton.addActionListener(this); 174 175 editSignatureButton = new JButton (new EditSignatureAction(null,account)); 176 } 177 178 protected void layoutComponents() { 179 FormLayout layout = new FormLayout("10dlu, max(70dlu;default), 3dlu, fill:max(150dlu;default):grow", 181 182 ""); 185 DefaultFormBuilder builder = new DefaultFormBuilder(layout, this); 187 188 builder.setDefaultDialogBorder(); 190 191 builder.setLeadingColumnOffset(1); 193 194 builder.appendSeparator(MailResourceLoader.getString("dialog", 196 "account", "account_information")); 197 builder.nextLine(); 198 199 builder.append(accountnameLabel, 1); 200 builder.append(accountnameTextField); 201 builder.nextLine(); 202 203 builder.append(defaultAccountCheckBox, 3); 204 builder.nextLine(); 205 206 builder.appendSeparator(MailResourceLoader.getString("dialog", 207 "account", "needed_information")); 208 builder.nextLine(); 209 210 builder.append(nameLabel, 1); 211 builder.append(nameTextField); 212 builder.nextLine(); 213 214 builder.append(addressLabel, 1); 215 builder.append(addressTextField); 216 builder.nextLine(); 217 218 builder.appendSeparator(MailResourceLoader.getString("dialog", 219 "account", "optional_information")); 220 builder.nextLine(); 221 222 builder.append(organisationLabel, 1); 223 builder.append(organisationTextField); 224 builder.nextLine(); 225 226 builder.append(replyaddressLabel, 1); 227 builder.append(replyaddressTextField); 228 builder.nextLine(1); 229 230 231 JPanel panel = new JPanel (); 232 FormLayout l = new FormLayout("max(100;default), 3dlu, left:max(50dlu;default), 3dlu, left:max(50dlu;default)", 233 234 "fill:default:grow"); 237 DefaultFormBuilder b = new DefaultFormBuilder(l, panel); 239 240 b.append(attachsignatureCheckBox, selectSignatureButton, editSignatureButton); 241 242 builder.append(panel, 3); 244 builder.nextLine(); 245 246 251 380 } 381 382 public boolean isFinished() { 383 String address = addressTextField.getText(); 384 if (accountnameTextField.getText().length() == 0) { 385 JOptionPane.showMessageDialog(this, 386 MailResourceLoader.getString("dialog", "account", "namelabel")); 387 return false; 388 } else if (address.length() == 0) { 389 JOptionPane.showMessageDialog(this, 390 MailResourceLoader.getString("dialog", "account", "addresslabel")); 391 return false; 392 } else { 393 try { 394 Address.parse(address); 395 } catch (ParserException pe) { 396 JOptionPane.showMessageDialog(this, 397 MailResourceLoader.getString("dialog", "account", "invalidaddress")); 398 return false; 399 } 400 } 401 return true; 402 } 403 404 public void actionPerformed(ActionEvent e) { 405 String action = e.getActionCommand(); 406 407 if (action.equals("CHOOSE")) { 408 JFileChooser fc = new JFileChooser (); 409 if( account.getIdentity().getSignature() != null ) { 410 fc.setSelectedFile(account.getIdentity().getSignature()); 411 } 412 413 int returnVal = fc.showOpenDialog(this); 414 415 if (returnVal == JFileChooser.APPROVE_OPTION) { 416 File file = fc.getSelectedFile(); 417 selectSignatureButton.setText(file.getPath()); 418 } 419 } 420 } 421 } 422 | Popular Tags |