1 package org.columba.mail.gui.config.account; 19 20 import java.awt.Font ; 21 import java.awt.GridBagConstraints ; 22 import java.awt.GridBagLayout ; 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 import java.io.File ; 26 27 import javax.swing.BorderFactory ; 28 import javax.swing.ButtonGroup ; 29 import javax.swing.JButton ; 30 import javax.swing.JCheckBox ; 31 import javax.swing.JFileChooser ; 32 import javax.swing.JLabel ; 33 import javax.swing.JPanel ; 34 import javax.swing.JRadioButton ; 35 import javax.swing.JSpinner ; 36 import javax.swing.SpinnerNumberModel ; 37 38 import org.columa.core.config.IDefaultItem; 39 import org.columba.core.gui.base.CheckBoxWithMnemonic; 40 import org.columba.core.gui.base.LabelWithMnemonic; 41 import org.columba.mail.config.AccountItem; 42 import org.columba.mail.config.IncomingItem; 43 import org.columba.mail.util.MailResourceLoader; 44 45 import com.jgoodies.forms.builder.DefaultFormBuilder; 46 import com.jgoodies.forms.layout.FormLayout; 47 48 55 public class ReceiveOptionsPanel extends DefaultPanel implements ActionListener { 56 57 private AccountItem item; 58 59 private JCheckBox playsoundCheckBox; 60 61 private JCheckBox autodownloadCheckBox; 62 63 private JSpinner intervalCheckingSpinner; 64 65 private JLabel intervalCheckingLabel; 66 67 private JLabel intervalCheckingLabel2; 68 69 private JCheckBox intervalCheckingCheckBox; 70 71 private JRadioButton defaultRadioButton; 72 73 private JRadioButton chooseRadioButton; 74 75 private JButton chooseButton; 76 77 private PopAttributPanel popPanel; 78 79 private ImapAttributPanel imapPanel; 80 81 public ReceiveOptionsPanel(AccountItem item) { 82 this.item = item; 83 84 initComponents(); 85 86 updateComponents(true); 87 } 88 89 protected void showDefaultAccountWarning() { 90 setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); 91 92 GridBagLayout mainLayout = new GridBagLayout (); 93 GridBagConstraints mainConstraints = new GridBagConstraints (); 94 95 setLayout(mainLayout); 96 97 mainConstraints = new GridBagConstraints (); 98 mainConstraints.weighty = 1.0; 99 mainConstraints.gridwidth = GridBagConstraints.REMAINDER; 100 101 JLabel label = new JLabel (MailResourceLoader.getString("dialog", 102 "account", "using_default_account_settings")); 103 Font newFont = label.getFont().deriveFont(Font.BOLD); 104 label.setFont(newFont); 105 mainLayout.setConstraints(label, mainConstraints); 106 add(label); 107 } 108 109 protected void layoutComponents() { 110 FormLayout layout = new FormLayout( 112 "10dlu, 10dlu, max(100;default), 3dlu, fill:max(150dlu;default):grow", 113 114 ""); 118 DefaultFormBuilder builder = new DefaultFormBuilder(layout, this); 119 builder.setLeadingColumnOffset(1); 120 121 builder.setDefaultDialogBorder(); 123 124 builder.appendSeparator(MailResourceLoader.getString("dialog", 126 "account", "automatic_mailchecking")); 127 128 builder.append(intervalCheckingCheckBox, 4); 129 builder.nextLine(); 130 131 builder.setLeadingColumnOffset(2); 133 builder.append(autodownloadCheckBox, 3); 134 builder.nextLine(); 135 136 builder.append(playsoundCheckBox, 3); 137 builder.nextLine(); 138 139 JPanel panel = new JPanel (); 140 FormLayout l = new FormLayout("default, 3dlu, default, 3dlu, default", 141 142 ""); 146 DefaultFormBuilder b = new DefaultFormBuilder(l, panel); 148 b.append(intervalCheckingLabel, intervalCheckingSpinner, 149 intervalCheckingLabel2); 150 151 builder.append(panel, 3); 152 153 builder.setLeadingColumnOffset(1); 155 156 if (item.isPopAccount()) { 157 popPanel.createPanel(builder); 158 } else { 159 imapPanel.createPanel(builder); 160 161 } 163 164 } 165 166 protected void initComponents() { 167 intervalCheckingLabel = new LabelWithMnemonic(MailResourceLoader 168 .getString("dialog", "account", "check_for_new_messages_every")); 169 170 intervalCheckingSpinner = new JSpinner (new SpinnerNumberModel (5, 1, 171 100, 1)); 172 intervalCheckingLabel.setLabelFor(intervalCheckingSpinner); 173 174 intervalCheckingLabel2 = new JLabel (MailResourceLoader.getString( 175 "dialog", "account", "minutes")); 176 177 intervalCheckingCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 178 .getString("dialog", "account", 179 "enable_interval_message_checking")); 180 181 intervalCheckingCheckBox.setActionCommand("ENABLE"); 182 intervalCheckingCheckBox.addActionListener(this); 183 184 autodownloadCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 185 .getString("dialog", "account", 186 IncomingItem.AUTOMATICALLY_DOWNLOAD_NEW_MESSAGES)); 187 188 playsoundCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 189 .getString("dialog", "account", 190 "play_sound_when_new_messages_arrive")); 191 192 playsoundCheckBox.setActionCommand("PLAYSOUND"); 193 playsoundCheckBox.addActionListener(this); 194 195 ButtonGroup group = new ButtonGroup (); 196 defaultRadioButton = new JRadioButton (MailResourceLoader.getString( 197 "dialog", "account", "default_soundfile")); 198 199 group.add(defaultRadioButton); 200 chooseRadioButton = new JRadioButton (MailResourceLoader.getString( 201 "dialog", "account", "choose_soundfile")); 202 group.add(chooseRadioButton); 203 chooseButton = new JButton (".."); 204 chooseButton.setActionCommand("CHOOSE"); 205 chooseButton.addActionListener(this); 206 207 if (item.isPopAccount()) { 208 popPanel = new PopAttributPanel(item.getPopItem()); 209 210 } else { 211 imapPanel = new ImapAttributPanel(item.getImapItem()); 212 213 } 214 } 215 216 public void updateComponents(boolean b) { 217 IDefaultItem receiveItem; 218 219 if (item.isPopAccount()) { 220 receiveItem = item.getPopItem(); 221 } else { 222 receiveItem = item.getImapItem(); 223 } 224 225 if (b) { 226 intervalCheckingCheckBox.setSelected(receiveItem 227 .getBoolean(IncomingItem.ENABLE_MAILCHECK)); 228 229 if (!intervalCheckingCheckBox.isSelected()) { 230 defaultRadioButton.setEnabled(false); 232 autodownloadCheckBox.setEnabled(false); 233 playsoundCheckBox.setEnabled(false); 234 chooseButton.setEnabled(false); 235 intervalCheckingLabel.setEnabled(false); 236 intervalCheckingLabel2.setEnabled(false); 237 intervalCheckingSpinner.setEnabled(false); 238 chooseRadioButton.setEnabled(false); 239 } 240 241 playsoundCheckBox.setSelected(receiveItem 242 .getBoolean(IncomingItem.ENABLE_SOUND)); 243 244 autodownloadCheckBox 245 .setSelected(receiveItem 246 .getBoolean(IncomingItem.AUTOMATICALLY_DOWNLOAD_NEW_MESSAGES)); 247 248 intervalCheckingSpinner.setValue(new Integer (receiveItem 249 .getIntegerWithDefault(IncomingItem.MAILCHECK_INTERVAL, 250 IncomingItem.MAIL_CHECK_INTERVAL_DEFAULT_INT))); 251 252 String soundfile = receiveItem.get(IncomingItem.SOUND_FILE); 253 254 if (soundfile.equalsIgnoreCase(IncomingItem.DEFAULT)) { 255 defaultRadioButton.setSelected(true); 256 } else { 257 chooseRadioButton.setSelected(true); 258 } 259 260 if (playsoundCheckBox.isSelected()) { 261 defaultRadioButton.setEnabled(true); 262 chooseRadioButton.setEnabled(true); 263 chooseButton.setEnabled(true); 264 } else { 265 defaultRadioButton.setEnabled(false); 266 chooseRadioButton.setEnabled(false); 267 chooseButton.setEnabled(false); 268 } 269 270 chooseButton.setText(soundfile); 271 272 boolean useDefault = receiveItem 273 .getBoolean(IncomingItem.USE_DEFAULT_ACCOUNT); 274 275 if (useDefault) { 276 showDefaultAccountWarning(); 277 } else { 278 layoutComponents(); 279 } 280 } else { 281 receiveItem.setBoolean(IncomingItem.ENABLE_MAILCHECK, 282 intervalCheckingCheckBox.isSelected()); 283 284 receiveItem.setBoolean(IncomingItem.ENABLE_SOUND, playsoundCheckBox 285 .isSelected()); 286 287 receiveItem.setBoolean( 288 IncomingItem.AUTOMATICALLY_DOWNLOAD_NEW_MESSAGES, 289 autodownloadCheckBox.isSelected()); 290 291 receiveItem.setString(IncomingItem.MAILCHECK_INTERVAL, 292 ((Integer ) intervalCheckingSpinner.getValue()).toString()); 293 294 if (defaultRadioButton.isSelected()) { 295 receiveItem.setString(IncomingItem.SOUND_FILE, 296 IncomingItem.DEFAULT); 297 } else { 298 receiveItem.setString(IncomingItem.SOUND_FILE, chooseButton 299 .getText()); 300 } 301 } 302 303 if (item.isPopAccount()) { 304 popPanel.updateComponents(b); 305 } else { 306 imapPanel.updateComponents(b); 307 } 308 } 309 310 public void actionPerformed(ActionEvent e) { 311 if (e.getActionCommand().equals("ENABLE")) { 312 boolean doIntervalChecking = intervalCheckingCheckBox.isSelected(); 313 defaultRadioButton.setEnabled(doIntervalChecking); 314 autodownloadCheckBox.setEnabled(doIntervalChecking); 315 playsoundCheckBox.setEnabled(doIntervalChecking); 316 chooseButton.setEnabled(doIntervalChecking); 317 chooseRadioButton.setEnabled(doIntervalChecking); 318 intervalCheckingLabel.setEnabled(doIntervalChecking); 319 intervalCheckingLabel2.setEnabled(doIntervalChecking); 320 intervalCheckingSpinner.setEnabled(doIntervalChecking); 321 322 boolean playSound = playsoundCheckBox.isSelected(); 323 defaultRadioButton.setEnabled(playSound); 324 chooseRadioButton.setEnabled(playSound); 325 chooseButton.setEnabled(playSound); 326 } else if (e.getActionCommand().equals("PLAYSOUND")) { 327 boolean playSound = playsoundCheckBox.isSelected(); 328 defaultRadioButton.setEnabled(playSound); 329 chooseButton.setEnabled(playSound); 330 chooseRadioButton.setEnabled(playSound); 331 } else if (e.getActionCommand().equals("CHOOSE")) { 332 JFileChooser fc = new JFileChooser (); 333 int returnVal = fc.showOpenDialog(this); 334 335 if (returnVal == JFileChooser.APPROVE_OPTION) { 336 File file = fc.getSelectedFile(); 337 chooseButton.setText(file.getPath()); 338 } 339 } 340 } 341 } | Popular Tags |