KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > message > command > ViewMessageSourceCommand


1 //The contents of this file are subject to the Mozilla Public License Version 1.1
2
//(the "License"); you may not use this file except in compliance with the
3
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
4
//
5
//Software distributed under the License is distributed on an "AS IS" basis,
6
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
7
//for the specific language governing rights and
8
//limitations under the License.
9
//
10
//The Original Code is "The Columba Project"
11
//
12
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14
//
15
//All Rights Reserved.
16
package org.columba.mail.gui.message.command;
17
18 import java.io.BufferedInputStream JavaDoc;
19 import java.io.BufferedOutputStream JavaDoc;
20 import java.io.File JavaDoc;
21 import java.io.FileOutputStream JavaDoc;
22 import java.io.IOException JavaDoc;
23 import java.io.InputStream JavaDoc;
24 import java.io.OutputStream JavaDoc;
25
26 import org.columba.api.command.ICommandReference;
27 import org.columba.api.command.IWorkerStatusController;
28 import org.columba.core.command.Command;
29 import org.columba.core.command.StatusObservableImpl;
30 import org.columba.core.command.Worker;
31 import org.columba.core.desktop.ColumbaDesktop;
32 import org.columba.core.util.TempFileStore;
33 import org.columba.mail.command.IMailFolderCommandReference;
34 import org.columba.mail.folder.IMailbox;
35
36 /**
37  * @author freddy
38  *
39  * To change this generated comment edit the template variable "typecomment":
40  * Window>Preferences>Java>Templates. To enable and disable the creation of type
41  * comments go to Window>Preferences>Java>Code Generation.
42  */

43 public class ViewMessageSourceCommand extends Command {
44     protected File JavaDoc tempFile;
45
46     /**
47      * Constructor for ViewMessageSourceCommand.
48      *
49      * @param frameMediator
50      * @param references
51      */

52     public ViewMessageSourceCommand(ICommandReference reference) {
53         super(reference);
54     }
55
56     /**
57      * @see org.columba.api.command.Command#updateGUI()
58      */

59     public void updateGUI() throws Exception JavaDoc {
60         ColumbaDesktop.getInstance().open(tempFile);
61     }
62
63     /**
64      * @see org.columba.api.command.Command#execute(Worker)
65      */

66     public void execute(IWorkerStatusController worker) throws Exception JavaDoc {
67
68         IMailFolderCommandReference r = (IMailFolderCommandReference) getReference();
69
70         Object JavaDoc[] uids = r.getUids();
71
72         IMailbox folder = (IMailbox) r.getSourceFolder();
73
74         // register for status events
75
((StatusObservableImpl) folder.getObservable()).setWorker(worker);
76
77         Object JavaDoc uid = uids[0];
78
79         InputStream JavaDoc in = null;
80         OutputStream JavaDoc out = null;
81
82         try {
83             in = new BufferedInputStream JavaDoc(folder.getMessageSourceStream(uid));
84             tempFile = TempFileStore.createTempFileWithSuffix("txt");
85             out = new BufferedOutputStream JavaDoc(new FileOutputStream JavaDoc(tempFile));
86
87             byte[] buffer = new byte[1024];
88             int read;
89
90             while ((read = in.read(buffer, 0, buffer.length)) > 0) {
91                 out.write(buffer, 0, read);
92             }
93         } catch (IOException JavaDoc ioe) {
94             ioe.printStackTrace();
95         } finally {
96             if (in != null) {
97                 try {
98                     in.close();
99                 } catch (IOException JavaDoc ioe) {
100                 }
101             }
102
103             if (out != null) {
104                 try {
105                     out.close();
106                 } catch (IOException JavaDoc ioe) {
107                 }
108             }
109         }
110     }
111 }
112
Popular Tags