1 package org.columba.mail.gui.table.action; 17 18 import java.awt.event.ActionEvent ; 19 import java.util.logging.Logger ; 20 21 import javax.swing.tree.DefaultMutableTreeNode ; 22 23 import org.columba.api.gui.frame.IFrameMediator; 24 import org.columba.core.command.CommandProcessor; 25 import org.columba.core.gui.action.AbstractColumbaAction; 26 import org.columba.mail.command.IMailFolderCommandReference; 27 import org.columba.mail.command.MailFolderCommandReference; 28 import org.columba.mail.folder.IMailbox; 29 import org.columba.mail.gui.frame.MailFrameMediator; 30 import org.columba.mail.gui.frame.TableViewOwner; 31 import org.columba.mail.gui.message.command.ViewMessageCommand; 32 import org.columba.mail.gui.table.IMessageNode; 33 import org.columba.mail.gui.table.ITableController; 34 import org.columba.mail.gui.table.model.MessageNode; 35 36 43 public class UpAction extends AbstractColumbaAction { 44 45 46 private static final Logger LOG = Logger 47 .getLogger("org.columba.mail.gui.table.action"); 48 49 ITableController tableController; 50 51 IFrameMediator frameController; 52 53 public UpAction(IFrameMediator frameController) { 54 super(frameController, "UpAction"); 55 this.tableController = ((TableViewOwner) frameController) 56 .getTableController(); 57 this.frameController = frameController; 58 } 59 60 63 public void actionPerformed(ActionEvent arg0) { 64 LOG.info("action up performed"); 65 66 IMailFolderCommandReference r = ((MailFrameMediator) frameController) 68 .getTableSelection(); 69 IMailFolderCommandReference ref = r; 70 LOG.info("folderCommandRef: " + ref); 71 72 Object [] uids = ref.getUids(); 74 LOG.info("curr uids: " + uids); 75 76 if (uids.length == 0) { 79 return; 80 } 81 82 DefaultMutableTreeNode currNode = (DefaultMutableTreeNode ) tableController 84 .getMessageNode(uids[0]); 85 LOG.info("currNode: " + currNode); 86 87 DefaultMutableTreeNode prevNode = currNode.getPreviousNode(); 89 LOG.info("prevNode: " + prevNode); 90 91 Object [] prevUids = new Object [1]; 92 prevUids[0] = ((MessageNode) prevNode).getUid(); 93 LOG.info("prevUids: " + prevUids); 94 ref.setUids(prevUids); 95 96 IMessageNode[] nodes = new MessageNode[prevUids.length]; 98 99 for (int i = 0; i < prevUids.length; i++) { 100 nodes[i] = tableController.getMessageNode(prevUids[i]); 101 } 102 103 boolean node_ok = true; 104 105 for (int i = 0; i < nodes.length; i++) { 106 if (nodes[i] == null) { 107 node_ok = false; 108 109 break; 110 } 111 } 112 113 if (node_ok) { 115 tableController.setSelected(prevUids); 117 118 ((IMailbox) ref.getSourceFolder()).setLastSelection(prevUids[0]); 120 121 tableController.makeSelectedRowVisible(); 122 123 MailFolderCommandReference refNew = new MailFolderCommandReference( 124 ref.getSourceFolder(), prevUids); 125 126 CommandProcessor.getInstance().addOp( 128 new ViewMessageCommand(this.frameController, refNew)); 129 } 130 } 131 } | Popular Tags |