1 19 package org.columba.mail.gui.config.account; 20 21 import java.awt.event.ActionEvent ; 22 import java.awt.event.ActionListener ; 23 24 import javax.swing.ButtonGroup ; 25 import javax.swing.JButton ; 26 import javax.swing.JCheckBox ; 27 import javax.swing.JRadioButton ; 28 29 import org.columba.api.gui.frame.IFrameMediator; 30 import org.columba.core.gui.base.ButtonWithMnemonic; 31 import org.columba.core.gui.base.CheckBoxWithMnemonic; 32 import org.columba.core.gui.base.MultiLineLabel; 33 import org.columba.core.gui.base.RadioButtonWithMnemonic; 34 import org.columba.mail.config.AccountItem; 35 import org.columba.mail.config.SpamItem; 36 import org.columba.mail.folder.IMailFolder; 37 import org.columba.mail.folder.IMailbox; 38 import org.columba.mail.gui.tree.FolderTreeModel; 39 import org.columba.mail.gui.tree.util.SelectFolderDialog; 40 import org.columba.mail.gui.tree.util.TreeNodeList; 41 import org.columba.mail.util.MailResourceLoader; 42 43 import com.jgoodies.forms.builder.DefaultFormBuilder; 44 import com.jgoodies.forms.layout.FormLayout; 45 46 51 public class SpamPanel extends DefaultPanel implements ActionListener { 52 53 private AccountItem item; 54 55 private JCheckBox enableCheckBox; 56 57 private JCheckBox addressCheckBox; 58 59 private JCheckBox incomingCheckBox; 60 61 private JCheckBox markCheckBox; 62 63 private JRadioButton incomingTrashRadioButton; 64 65 private JRadioButton incomingMoveToRadioButton; 66 67 private JButton incomingChooseFolderButton; 68 69 private JRadioButton markTrashRadioButton; 70 71 private JRadioButton markMoveToRadioButton; 72 73 private JButton markChooseFolderButton; 74 75 private MultiLineLabel label; 76 77 private IFrameMediator mediator; 78 79 public SpamPanel(IFrameMediator mediator, AccountItem item) { 80 this.item = item; 81 this.mediator = mediator; 82 83 initComponents(); 84 updateComponents(true); 85 layoutComponents(); 86 } 87 88 protected void initComponents() { 89 enableCheckBox = new CheckBoxWithMnemonic(MailResourceLoader.getString( 90 "dialog", "account", "enable_filter")); 91 enableCheckBox.setActionCommand("ENABLE"); 92 enableCheckBox.addActionListener(this); 93 94 addressCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 95 .getString("dialog", "account", "dont_mark_message")); 96 97 incomingCheckBox = new CheckBoxWithMnemonic(MailResourceLoader 98 .getString("dialog", "account", "move_incoming_messages")); 99 incomingCheckBox.setActionCommand("INCOMING"); 100 incomingCheckBox.addActionListener(this); 101 102 incomingChooseFolderButton = new ButtonWithMnemonic("Inbox"); 103 incomingChooseFolderButton.setActionCommand("INCOMING_BUTTON"); 104 incomingChooseFolderButton.addActionListener(this); 105 106 incomingTrashRadioButton = new RadioButtonWithMnemonic( 107 MailResourceLoader.getString("dialog", "account", 108 "trash_folder")); 109 incomingMoveToRadioButton = new RadioButtonWithMnemonic( 110 MailResourceLoader.getString("dialog", "account", "move_to")); 111 ButtonGroup group = new ButtonGroup (); 112 group.add(incomingTrashRadioButton); 113 group.add(incomingMoveToRadioButton); 114 115 markCheckBox = new CheckBoxWithMnemonic(MailResourceLoader.getString( 116 "dialog", "account", "when_marking_message")); 117 markCheckBox.setActionCommand("MARK"); 118 markCheckBox.addActionListener(this); 119 120 markTrashRadioButton = new RadioButtonWithMnemonic(MailResourceLoader 121 .getString("dialog", "account", "move_to_trash_folder")); 122 markMoveToRadioButton = new RadioButtonWithMnemonic(MailResourceLoader 123 .getString("dialog", "account", "move_to")); 124 ButtonGroup group2 = new ButtonGroup (); 125 group2.add(markTrashRadioButton); 126 group2.add(markMoveToRadioButton); 127 128 markChooseFolderButton = new ButtonWithMnemonic("Inbox"); 129 markChooseFolderButton.setActionCommand("MARK_BUTTON"); 130 markChooseFolderButton.addActionListener(this); 131 132 label = new MultiLineLabel(MailResourceLoader.getString("dialog", 133 "account", "spam_intro")); 134 } 135 136 protected void layoutComponents() { 137 FormLayout layout = new FormLayout( 139 "10dlu, 10dlu, max(100;default), 3dlu, max(150dlu;default):grow, 3dlu", 140 141 ""); 144 DefaultFormBuilder builder = new DefaultFormBuilder(layout, this); 146 builder.setLeadingColumnOffset(1); 147 148 builder.setDefaultDialogBorder(); 150 151 builder.setLeadingColumnOffset(1); 152 153 builder.appendSeparator(MailResourceLoader.getString("dialog", 154 "account", "separator_adaptive_spam_filter")); 155 156 builder.append(label, 4); 157 builder.nextLine(); 158 159 builder.append(enableCheckBox, 4); 160 builder.nextLine(); 161 162 builder.appendSeparator(MailResourceLoader.getString("dialog", 163 "account", "separator_filter_options")); 164 builder.nextLine(); 165 166 builder.append(addressCheckBox, 4); 167 builder.nextLine(); 168 169 builder.append(incomingCheckBox, 4); 170 builder.nextLine(); 171 172 builder.setLeadingColumnOffset(2); 173 174 builder.append(incomingTrashRadioButton, 3); 175 builder.nextLine(); 176 builder.append(incomingMoveToRadioButton, 1); 177 builder.append(incomingChooseFolderButton, 2); 178 179 builder.setLeadingColumnOffset(1); 180 181 builder.append(markCheckBox, 4); 182 builder.nextLine(); 183 184 builder.setLeadingColumnOffset(2); 185 186 builder.append(markTrashRadioButton, 3); 187 builder.nextLine(); 188 189 builder.append(markMoveToRadioButton, 1); 190 builder.append(markChooseFolderButton, 2); 191 } 192 193 public void updateComponents(boolean b) { 194 SpamItem spam = item.getSpamItem(); 195 196 if (b) { 197 enableCheckBox.setSelected(spam.isEnabled()); 198 199 incomingCheckBox.setSelected(spam 200 .isMoveIncomingJunkMessagesEnabled()); 201 202 IMailbox folder = (IMailbox) FolderTreeModel.getInstance() 203 .getFolder(spam.getIncomingCustomFolder()); 204 String treePath = folder.getTreePath(); 205 incomingChooseFolderButton.setText(treePath); 206 207 incomingMoveToRadioButton.setSelected(!spam 208 .isIncomingTrashSelected()); 209 210 incomingTrashRadioButton 211 .setSelected(spam.isIncomingTrashSelected()); 212 213 markCheckBox.setSelected(spam.isMoveMessageWhenMarkingEnabled()); 214 215 folder = (IMailbox) FolderTreeModel.getInstance().getFolder( 216 spam.getMoveCustomFolder()); 217 treePath = folder.getTreePath(); 218 markChooseFolderButton.setText(treePath); 219 220 markMoveToRadioButton.setSelected(!spam.isMoveTrashSelected()); 221 markTrashRadioButton.setSelected(spam.isMoveTrashSelected()); 222 addressCheckBox.setSelected(spam.checkAddressbook()); 223 224 enableComponents(enableCheckBox.isSelected()); 225 } else { 226 spam.setEnabled(enableCheckBox.isSelected()); 227 228 spam.enableMoveIncomingJunkMessage(incomingCheckBox.isSelected()); 229 spam.enableMoveMessageWhenMarking(markCheckBox.isSelected()); 230 231 spam.selectedIncomingTrash(incomingTrashRadioButton.isSelected()); 232 spam.selectMoveTrash(markTrashRadioButton.isSelected()); 233 234 TreeNodeList list = new TreeNodeList(incomingChooseFolderButton 235 .getText()); 236 IMailbox folder = (IMailbox) FolderTreeModel.getInstance() 237 .getFolder(list); 238 239 if (folder == null) { 240 folder = (IMailbox) FolderTreeModel.getInstance() 243 .getFolder("101"); 244 } 245 246 String uid = folder.getId(); 247 spam.setIncomingCustomFolder(uid); 248 249 list = new TreeNodeList(markChooseFolderButton.getText()); 250 folder = (IMailbox) FolderTreeModel.getInstance().getFolder(list); 251 252 if (folder == null) { 253 folder = (IMailbox) FolderTreeModel.getInstance() 256 .getFolder("101"); 257 } 258 259 uid = folder.getId(); 260 spam.setMoveCustomFolder(uid); 261 spam.enableCheckAddressbook(addressCheckBox.isSelected()); 262 } 263 } 264 265 public void actionPerformed(ActionEvent arg0) { 266 String action = arg0.getActionCommand(); 267 268 if (action.equals("ENABLE")) { 269 enableComponents(enableCheckBox.isSelected()); 270 } else if (action.equals("INCOMING")) { 271 enableIncoming(incomingCheckBox.isSelected()); 272 } else if (action.equals("MARK")) { 273 enableMark(markCheckBox.isSelected()); 274 } else if (action.equals("MARK_BUTTON")) { 275 SelectFolderDialog dialog = new SelectFolderDialog(mediator); 276 if (dialog.success()) { 277 IMailFolder folder = (IMailFolder) dialog.getSelectedFolder(); 278 279 String treePath = folder.getTreePath(); 280 markChooseFolderButton.setText(treePath); 281 } 282 } else if (action.equals("INCOMING_BUTTON")) { 283 SelectFolderDialog dialog = new SelectFolderDialog(mediator); 284 if (dialog.success()) { 285 IMailFolder folder = (IMailFolder) dialog.getSelectedFolder(); 286 287 String treePath = folder.getTreePath(); 288 incomingChooseFolderButton.setText(treePath); 289 } 290 } 291 } 292 293 private void enableComponents(boolean enable) { 294 addressCheckBox.setEnabled(enable); 295 296 incomingCheckBox.setEnabled(enable); 297 enableIncoming(enable); 298 299 markCheckBox.setEnabled(enable); 300 enableMark(enable); 301 } 302 303 private void enableIncoming(boolean enable) { 304 incomingChooseFolderButton.setEnabled(incomingCheckBox.isSelected()); 305 incomingMoveToRadioButton.setEnabled(incomingCheckBox.isSelected()); 306 incomingTrashRadioButton.setEnabled(incomingCheckBox.isSelected()); 307 } 308 309 private void enableMark(boolean enable) { 310 markChooseFolderButton.setEnabled(markCheckBox.isSelected()); 311 markMoveToRadioButton.setEnabled(markCheckBox.isSelected()); 312 markTrashRadioButton.setEnabled(markCheckBox.isSelected()); 313 } 314 } 315 | Popular Tags |