KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > folder > command > MoveMessageCommand


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.folder.command;
17
18 import java.util.logging.Logger JavaDoc;
19
20 import org.columba.api.command.ICommandReference;
21 import org.columba.api.command.IWorkerStatusController;
22 import org.columba.core.command.StatusObservableImpl;
23 import org.columba.core.command.Worker;
24 import org.columba.mail.command.IMailFolderCommandReference;
25 import org.columba.mail.folder.IMailbox;
26
27 /**
28  * Move selected messages from source to destination folder.
29  * <p>
30  * A dialog asks the user the destination folder to use.
31  *
32  * @author fdietz
33  */

34 public class MoveMessageCommand extends CopyMessageCommand {
35
36     /** JDK 1.4+ logging framework logger, used for logging. */
37     private static final Logger JavaDoc LOG = Logger
38             .getLogger("org.columba.mail.folder.command");
39
40     /**
41      * Constructor for MoveMessageCommand.
42      *
43      * @param frameMediator
44      * @param references
45      */

46     public MoveMessageCommand(ICommandReference reference) {
47         super(reference);
48     }
49
50     /**
51      * @see org.columba.api.command.Command#execute(Worker)
52      */

53     public void execute(IWorkerStatusController worker) throws Exception JavaDoc {
54
55         // get references
56
r = (IMailFolderCommandReference) getReference();
57
58         // get source folder
59
IMailbox srcFolder = (IMailbox) r.getSourceFolder();
60
61         // get destination foldedr
62
destFolder = (IMailbox) r.getDestinationFolder();
63
64         // cancel, if source equals destination folder
65
if ( srcFolder.getId() == destFolder.getId() ) return;
66         
67         // calling CopyMessageCommand.execute() here!
68
//super.execute(worker);
69
doExecute(worker, "move_messages", "err_copy_messages_retry",
70                 "err_copy_messages_ignore", "err_move_messages_msg",
71                 "err_move_messages_title", "move_messages_cancelled");
72
73         // get messgae UIDs
74
Object JavaDoc[] uids = r.getUids();
75
76         // register for status events
77
((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker);
78
79         // setting lastSelection to null
80
srcFolder.setLastSelection(null);
81
82         LOG.info("src=" + srcFolder + " dest=" + destFolder);
83
84         // update status message
85
worker.setDisplayText("Moving messages to " + destFolder.getName()
86                 + "...");
87         worker.setProgressBarMaximum(uids.length);
88
89         // mark all messages as expunged
90
srcFolder.markMessage(uids, MarkMessageCommand.MARK_AS_EXPUNGED);
91
92         // expunge folder
93
srcFolder.expungeFolder();
94
95         // We are done - clear the status message after a delay
96
worker.clearDisplayTextWithDelay();
97
98     }
99 }
Popular Tags