001: //The contents of this file are subject to the Mozilla Public License Version 1.1
002: //(the "License"); you may not use this file except in compliance with the
003: //License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
004: //
005: //Software distributed under the License is distributed on an "AS IS" basis,
006: //WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
007: //for the specific language governing rights and
008: //limitations under the License.
009: //
010: //The Original Code is "The Columba Project"
011: //
012: //The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
013: //Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
014: //
015: //All Rights Reserved.
016: package org.columba.mail.gui.table.action;
017:
018: import java.awt.Toolkit;
019: import java.awt.event.ActionEvent;
020: import java.awt.event.KeyEvent;
021:
022: import javax.swing.KeyStroke;
023:
024: import org.columba.api.gui.frame.IFrameMediator;
025: import org.columba.api.selection.ISelectionListener;
026: import org.columba.api.selection.SelectionChangedEvent;
027: import org.columba.core.command.CommandProcessor;
028: import org.columba.core.gui.action.AbstractColumbaAction;
029: import org.columba.core.resourceloader.ImageLoader;
030: import org.columba.mail.command.IMailFolderCommandReference;
031: import org.columba.mail.folder.IMailbox;
032: import org.columba.mail.folder.RootFolder;
033: import org.columba.mail.folder.command.ExpungeFolderCommand;
034: import org.columba.mail.folder.command.MarkMessageCommand;
035: import org.columba.mail.folder.command.MoveMessageCommand;
036: import org.columba.mail.gui.frame.MailFrameMediator;
037: import org.columba.mail.gui.messageframe.MessageFrameController;
038: import org.columba.mail.gui.table.selection.TableSelectionChangedEvent;
039: import org.columba.mail.util.MailResourceLoader;
040:
041: /**
042: * @author frd
043: *
044: * To change this generated comment go to Window>Preferences>Java>Code
045: * Generation>Code and Comments
046: */
047: public class DeleteMessageAction extends AbstractColumbaAction
048: implements ISelectionListener {
049: public DeleteMessageAction(IFrameMediator frameMediator) {
050: super (frameMediator, MailResourceLoader.getString("menu",
051: "mainframe", "menu_message_delete"));
052:
053: // toolbar text
054: putValue(TOOLBAR_NAME, MailResourceLoader.getString("menu",
055: "mainframe", "menu_message_delete_toolbar"));
056:
057: // tooltip text
058: putValue(SHORT_DESCRIPTION, MailResourceLoader.getString(
059: "menu", "mainframe", "menu_message_delete_tooltip")
060: .replaceAll("&", ""));
061:
062: // icon for menu
063: putValue(SMALL_ICON, ImageLoader
064: .getSmallIcon("user-trash-full.png"));
065:
066: // icon for toolbar
067: putValue(LARGE_ICON, ImageLoader.getIcon("user-trash-full.png"));
068:
069: // shortcut key
070: putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_D,
071: Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
072:
073: // disable toolbar text
074: setShowToolBarText(false);
075:
076: setEnabled(false);
077:
078: ((MailFrameMediator) frameMediator)
079: .registerTableSelectionListener(this );
080: }
081:
082: /*
083: * (non-Javadoc)
084: *
085: * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
086: */
087: public void actionPerformed(ActionEvent evt) {
088:
089: IMailFolderCommandReference r = ((MailFrameMediator) getFrameMediator())
090: .getTableSelection();
091: r.setMarkVariant(MarkMessageCommand.MARK_AS_EXPUNGED);
092:
093: IMailbox folder = (IMailbox) r.getSourceFolder();
094: String uid = folder.getConfiguration().get("uid");
095: IMailbox trash = (IMailbox) ((RootFolder) folder
096: .getRootFolder()).getTrashFolder();
097:
098: // Mark the messages as deleted
099: CommandProcessor.getInstance().addOp(new MarkMessageCommand(r));
100:
101: // Folder trash = (AbstractMessageFolder)
102: // MainInterface.treeModel.getTrashFolder();
103: // trash folder has uid==105
104: if (uid.equals(trash.getId())) {
105: // trash folder is selected
106: // -> delete message
107: CommandProcessor.getInstance().addOp(
108: new ExpungeFolderCommand(r));
109: } else {
110: // -> move messages to trash
111: IMailbox destFolder = trash;
112:
113: IMailFolderCommandReference result = ((MailFrameMediator) getFrameMediator())
114: .getTableSelection();
115: result.setDestinationFolder(destFolder);
116:
117: MoveMessageCommand c = new MoveMessageCommand(result);
118:
119: CommandProcessor.getInstance().addOp(c);
120: }
121:
122: // if this is a message-viewer frame viewing a message only
123: // the window should be closed, too
124: if (getFrameMediator() instanceof MessageFrameController) {
125: // close window
126: getFrameMediator().fireClosed();
127: }
128: }
129:
130: /*
131: * (non-Javadoc)
132: *
133: * @see org.columba.core.gui.util.ISelectionListener#selectionChanged(org.columba.core.gui.util.SelectionChangedEvent)
134: */
135: public void selectionChanged(SelectionChangedEvent e) {
136: setEnabled(((TableSelectionChangedEvent) e).getUids().length > 0);
137: }
138: }
|