KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > config > account > SpamPanel


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18

19 package org.columba.mail.gui.config.account;
20
21 import java.awt.event.ActionEvent JavaDoc;
22 import java.awt.event.ActionListener JavaDoc;
23
24 import javax.swing.ButtonGroup JavaDoc;
25 import javax.swing.JButton JavaDoc;
26 import javax.swing.JCheckBox JavaDoc;
27 import javax.swing.JRadioButton JavaDoc;
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 /**
47  * Panel for spam options.
48  *
49  * @author fdietz
50  */

51 public class SpamPanel extends DefaultPanel implements ActionListener JavaDoc {
52
53     private AccountItem item;
54
55     private JCheckBox JavaDoc enableCheckBox;
56
57     private JCheckBox JavaDoc addressCheckBox;
58
59     private JCheckBox JavaDoc incomingCheckBox;
60
61     private JCheckBox JavaDoc markCheckBox;
62
63     private JRadioButton JavaDoc incomingTrashRadioButton;
64
65     private JRadioButton JavaDoc incomingMoveToRadioButton;
66
67     private JButton JavaDoc incomingChooseFolderButton;
68
69     private JRadioButton JavaDoc markTrashRadioButton;
70
71     private JRadioButton JavaDoc markMoveToRadioButton;
72
73     private JButton JavaDoc 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 JavaDoc group = new ButtonGroup JavaDoc();
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 JavaDoc group2 = new ButtonGroup JavaDoc();
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         // Create a FormLayout instance.
138
FormLayout layout = new FormLayout(
139                 "10dlu, 10dlu, max(100;default), 3dlu, max(150dlu;default):grow, 3dlu",
140
141                 // 2 columns
142
""); // rows are added dynamically (no need to define them
143

144         // here)
145
DefaultFormBuilder builder = new DefaultFormBuilder(layout, this);
146         builder.setLeadingColumnOffset(1);
147
148         // create EmptyBorder between components and dialog-frame
149
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 JavaDoc 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                 // user didn't select any folder
241
// -> make Inbox the default folder
242
folder = (IMailbox) FolderTreeModel.getInstance()
243                         .getFolder("101");
244             }
245
246             String JavaDoc 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                 // user didn't select any folder
254
// -> make Inbox the default folder
255
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 JavaDoc arg0) {
266         String JavaDoc 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 JavaDoc 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 JavaDoc 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