KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lucane > applications > jmail > base > JMailWindow


1 package org.lucane.applications.jmail.base;
2
3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
4  * This file is part of JMail *
5  * Copyright (C) 2002-2003 Yvan Norsa <norsay@wanadoo.fr> *
6  * *
7  * JMail is free software; you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 2 of the License, or *
10  * any later version. *
11  * *
12  * JMail is distributed in the hope that it will be useful, *
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15  * GNU General Public License for more details. *
16  * *
17  * You should have received a copy of the GNU General Public License along *
18  * with JMail; if not, write to the Free Software Foundation, Inc., *
19  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20  * *
21  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

22
23 import java.awt.*;
24 import java.awt.event.*;
25 import java.util.*;
26 import javax.mail.*;
27 import javax.swing.*;
28
29 import org.lucane.applications.jmail.JMailPlugin;
30 import org.lucane.client.widgets.ManagedWindow;
31
32 /** Main window */
33 public class JMailWindow extends ManagedWindow {
34     /** Language resource */
35     private ResourceBundle msgBundle;
36
37     private JMenuBar menuBar;
38
39     /** "File" menu */
40     private JMenu fileMenu;
41
42     /** "New" sub-menu */
43     private JMenu newMenu;
44
45     /** "Mail" menu item */
46     private JMenuItem newMsgMenuItem;
47
48     /** "Folder" menu item */
49     private JMenuItem newFolderMenuItem;
50
51     /** "Open..." menu item */
52     private JMenuItem openMenuItem;
53
54     private JMenuItem saveMenuItem;
55
56     private JMenu folderMenu;
57     private JMenuItem folderNewMenuItem;
58     private JMenuItem folderDeleteMenuItem;
59
60     private JMenuItem printMenuItem;
61
62
63     /** "Exit" menu item */
64     private JMenuItem exitMenuItem;
65
66     /** "Edit" menu */
67     private JMenu editMenu;
68
69     /** "Move in folder..." menu item */
70     private JMenuItem moveMenuItem;
71
72     /** "Copy in folder..." menu item */
73     private JMenuItem copyMenuItem;
74
75     /** "Delete" menu item */
76     private JMenuItem deleteMenuItem;
77
78     /** "Mail" menu */
79     private JMenu messageMenu;
80
81     /** "New mail" menu item */
82     private JMenuItem newMsgMenuItem2;
83
84     /** "Reply..." menu item */
85     private JMenuItem replyMenuItem;
86
87     /** "Reply all..." menu item */
88     private JMenuItem replyallMenuItem;
89
90     /** "Forward..." menu item */
91     private JMenuItem forwardMenuItem;
92
93     private MainPanel panel;
94
95     /** User profile */
96     private Profile profile;
97
98     private JMailWindowListener listener;
99
100     private JMailPlugin plugin;
101
102     /**
103      * Constructor
104      *
105      * @param plugin the plugin
106      */

107     public JMailWindow(JMailPlugin plugin) {
108         super(plugin, plugin.getTitle());
109         this.plugin = plugin;
110         
111         this.msgBundle = plugin.getBundle();
112         this.profile = plugin.getProfile();
113         
114         init();
115         if (profile.getType().compareTo("pop3") == 0)
116             setFolderMenuItemsEnabled(false);
117
118         setPanel();
119
120         addWindowListener(listener);
121         setPreferredSize(new Dimension(800, 600));
122         show();
123
124         if (profile.getType().compareTo("pop3") != 0) {
125             FolderListener f = new FolderListener(profile, panel);
126             f.start();
127         }
128     }
129
130     /** Initialisation of menus */
131     private void init() {
132         listener = new JMailWindowListener();
133
134         /** Init menus */
135         menuBar = new JMenuBar();
136
137         fileMenu = new JMenu(msgBundle.getString("common.fileMenu"));
138         fileMenu.setMnemonic('F');
139
140         newMenu = new JMenu(msgBundle.getString("JMailWindow.newMenuLabel"));
141         newMenu.setMnemonic('N');
142         fileMenu.add(newMenu);
143
144         newMsgMenuItem =
145             newMenu.add(msgBundle.getString("common.mail"));
146         newMsgMenuItem.setAccelerator(
147             KeyStroke.getKeyStroke('N', Event.CTRL_MASK));
148         newMsgMenuItem.addActionListener(listener);
149
150         newMenu.addSeparator();
151
152         newFolderMenuItem =
153             newMenu.add(
154                 msgBundle.getString("common.folder"));
155         newFolderMenuItem.setMnemonic('R');
156         newFolderMenuItem.addActionListener(listener);
157
158         openMenuItem =
159             fileMenu.add(msgBundle.getString("common.open"));
160         openMenuItem.setAccelerator(
161             KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
162         openMenuItem.setMnemonic('O');
163         openMenuItem.setEnabled(false);
164         openMenuItem.addActionListener(listener);
165
166         saveMenuItem =
167             fileMenu.add(msgBundle.getString("common.save"));
168         saveMenuItem.setAccelerator(
169             KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
170         saveMenuItem.setMnemonic('E');
171         saveMenuItem.setEnabled(false);
172         saveMenuItem.addActionListener(listener);
173
174         fileMenu.addSeparator();
175
176         folderMenu =
177             new JMenu(msgBundle.getString("common.folder"));
178         folderMenu.setMnemonic('D');
179         fileMenu.add(folderMenu);
180
181         folderNewMenuItem =
182             folderMenu.add(
183                 msgBundle.getString("common.new"));
184         folderNewMenuItem.addActionListener(listener);
185
186         folderDeleteMenuItem =
187             folderMenu.add(
188                 msgBundle.getString("common.delete"));
189         folderDeleteMenuItem.setEnabled(false);
190         folderDeleteMenuItem.addActionListener(listener);
191
192         fileMenu.addSeparator();
193
194         printMenuItem =
195             fileMenu.add(msgBundle.getString("common.print"));
196         printMenuItem.setAccelerator(
197             KeyStroke.getKeyStroke('P', Event.CTRL_MASK));
198         printMenuItem.setMnemonic('I');
199         printMenuItem.setEnabled(false);
200         printMenuItem.addActionListener(listener);
201
202         fileMenu.addSeparator();
203
204         exitMenuItem =
205             fileMenu.add(msgBundle.getString("JMailWindow.exitMenuItemLabel"));
206         exitMenuItem.setAccelerator(
207             KeyStroke.getKeyStroke('Q', Event.CTRL_MASK));
208         exitMenuItem.setMnemonic('Q');
209         exitMenuItem.addActionListener(listener);
210
211         fileMenu = menuBar.add(fileMenu);
212
213         editMenu = new JMenu(msgBundle.getString("JMailWindow.editMenuLabel"));
214         editMenu.setMnemonic('E');
215
216         moveMenuItem =
217             editMenu.add(msgBundle.getString("JMailWindow.moveMenuItemLabel"));
218         moveMenuItem.setAccelerator(
219             KeyStroke.getKeyStroke('V', Event.CTRL_MASK + Event.SHIFT_MASK));
220         moveMenuItem.setMnemonic('D');
221         moveMenuItem.setEnabled(false);
222         moveMenuItem.addActionListener(listener);
223
224         copyMenuItem =
225             editMenu.add(msgBundle.getString("JMailWindow.copyMenuItemLabel"));
226         copyMenuItem.setMnemonic('C');
227         copyMenuItem.setEnabled(false);
228         copyMenuItem.addActionListener(listener);
229
230         editMenu.addSeparator();
231
232         deleteMenuItem =
233             editMenu.add(
234                 msgBundle.getString("common.delete"));
235         deleteMenuItem.setMnemonic('E');
236         deleteMenuItem.setEnabled(false);
237         deleteMenuItem.addActionListener(listener);
238
239         editMenu = menuBar.add(editMenu);
240
241         messageMenu =
242             new JMenu(msgBundle.getString("common.mail"));
243         messageMenu.setMnemonic('M');
244
245         newMsgMenuItem2 =
246             messageMenu.add(
247                 msgBundle.getString("JMailWindow.newMsgMenuItem2Label"));
248         newMsgMenuItem2.setAccelerator(
249             KeyStroke.getKeyStroke('N', Event.CTRL_MASK));
250         newMsgMenuItem2.setMnemonic('N');
251         newMsgMenuItem2.addActionListener(listener);
252
253         messageMenu.addSeparator();
254
255         replyMenuItem =
256             messageMenu.add(
257                 msgBundle.getString("common.reply"));
258         replyMenuItem.setAccelerator(
259             KeyStroke.getKeyStroke('R', Event.CTRL_MASK));
260         replyMenuItem.setMnemonic('R');
261         replyMenuItem.setEnabled(false);
262         replyMenuItem.addActionListener(listener);
263
264         replyallMenuItem =
265             messageMenu.add(
266                 msgBundle.getString("common.replyAll"));
267         replyallMenuItem.setAccelerator(
268             KeyStroke.getKeyStroke('R', Event.CTRL_MASK + Event.SHIFT_MASK));
269         replyallMenuItem.setMnemonic('t');
270         replyallMenuItem.setEnabled(false);
271         replyallMenuItem.addActionListener(listener);
272
273         forwardMenuItem =
274             messageMenu.add(
275                 msgBundle.getString("JMailWindow.forwardMenuItemLabel"));
276         forwardMenuItem.setAccelerator(
277             KeyStroke.getKeyStroke('F', Event.CTRL_MASK));
278         forwardMenuItem.setMnemonic('f');
279         forwardMenuItem.setEnabled(false);
280         forwardMenuItem.addActionListener(listener);
281
282         messageMenu = menuBar.add(messageMenu);
283
284         setJMenuBar(menuBar);
285     }
286
287     /**
288      * Enable or disable menu items related to a mail
289      *
290      * @param b
291      * activate or deactivate
292      */

293     protected final void setMenuItemsEnabled(boolean b) {
294         openMenuItem.setEnabled(b);
295         saveMenuItem.setEnabled(b);
296         //moveMenuItem.setEnabled(b);
297
//copyMenuItem.setEnabled(b);
298
deleteMenuItem.setEnabled(b);
299         replyMenuItem.setEnabled(b);
300         replyallMenuItem.setEnabled(b);
301         forwardMenuItem.setEnabled(b);
302     }
303
304     /**
305      * Enable or disable menu items related to folder
306      *
307      * @param b
308      * activate or deactivate
309      */

310     protected final void setFolderMenuItemsEnabled(boolean b) {
311         folderMenu.setEnabled(b);
312         newFolderMenuItem.setEnabled(b);
313         folderNewMenuItem.setEnabled(b);
314         folderDeleteMenuItem.setEnabled(b);
315         moveMenuItem.setEnabled(b);
316         copyMenuItem.setEnabled(b);
317     }
318
319     /** Properly disconnect and exit */
320     private void exit() {
321         panel.disconnect();
322
323         this.dispose();
324         plugin.exit();
325     }
326
327     /** Updates everything */
328     private void update() {
329         panel.disconnect();
330         setPanel();
331         SwingUtilities.updateComponentTreeUI(getContentPane());
332     }
333
334     /** Reloads the main panel */
335     private void setPanel() {
336         panel = new MainPanel(plugin, this, profile, msgBundle);
337         setContentPane(panel);
338     }
339
340     /** Listener for this class */
341     private final class JMailWindowListener
342         extends WindowAdapter
343         implements ActionListener {
344         /**
345          * Method called when the windows is closed
346          *
347          * @param e
348          * triggered event
349          */

350         public final void windowClosing(WindowEvent e) {
351             exit();
352         }
353
354         /**
355          * This method is invoked when an event is triggered
356          *
357          * @param e
358          * event
359          */

360         public final void actionPerformed(ActionEvent e) {
361             JMenuItem i = (JMenuItem) e.getSource();
362
363             if (i == newMsgMenuItem || i == newMsgMenuItem2) {
364                 SendMessageDialog sm = new SendMessageDialog(plugin, profile, msgBundle);
365                 sm.dispose();
366             } else if (i == newFolderMenuItem || i == folderNewMenuItem)
367                 panel.newFolder();
368
369             else if (i == folderDeleteMenuItem)
370                 panel.deleteFolder();
371
372             else if (i == openMenuItem) {
373                 Message currentMessage = panel.getCurrent();
374
375                 new ReadMessageFrame(
376                         plugin,
377                     panel.getStore(),
378                     panel.getCurrentFolder(),
379                     panel,
380                     profile,
381                     currentMessage,
382                     panel.getMailContent(currentMessage).toString(),
383                     msgBundle,
384                     panel.isAttachmentVisible());
385             } else if (i == saveMenuItem)
386                 panel.save();
387
388             else if (i == printMenuItem) {
389                 /** TODO : do printing stuff */
390             }
391             else if (i == exitMenuItem)
392                 exit();
393
394             else if (i == moveMenuItem)
395                 panel.moveMsg();
396
397             else if (i == copyMenuItem)
398                 panel.copyMsg();
399
400             else if (i == deleteMenuItem)
401                 panel.delete();
402
403             else if (i == replyMenuItem)
404                 panel.reply();
405
406             else if (i == replyallMenuItem)
407                 panel.replyall();
408
409             else if (i == forwardMenuItem)
410                 panel.forward();
411
412         }
413     }
414 }
415
Popular Tags