KickJava   Java API By Example, From Geeks To Geeks.

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


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.Component JavaDoc;
21 import java.awt.Font JavaDoc;
22 import java.awt.GridBagConstraints JavaDoc;
23 import java.awt.GridBagLayout JavaDoc;
24 import java.awt.Insets JavaDoc;
25 import java.awt.event.ActionEvent JavaDoc;
26 import java.awt.event.ActionListener JavaDoc;
27
28 import javax.swing.BorderFactory JavaDoc;
29 import javax.swing.Box JavaDoc;
30 import javax.swing.JButton JavaDoc;
31 import javax.swing.JCheckBox JavaDoc;
32 import javax.swing.JLabel JavaDoc;
33 import javax.swing.JPanel JavaDoc;
34 import javax.swing.border.Border JavaDoc;
35
36 import org.columba.api.gui.frame.IFrameMediator;
37 import org.columba.core.gui.base.CheckBoxWithMnemonic;
38 import org.columba.core.gui.base.LabelWithMnemonic;
39 import org.columba.mail.config.AccountItem;
40 import org.columba.mail.config.MailConfig;
41 import org.columba.mail.config.SpecialFoldersItem;
42 import org.columba.mail.folder.IMailFolder;
43 import org.columba.mail.folder.IMailbox;
44 import org.columba.mail.gui.tree.FolderTreeModel;
45 import org.columba.mail.gui.tree.util.SelectFolderDialog;
46 import org.columba.mail.gui.tree.util.TreeNodeList;
47 import org.columba.mail.util.MailResourceLoader;
48
49 public class SpecialFoldersPanel extends DefaultPanel implements ActionListener JavaDoc {
50     private JLabel JavaDoc trashLabel;
51
52     private JButton JavaDoc trashButton;
53
54     private JLabel JavaDoc draftsLabel;
55
56     private JButton JavaDoc draftsButton;
57
58     private JLabel JavaDoc templatesLabel;
59
60     private JButton JavaDoc templatesButton;
61
62     private JLabel JavaDoc sentLabel;
63
64     private JButton JavaDoc sentButton;
65
66     private JLabel JavaDoc inboxLabel;
67
68     private JButton JavaDoc inboxButton;
69
70     private JCheckBox JavaDoc defaultAccountCheckBox;
71
72     private SpecialFoldersItem item;
73
74     private AccountItem accountItem;
75
76     private IFrameMediator mediator;
77
78     public SpecialFoldersPanel(IFrameMediator mediator,
79             AccountItem accountItem, SpecialFoldersItem item) {
80         super();
81
82         this.mediator = mediator;
83         this.item = item;
84         this.accountItem = accountItem;
85
86         initComponents();
87
88         updateComponents(true);
89     }
90
91     protected String JavaDoc getPath(String JavaDoc uid) {
92         
93         IMailbox f = (IMailbox) FolderTreeModel.getInstance().getFolder(uid);
94                 
95
96         if (f == null) {
97             return ""; //$NON-NLS-1$
98
}
99
100         return f.getTreePath();
101     }
102
103     protected String JavaDoc getUid(String JavaDoc treePath) {
104         TreeNodeList list = new TreeNodeList(treePath);
105         IMailbox f = (IMailbox) FolderTreeModel.getInstance().getFolder(list);
106
107         if (f == null) {
108             return ""; //$NON-NLS-1$
109
}
110
111         Integer JavaDoc i = new Integer JavaDoc(f.getId());
112
113         return i.toString();
114     }
115
116     protected boolean isPopAccount() {
117         return accountItem.isPopAccount();
118     }
119
120     protected void updateComponents(boolean b) {
121         if (b) {
122             if (!isPopAccount()) {
123                 trashButton
124                         .setText(getPath(item.get(SpecialFoldersItem.TRASH)));
125             }
126
127             draftsButton.setText(getPath(item.get(SpecialFoldersItem.DRAFTS)));
128             templatesButton.setText(getPath(item
129                     .get(SpecialFoldersItem.TEMPLATES)));
130             sentButton.setText(getPath(item.get(SpecialFoldersItem.SENT)));
131
132             if (isPopAccount()) {
133                 inboxButton
134                         .setText(getPath(item.get(SpecialFoldersItem.INBOX)));
135             }
136
137             defaultAccountCheckBox.setSelected(item
138                     .getBoolean(SpecialFoldersItem.USE_DEFAULT_ACCOUNT));
139
140             defaultAccountCheckBox.setEnabled(MailConfig.getInstance()
141                     .getAccountList().getDefaultAccountUid() == accountItem
142                     .getInteger(SpecialFoldersItem.UID));
143
144             if (defaultAccountCheckBox.isEnabled()
145                     && defaultAccountCheckBox.isSelected()) {
146                 showDefaultAccountWarning();
147             } else {
148                 layoutComponents();
149             }
150         } else {
151             if (!isPopAccount()) {
152                 item.setString(SpecialFoldersItem.TRASH, getUid(trashButton
153                         .getText()));
154             }
155
156             item.setString(SpecialFoldersItem.DRAFTS, getUid(draftsButton
157                     .getText()));
158             item.setString(SpecialFoldersItem.TEMPLATES, getUid(templatesButton
159                     .getText()));
160             item.setString(SpecialFoldersItem.SENT,
161                     getUid(sentButton.getText()));
162
163             if (isPopAccount()) {
164                 item.setString(SpecialFoldersItem.INBOX, getUid(inboxButton
165                         .getText()));
166             }
167
168             item.setBoolean(SpecialFoldersItem.USE_DEFAULT_ACCOUNT,
169                     defaultAccountCheckBox.isSelected());
170         }
171     }
172
173     protected void layoutComponents() {
174         setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
175
176         GridBagLayout JavaDoc mainLayout = new GridBagLayout JavaDoc();
177         GridBagConstraints JavaDoc mainConstraints = new GridBagConstraints JavaDoc();
178
179         mainConstraints.anchor = GridBagConstraints.NORTHWEST;
180         mainConstraints.fill = GridBagConstraints.HORIZONTAL;
181         mainConstraints.weightx = 1.0;
182
183         setLayout(mainLayout);
184
185         mainConstraints.gridwidth = GridBagConstraints.REMAINDER;
186         mainConstraints.insets = new Insets JavaDoc(0, 10, 5, 0);
187         mainLayout.setConstraints(defaultAccountCheckBox, mainConstraints);
188         add(defaultAccountCheckBox);
189
190         JPanel JavaDoc folderPanel = new JPanel JavaDoc();
191         Border JavaDoc b1 = BorderFactory.createEtchedBorder();
192         Border JavaDoc b2 = BorderFactory.createTitledBorder(b1, MailResourceLoader
193                 .getString("dialog", "account", "account_information"));
194
195         Border JavaDoc emptyBorder = BorderFactory.createEmptyBorder(5, 5, 5, 5);
196         Border JavaDoc border = BorderFactory.createCompoundBorder(b2, emptyBorder);
197         folderPanel.setBorder(border);
198
199         GridBagLayout JavaDoc layout = new GridBagLayout JavaDoc();
200         GridBagConstraints JavaDoc c = new GridBagConstraints JavaDoc();
201         folderPanel.setLayout(layout);
202
203         c.fill = GridBagConstraints.HORIZONTAL;
204         c.anchor = GridBagConstraints.WEST;
205
206         if (isPopAccount()) {
207             c.weightx = 0.1;
208             c.gridwidth = GridBagConstraints.RELATIVE;
209             layout.setConstraints(inboxLabel, c);
210             folderPanel.add(inboxLabel);
211
212             c.gridwidth = GridBagConstraints.REMAINDER;
213             c.weightx = 0.9;
214             layout.setConstraints(inboxButton, c);
215             folderPanel.add(inboxButton);
216         }
217
218         c.weightx = 0.1;
219         c.gridwidth = GridBagConstraints.RELATIVE;
220         layout.setConstraints(draftsLabel, c);
221         folderPanel.add(draftsLabel);
222         c.gridwidth = GridBagConstraints.REMAINDER;
223         c.weightx = 0.9;
224         layout.setConstraints(draftsButton, c);
225         folderPanel.add(draftsButton);
226
227         c.weightx = 0.1;
228         c.gridwidth = GridBagConstraints.RELATIVE;
229         layout.setConstraints(templatesLabel, c);
230         folderPanel.add(templatesLabel);
231         c.gridwidth = GridBagConstraints.REMAINDER;
232         c.weightx = 0.9;
233         layout.setConstraints(templatesButton, c);
234         folderPanel.add(templatesButton);
235
236         c.weightx = 0.1;
237         c.gridwidth = GridBagConstraints.RELATIVE;
238         layout.setConstraints(sentLabel, c);
239         folderPanel.add(sentLabel);
240         c.gridwidth = GridBagConstraints.REMAINDER;
241         c.weightx = 0.9;
242         layout.setConstraints(sentButton, c);
243         folderPanel.add(sentButton);
244
245         if (!isPopAccount()) {
246             c.weightx = 0.1;
247             c.gridwidth = GridBagConstraints.RELATIVE;
248             layout.setConstraints(trashLabel, c);
249             folderPanel.add(trashLabel);
250             c.gridwidth = GridBagConstraints.REMAINDER;
251             c.weightx = 0.9;
252             layout.setConstraints(trashButton, c);
253             folderPanel.add(trashButton);
254         }
255
256         mainConstraints.gridwidth = GridBagConstraints.REMAINDER;
257         mainConstraints.insets = new Insets JavaDoc(0, 0, 0, 0);
258         mainLayout.setConstraints(folderPanel, mainConstraints);
259         add(folderPanel);
260
261         mainConstraints.gridheight = GridBagConstraints.REMAINDER;
262         mainConstraints.weighty = 1.0;
263         mainConstraints.fill = GridBagConstraints.VERTICAL;
264
265         Component JavaDoc vglue = Box.createVerticalGlue();
266         mainLayout.setConstraints(vglue, mainConstraints);
267         add(vglue);
268     }
269
270     protected void showDefaultAccountWarning() {
271         setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
272
273         GridBagLayout JavaDoc mainLayout = new GridBagLayout JavaDoc();
274         GridBagConstraints JavaDoc mainConstraints = new GridBagConstraints JavaDoc();
275
276         setLayout(mainLayout);
277
278         mainConstraints.gridwidth = GridBagConstraints.REMAINDER;
279         mainConstraints.anchor = GridBagConstraints.NORTHWEST;
280         mainConstraints.weightx = 1.0;
281         mainConstraints.insets = new Insets JavaDoc(0, 10, 5, 0);
282         mainLayout.setConstraints(defaultAccountCheckBox, mainConstraints);
283         add(defaultAccountCheckBox);
284
285         mainConstraints = new GridBagConstraints JavaDoc();
286         mainConstraints.weighty = 1.0;
287         mainConstraints.gridwidth = GridBagConstraints.REMAINDER;
288
289         /*
290          * mainConstraints.fill = GridBagConstraints.BOTH;
291          * mainConstraints.insets = new Insets(0, 0, 0, 0);
292          * mainConstraints.gridwidth = GridBagConstraints.REMAINDER;
293          * mainConstraints.weightx = 1.0; mainConstraints.weighty = 1.0;
294          */

295         JLabel JavaDoc label = new JLabel JavaDoc(MailResourceLoader.getString("dialog",
296                 "account", "using_default_account_settings"));
297         Font JavaDoc newFont = label.getFont().deriveFont(Font.BOLD);
298         label.setFont(newFont);
299         mainLayout.setConstraints(label, mainConstraints);
300         add(label);
301     }
302
303     protected void initComponents() {
304         defaultAccountCheckBox = new CheckBoxWithMnemonic(MailResourceLoader
305                 .getString("dialog", "account", "use_default_account_settings"));
306
307         // defaultAccountCheckBox.setEnabled(false);
308
defaultAccountCheckBox.setActionCommand("DEFAULT_ACCOUNT");
309         defaultAccountCheckBox.addActionListener(this);
310
311         if (isPopAccount()) {
312             inboxLabel = new LabelWithMnemonic(MailResourceLoader.getString(
313                     "dialog", "account", "inbox_folder")); //$NON-NLS-1$
314
inboxButton = new JButton JavaDoc();
315             inboxButton.setActionCommand("INBOX"); //$NON-NLS-1$
316
inboxButton.addActionListener(this);
317             inboxLabel.setLabelFor(inboxButton);
318         }
319
320         draftsLabel = new LabelWithMnemonic(MailResourceLoader.getString(
321                 "dialog", "account", "drafts_folder")); //$NON-NLS-1$
322
draftsButton = new JButton JavaDoc();
323         draftsButton.setActionCommand("DRAFTS"); //$NON-NLS-1$
324
draftsButton.addActionListener(this);
325         draftsLabel.setLabelFor(draftsButton);
326
327         templatesLabel = new LabelWithMnemonic(MailResourceLoader.getString(
328                 "dialog", "account", "templates_folder")); //$NON-NLS-1$
329
templatesButton = new JButton JavaDoc();
330         templatesButton.setActionCommand("TEMPLATES"); //$NON-NLS-1$
331
templatesButton.addActionListener(this);
332         templatesLabel.setLabelFor(templatesButton);
333
334         sentLabel = new LabelWithMnemonic(MailResourceLoader.getString(
335                 "dialog", "account", "sent_folder")); //$NON-NLS-1$
336
sentButton = new JButton JavaDoc();
337         sentButton.setActionCommand("SENT"); //$NON-NLS-1$
338
sentButton.addActionListener(this);
339         sentLabel.setLabelFor(sentButton);
340
341         if (!isPopAccount()) {
342             trashLabel = new LabelWithMnemonic(MailResourceLoader.getString(
343                     "dialog", "account", "trash_folder")); //$NON-NLS-1$
344
trashButton = new JButton JavaDoc();
345             trashButton.setActionCommand("TRASH"); //$NON-NLS-1$
346
trashButton.addActionListener(this);
347             trashLabel.setLabelFor(trashButton);
348         }
349     }
350
351     public void actionPerformed(ActionEvent JavaDoc e) {
352         String JavaDoc action = e.getActionCommand();
353
354         if (action.equals("TRASH")) //$NON-NLS-1$
355
{
356             SelectFolderDialog dialog = new SelectFolderDialog(mediator);
357
358             if (dialog.success()) {
359                 IMailFolder selectedFolder = (IMailFolder) dialog
360                         .getSelectedFolder();
361                 String JavaDoc path = selectedFolder.getTreePath();
362
363                 trashButton.setText(path);
364
365                 // int uid = selectedFolder.getUid();
366
// item.setTrash( new Integer(uid).toString() );
367
}
368         } else if (action.equals("INBOX")) //$NON-NLS-1$
369
{
370             SelectFolderDialog dialog = new SelectFolderDialog(mediator);
371
372             if (dialog.success()) {
373                 IMailFolder selectedFolder = (IMailFolder) dialog
374                         .getSelectedFolder();
375                 String JavaDoc path = selectedFolder.getTreePath();
376
377                 inboxButton.setText(path);
378
379                 // int uid = selectedFolder.getUid();
380
// item.setInbox( new Integer(uid).toString() );
381
}
382         } else if (action.equals("DRAFTS")) //$NON-NLS-1$
383
{
384             SelectFolderDialog dialog = new SelectFolderDialog(mediator);
385
386             if (dialog.success()) {
387                 IMailFolder selectedFolder = (IMailFolder) dialog
388                         .getSelectedFolder();
389                 String JavaDoc path = selectedFolder.getTreePath();
390
391                 draftsButton.setText(path);
392
393                 // int uid = selectedFolder.getUid();
394
// item.setDrafts( new Integer(uid).toString() );
395
}
396         } else if (action.equals("TEMPLATES")) //$NON-NLS-1$
397
{
398             SelectFolderDialog dialog = new SelectFolderDialog(mediator);
399
400             if (dialog.success()) {
401                 IMailFolder selectedFolder = (IMailFolder) dialog
402                         .getSelectedFolder();
403                 String JavaDoc path = selectedFolder.getTreePath();
404
405                 templatesButton.setText(path);
406
407                 // int uid = selectedFolder.getUid();
408
// item.setTemplates( new Integer(uid).toString() );
409
}
410         } else if (action.equals("SENT")) //$NON-NLS-1$
411
{
412             SelectFolderDialog dialog = new SelectFolderDialog(mediator);
413
414             if (dialog.success()) {
415                 IMailFolder selectedFolder = (IMailFolder) dialog
416                         .getSelectedFolder();
417                 String JavaDoc path = selectedFolder.getTreePath();
418
419                 sentButton.setText(path);
420
421                 // int uid = selectedFolder.getUid();
422
// item.setSent( new Integer(uid).toString() );
423
}
424         } else if (action.equals("DEFAULT_ACCOUNT")) {
425             removeAll();
426
427             if (defaultAccountCheckBox.isSelected()) {
428                 showDefaultAccountWarning();
429             } else {
430                 layoutComponents();
431             }
432
433             revalidate();
434         }
435     }
436
437     public boolean isFinished() {
438         boolean result = true;
439
440         return result;
441     }
442 }
Popular Tags