1 package org.columba.mail.gui.composer.action; 17 18 import java.awt.Toolkit ; 19 import java.awt.event.ActionEvent ; 20 import java.awt.event.KeyEvent ; 21 22 import javax.swing.KeyStroke ; 23 24 import org.columba.api.gui.frame.IFrameMediator; 25 import org.columba.core.command.CommandProcessor; 26 import org.columba.core.gui.action.AbstractColumbaAction; 27 import org.columba.core.resourceloader.ImageLoader; 28 import org.columba.mail.command.ComposerCommandReference; 29 import org.columba.mail.command.MailFolderCommandReference; 30 import org.columba.mail.config.AccountItem; 31 import org.columba.mail.config.SpecialFoldersItem; 32 import org.columba.mail.folder.IMailbox; 33 import org.columba.mail.folder.command.ExpungeFolderCommand; 34 import org.columba.mail.folder.command.MarkMessageCommand; 35 import org.columba.mail.gui.composer.ComposerController; 36 import org.columba.mail.gui.composer.ComposerModel; 37 import org.columba.mail.gui.composer.command.SaveMessageCommand; 38 import org.columba.mail.gui.tree.FolderTreeModel; 39 import org.columba.mail.util.MailResourceLoader; 40 import org.columba.ristretto.message.Flags; 41 42 45 public class SaveAsDraftAction extends AbstractColumbaAction { 46 public SaveAsDraftAction(IFrameMediator frameMediator) { 47 super(frameMediator, MailResourceLoader.getString("menu", "composer", 48 "menu_file_savedraft")); 49 50 putValue(SMALL_ICON, ImageLoader.getSmallIcon("document-save.png")); 51 putValue(LARGE_ICON, ImageLoader.getIcon("document-save.png")); 52 53 putValue(SHORT_DESCRIPTION, MailResourceLoader.getString("menu", 55 "composer", "menu_file_savedraft").replaceAll("&", "")); 56 57 putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, 59 Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 60 } 61 62 67 public void actionPerformed(ActionEvent evt) { 68 final ComposerController composerController = (ComposerController) getFrameMediator(); 69 70 composerController.updateComponents(false); 72 73 ComposerModel model = ((ComposerModel) composerController.getModel()); 74 75 AccountItem item = model.getAccountItem(); 77 SpecialFoldersItem folderItem = item.getSpecialFoldersItem(); 79 String str = folderItem.get("drafts"); 80 IMailbox destFolder = (IMailbox) FolderTreeModel.getInstance() 81 .getFolder(str); 82 83 if (model.getMessage().getHeader().getFlags().getDraft()) { 85 87 MailFolderCommandReference r = model.getSourceReference(); 89 if (r != null) { 90 r.setMarkVariant(MarkMessageCommand.MARK_AS_EXPUNGED); 91 CommandProcessor.getInstance().addOp(new MarkMessageCommand(r)); 92 CommandProcessor.getInstance().addOp( 93 new ExpungeFolderCommand(r)); 94 } 95 } 96 97 Flags flags = new Flags(); 99 flags.setSeen(true); 100 flags.setDraft(true); 101 model.getMessage().getHeader().setFlags(flags); 102 103 ComposerCommandReference r = new ComposerCommandReference( 105 composerController, destFolder); 106 r.setAppendSignature(false); 107 108 SaveMessageCommand c = new SaveMessageCommand(r); 110 111 CommandProcessor.getInstance().addOp(c); 112 } 113 } 114 | Popular Tags |