1 package org.columba.mail.gui.table.action; 17 18 import java.awt.event.ActionEvent ; 19 20 import org.columba.api.gui.frame.IFrameMediator; 21 import org.columba.api.selection.ISelectionListener; 22 import org.columba.api.selection.SelectionChangedEvent; 23 import org.columba.core.command.CommandProcessor; 24 import org.columba.core.gui.action.AbstractColumbaAction; 25 import org.columba.mail.command.IMailFolderCommandReference; 26 import org.columba.mail.gui.frame.MailFrameMediator; 27 import org.columba.mail.gui.frame.TableViewOwner; 28 import org.columba.mail.gui.message.command.ViewMessageCommand; 29 import org.columba.mail.gui.table.IMessageNode; 30 import org.columba.mail.gui.table.ITableController; 31 import org.columba.mail.gui.table.model.MessageNode; 32 import org.columba.mail.gui.table.selection.TableSelectionChangedEvent; 33 import org.columba.mail.message.IColumbaHeader; 34 import org.columba.mail.util.MailResourceLoader; 35 36 47 public class NextUnreadMessageAction extends AbstractColumbaAction implements 48 ISelectionListener { 49 59 public NextUnreadMessageAction(IFrameMediator frameMediator) { 60 super(frameMediator, MailResourceLoader.getString("menu", "mainframe", 61 "menu_view_nextunreadmessage")); 62 63 putValue(SHORT_DESCRIPTION, MailResourceLoader.getString("menu", 65 "mainframe", "menu_view_nextunreadmessage_tooltip").replaceAll( 66 "&", "")); 67 68 72 74 76 80 } 81 82 86 public void actionPerformed(ActionEvent evt) { 87 IMailFolderCommandReference r = ((MailFrameMediator) getFrameMediator()) 88 .getTableSelection(); 89 90 ITableController table = ((TableViewOwner) getFrameMediator()) 91 .getTableController(); 92 if ( table == null ) return; 93 94 if (r == null) 95 return; 96 97 IMessageNode[] nodes = table.getSelectedNodes(); 98 if (nodes.length == 0) 99 return; 100 101 MessageNode node = (MessageNode) nodes[0]; 102 MessageNode nextNode = node; 103 boolean seen = true; 104 while (seen) { 105 nextNode = (MessageNode) nextNode.getNextNode(); 106 if (nextNode == null) 107 return; 108 109 IColumbaHeader h = nextNode.getHeader(); 110 seen = h.getFlags().getSeen(); 111 } 112 113 r.setUids(new Object [] { nextNode.getUid() }); 115 ((MailFrameMediator) getFrameMediator()).setTableSelection(r); 116 CommandProcessor.getInstance().addOp(new ViewMessageCommand( 117 getFrameMediator(), r)); 118 table.setSelected(new Object [] { nextNode.getUid() }); 120 } 121 122 126 public void selectionChanged(SelectionChangedEvent e) { 127 setEnabled(((TableSelectionChangedEvent) e).getUids().length > 0); 128 } 129 } | Popular Tags |