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 44 public class DownAction extends AbstractColumbaAction { 45 46 47 private static final Logger LOG = Logger 48 .getLogger("org.columba.mail.gui.table.action"); 49 50 ITableController tableController; 51 52 IFrameMediator frameController; 53 54 public DownAction(IFrameMediator frameController) { 55 super(frameController, "DownAction"); 56 this.tableController = ((TableViewOwner) frameController) 57 .getTableController(); 58 this.frameController = frameController; 59 } 60 61 66 public void actionPerformed(ActionEvent arg0) { 67 LOG.info("action down performed"); 68 69 IMailFolderCommandReference r = ((MailFrameMediator) frameController) 71 .getTableSelection(); 72 73 Object [] uids = r.getUids(); 75 LOG.info("curr uids: " + uids); 76 77 DefaultMutableTreeNode currNode = (DefaultMutableTreeNode ) tableController 79 .getMessageNode(uids[0]); 80 LOG.info("currNode: " + currNode); 81 82 DefaultMutableTreeNode nextNode = currNode.getNextNode(); 84 85 if (nextNode == null) { 87 return; 88 } 89 90 LOG.info("nextNode: " + nextNode); 91 92 Object [] nextUids = new Object [1]; 94 nextUids[0] = ((MessageNode) nextNode).getUid(); 95 LOG.info("prevUids: " + nextUids); 96 97 r.setUids(nextUids); 99 100 IMessageNode[] nodes = new MessageNode[nextUids.length]; 102 103 for (int i = 0; i < nextUids.length; i++) { 104 nodes[i] = tableController.getMessageNode(nextUids[i]); 105 } 106 107 boolean node_ok = true; 108 109 for (int i = 0; i < nodes.length; i++) { 110 if (nodes[i] == null) { 111 node_ok = false; 112 113 break; 114 } 115 } 116 117 if (node_ok) { 119 tableController.setSelected(nextUids); 121 122 ((IMailbox) r.getSourceFolder()).setLastSelection(nextUids[0]); 124 125 tableController.makeSelectedRowVisible(); 126 127 MailFolderCommandReference refNew = new MailFolderCommandReference( 128 r.getSourceFolder(), nextUids); 129 130 CommandProcessor.getInstance().addOp( 132 new ViewMessageCommand(frameController, refNew)); 133 } 134 } 135 } 136 | Popular Tags |