KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > composer > command > ForwardCommand


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.composer.command;
20
21 import java.io.InputStream JavaDoc;
22
23 import org.columba.api.command.ICommandReference;
24 import org.columba.api.command.IWorkerStatusController;
25 import org.columba.core.command.Command;
26 import org.columba.core.gui.frame.DefaultContainer;
27 import org.columba.mail.command.MailFolderCommandReference;
28 import org.columba.mail.composer.MessageBuilderHelper;
29 import org.columba.mail.folder.IMailbox;
30 import org.columba.mail.gui.composer.ComposerController;
31 import org.columba.mail.gui.composer.ComposerModel;
32 import org.columba.ristretto.message.BasicHeader;
33 import org.columba.ristretto.message.Header;
34 import org.columba.ristretto.message.InputStreamMimePart;
35 import org.columba.ristretto.message.MimeHeader;
36 import org.columba.ristretto.message.MimeType;
37
38 /**
39  * Forward message as attachment.
40  *
41  * @author fdietz, tstich, karlpeder
42  */

43 public class ForwardCommand extends Command {
44
45     protected ComposerController controller;
46
47     protected ComposerModel model;
48
49     /**
50      * Constructor for ForwardCommand.
51      *
52      * @param frameMediator
53      * @param references
54      */

55     public ForwardCommand(ICommandReference reference) {
56         super(reference);
57     }
58
59     public void updateGUI() throws Exception JavaDoc {
60         // open composer frame
61
controller = new ComposerController();
62         new DefaultContainer(controller);
63         
64         // apply model
65
controller.setComposerModel(model);
66
67         // model->view update
68
controller.updateComponents(true);
69     }
70
71     public void execute(IWorkerStatusController worker) throws Exception JavaDoc {
72         // get selected folder
73
IMailbox folder = (IMailbox) ((MailFolderCommandReference) getReference())
74                 .getSourceFolder();
75
76         // get first selected message
77
Object JavaDoc[] uids = ((MailFolderCommandReference) getReference()).getUids();
78
79         // get headerfields
80
Header header = folder.getHeaderFields(uids[0],
81                 new String JavaDoc[] { "Subject" });
82
83         // create composer model
84
model = new ComposerModel();
85
86         // ->set source reference in composermodel
87
// when replying this is the original sender's message
88
// you selected and replied to
89
MailFolderCommandReference ref = new MailFolderCommandReference(folder, uids);
90         model.setSourceReference(ref);
91
92         // set subject
93
model.setSubject(MessageBuilderHelper
94                 .createForwardSubject(new BasicHeader(header).getSubject()));
95
96         // initialize MimeHeader as RFC822-compliant-message
97
MimeHeader mimeHeader = new MimeHeader();
98         mimeHeader.setMimeType(new MimeType("message", "rfc822"));
99         mimeHeader.setContentDescription((String JavaDoc)folder.getAttribute(uids[0],"columba.subject"));
100         
101         // add mimepart to model
102

103         InputStream JavaDoc messageSourceStream = folder
104                 .getMessageSourceStream(uids[0]);
105         model.addMimePart(new InputStreamMimePart(mimeHeader,
106                 messageSourceStream));
107     }
108
109     /**
110      * Get composer model.
111      * <p>
112      * Needed for testcases.
113      *
114      * @return Returns the model.
115      */

116     public ComposerModel getModel() {
117         return model;
118     }
119 }
120
Popular Tags