KickJava   Java API By Example, From Geeks To Geeks.

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


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
package org.columba.mail.gui.config.account;
19
20 import java.awt.Font JavaDoc;
21 import java.awt.GridBagConstraints JavaDoc;
22 import java.awt.GridBagLayout JavaDoc;
23 import java.awt.event.ActionEvent JavaDoc;
24 import java.awt.event.ActionListener JavaDoc;
25 import java.io.File JavaDoc;
26
27 import javax.swing.BorderFactory JavaDoc;
28 import javax.swing.ButtonGroup JavaDoc;
29 import javax.swing.JButton JavaDoc;
30 import javax.swing.JCheckBox JavaDoc;
31 import javax.swing.JFileChooser JavaDoc;
32 import javax.swing.JLabel JavaDoc;
33 import javax.swing.JPanel JavaDoc;
34 import javax.swing.JRadioButton JavaDoc;
35 import javax.swing.JSpinner JavaDoc;
36 import javax.swing.SpinnerNumberModel JavaDoc;
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 /**
49  * @author frd
50  *
51  * To change this generated comment edit the template variable "typecomment":
52  * Window>Preferences>Java>Templates. To enable and disable the creation of type
53  * comments go to Window>Preferences>Java>Code Generation.
54  */

55 public class ReceiveOptionsPanel extends DefaultPanel implements ActionListener JavaDoc {
56
57     private AccountItem item;
58
59     private JCheckBox JavaDoc playsoundCheckBox;
60
61     private JCheckBox JavaDoc autodownloadCheckBox;
62
63     private JSpinner JavaDoc intervalCheckingSpinner;
64
65     private JLabel JavaDoc intervalCheckingLabel;
66
67     private JLabel JavaDoc intervalCheckingLabel2;
68
69     private JCheckBox JavaDoc intervalCheckingCheckBox;
70
71     private JRadioButton JavaDoc defaultRadioButton;
72
73     private JRadioButton JavaDoc chooseRadioButton;
74
75     private JButton JavaDoc 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 JavaDoc mainLayout = new GridBagLayout JavaDoc();
93         GridBagConstraints JavaDoc mainConstraints = new GridBagConstraints JavaDoc();
94
95         setLayout(mainLayout);
96
97         mainConstraints = new GridBagConstraints JavaDoc();
98         mainConstraints.weighty = 1.0;
99         mainConstraints.gridwidth = GridBagConstraints.REMAINDER;
100
101         JLabel JavaDoc label = new JLabel JavaDoc(MailResourceLoader.getString("dialog",
102                 "account", "using_default_account_settings"));
103         Font JavaDoc 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         // Create a FormLayout instance.
111
FormLayout layout = new FormLayout(
112                 "10dlu, 10dlu, max(100;default), 3dlu, fill:max(150dlu;default):grow",
113
114                 // 2 columns
115
""); // rows are added dynamically (no need to define them
116
// here)
117

118         DefaultFormBuilder builder = new DefaultFormBuilder(layout, this);
119         builder.setLeadingColumnOffset(1);
120
121         // create EmptyBorder between components and dialog-frame
122
builder.setDefaultDialogBorder();
123
124         // Add components to the panel:
125
builder.appendSeparator(MailResourceLoader.getString("dialog",
126                 "account", "automatic_mailchecking"));
127
128         builder.append(intervalCheckingCheckBox, 4);
129         builder.nextLine();
130
131         // builder.setLeadingColumnOffset(2);
132
builder.setLeadingColumnOffset(2);
133         builder.append(autodownloadCheckBox, 3);
134         builder.nextLine();
135
136         builder.append(playsoundCheckBox, 3);
137         builder.nextLine();
138
139         JPanel JavaDoc panel = new JPanel JavaDoc();
140         FormLayout l = new FormLayout("default, 3dlu, default, 3dlu, default",
141
142         // 2 columns
143
""); // rows are added dynamically (no need to define them
144
// here)
145

146         // create a form builder
147
DefaultFormBuilder b = new DefaultFormBuilder(l, panel);
148         b.append(intervalCheckingLabel, intervalCheckingSpinner,
149                 intervalCheckingLabel2);
150
151         builder.append(panel, 3);
152
153         // b2.nextLine();
154
builder.setLeadingColumnOffset(1);
155
156         if (item.isPopAccount()) {
157             popPanel.createPanel(builder);
158         } else {
159             imapPanel.createPanel(builder);
160
161             // attributPanel.add(imapPanel, BorderLayout.CENTER);
162
}
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 JavaDoc(new SpinnerNumberModel JavaDoc(5, 1,
171                 100, 1));
172         intervalCheckingLabel.setLabelFor(intervalCheckingSpinner);
173
174         intervalCheckingLabel2 = new JLabel JavaDoc(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 JavaDoc group = new ButtonGroup JavaDoc();
196         defaultRadioButton = new JRadioButton JavaDoc(MailResourceLoader.getString(
197                 "dialog", "account", "default_soundfile"));
198
199         group.add(defaultRadioButton);
200         chooseRadioButton = new JRadioButton JavaDoc(MailResourceLoader.getString(
201                 "dialog", "account", "choose_soundfile"));
202         group.add(chooseRadioButton);
203         chooseButton = new JButton JavaDoc("..");
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                 // disable components
231
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 JavaDoc(receiveItem
249                     .getIntegerWithDefault(IncomingItem.MAILCHECK_INTERVAL,
250                             IncomingItem.MAIL_CHECK_INTERVAL_DEFAULT_INT)));
251
252             String JavaDoc 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 JavaDoc) 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 JavaDoc 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 JavaDoc fc = new JFileChooser JavaDoc();
333             int returnVal = fc.showOpenDialog(this);
334
335             if (returnVal == JFileChooser.APPROVE_OPTION) {
336                 File JavaDoc file = fc.getSelectedFile();
337                 chooseButton.setText(file.getPath());
338             }
339         }
340     }
341 }
Popular Tags