1 package org.columba.mail.gui.config.account; 17 18 import java.awt.event.ActionEvent ; 19 import java.awt.event.ActionListener ; 20 21 import javax.swing.JCheckBox ; 22 import javax.swing.JLabel ; 23 import javax.swing.JPanel ; 24 import javax.swing.JSpinner ; 25 import javax.swing.JTextField ; 26 import javax.swing.SpinnerNumberModel ; 27 28 import org.columba.core.gui.base.CheckBoxWithMnemonic; 29 import org.columba.mail.config.PopItem; 30 import org.columba.mail.util.MailResourceLoader; 31 32 import com.jgoodies.forms.builder.DefaultFormBuilder; 33 import com.jgoodies.forms.layout.FormLayout; 34 35 40 public class PopAttributPanel implements ActionListener { 41 private PopItem item; 42 43 private JCheckBox leaveOnServerCheckBox; 44 45 private JCheckBox excludeCheckBox; 46 47 private JCheckBox removeOldMessagesCheckBox; 48 49 private JSpinner olderThanSpinner; 50 51 private JLabel daysLabel; 52 53 private JCheckBox limitMessageDownloadCheckBox; 54 55 private JTextField limitMessageDownloadTextField; 56 57 public PopAttributPanel(PopItem item) { 58 super(); 59 this.item = item; 60 61 initComponents(); 62 } 63 64 public void updateComponents(boolean b) { 65 66 if (b) { 67 leaveOnServerCheckBox.setSelected(item 68 .getBoolean(PopItem.LEAVE_MESSAGES_ON_SERVER)); 69 removeOldMessagesCheckBox.setSelected(item.getBooleanWithDefault( 70 PopItem.REMOVE_OLD_FROM_SERVER, false)); 71 72 updateRemoveOldMessagesEnabled(); 73 74 olderThanSpinner.getModel().setValue( 75 new Integer (item.getIntegerWithDefault(PopItem.OLDER_THAN, 76 30))); 77 78 excludeCheckBox.setSelected(item.getBooleanWithDefault( 79 PopItem.EXCLUDE_FROM_CHECKALL, false)); 80 81 limitMessageDownloadCheckBox.setSelected(item 82 .getBoolean(PopItem.ENABLE_DOWNLOAD_LIMIT)); 83 84 limitMessageDownloadTextField.setText(item 85 .get(PopItem.DOWNLOAD_LIMIT)); 86 87 } else { 88 item.setBoolean(PopItem.REMOVE_OLD_FROM_SERVER, 89 removeOldMessagesCheckBox.isSelected()); 90 91 item.setInteger(PopItem.OLDER_THAN, 92 ((SpinnerNumberModel ) olderThanSpinner.getModel()) 93 .getNumber().intValue()); 94 95 item.setBoolean(PopItem.LEAVE_MESSAGES_ON_SERVER, 96 leaveOnServerCheckBox.isSelected()); 98 item.setBoolean(PopItem.EXCLUDE_FROM_CHECKALL, excludeCheckBox 99 .isSelected()); 101 item.setString(PopItem.DOWNLOAD_LIMIT, 102 limitMessageDownloadTextField.getText()); 103 104 item.setBoolean(PopItem.ENABLE_DOWNLOAD_LIMIT, 105 limitMessageDownloadCheckBox.isSelected()); 106 107 } 108 } 109 110 113 private void updateRemoveOldMessagesEnabled() { 114 removeOldMessagesCheckBox 115 .setEnabled(leaveOnServerCheckBox.isSelected()); 116 olderThanSpinner.setEnabled(leaveOnServerCheckBox.isSelected()); 117 daysLabel.setEnabled(leaveOnServerCheckBox.isSelected()); 118 } 119 120 public void createPanel(DefaultFormBuilder builder) { 121 JPanel panel; 122 FormLayout l; 123 DefaultFormBuilder b; 124 125 builder.appendSeparator(MailResourceLoader.getString("dialog", 126 "account", "options")); 127 128 builder.append(leaveOnServerCheckBox, 4); 129 builder.nextLine(); 130 131 builder.setLeadingColumnOffset(2); 132 133 panel = new JPanel (); 134 l = new FormLayout("default, 3dlu, min(50;default), 3dlu, default", 135 ""); 139 b = new DefaultFormBuilder(l, panel); 141 b.append(removeOldMessagesCheckBox); 142 b.append(olderThanSpinner); 143 b.append(daysLabel); 144 builder.append(panel, 3); 145 builder.nextLine(); 146 147 builder.setLeadingColumnOffset(1); 148 builder.append(excludeCheckBox, 4); 149 builder.nextLine(); 150 151 panel = new JPanel (); 152 l = new FormLayout("max(100;default), 3dlu, left:max(50dlu;default)", 153 154 ""); 158 b = new DefaultFormBuilder(l, panel); 160 b.append(limitMessageDownloadCheckBox, limitMessageDownloadTextField); 161 162 builder.append(panel, 4); 163 164 } 165 166 protected void initComponents() { 167 leaveOnServerCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 168 .getString("dialog", "account", 169 PopItem.LEAVE_MESSAGES_ON_SERVER)); 170 leaveOnServerCheckBox.setActionCommand("LEAVE_ON_SERVER"); 171 leaveOnServerCheckBox.addActionListener(this); 172 173 limitMessageDownloadCheckBox = new CheckBoxWithMnemonic( 174 MailResourceLoader.getString("dialog", "account", 175 "limit_message_download_to")); 176 177 limitMessageDownloadCheckBox.setActionCommand("LIMIT_MESSAGE_DOWNLOAD"); 178 limitMessageDownloadCheckBox.addActionListener(this); 179 180 limitMessageDownloadTextField = new JTextField (); 181 182 excludeCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 183 .getString("dialog", "account", "exclude_from_fetch_all")); 184 185 removeOldMessagesCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 186 .getString("dialog", "account", PopItem.REMOVE_OLD_FROM_SERVER)); 187 188 olderThanSpinner = new JSpinner (new SpinnerNumberModel (1, 1, 189 Integer.MAX_VALUE, 1)); 190 191 daysLabel = new JLabel (MailResourceLoader.getString("dialog", 192 "account", "days")); 193 194 } 195 196 public void actionPerformed(ActionEvent e) { 197 String action = e.getActionCommand(); 198 199 if (action.equals("LIMIT_MESSAGE_DOWNLOAD")) { 200 limitMessageDownloadTextField 201 .setEnabled(limitMessageDownloadCheckBox.isSelected()); 202 } else if (action.equals("LEAVE_ON_SERVER")) { 203 updateRemoveOldMessagesEnabled(); 204 } 205 } 206 } 207 | Popular Tags |