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 PreviousUnreadMessageAction extends AbstractColumbaAction 48 implements ISelectionListener { 49 public PreviousUnreadMessageAction(IFrameMediator frameMediator) { 50 super(frameMediator, MailResourceLoader.getString("menu", "mainframe", 51 "menu_view_prevunreadmessage")); 52 53 putValue(SHORT_DESCRIPTION, MailResourceLoader.getString("menu", 55 "mainframe", "menu_view_prevunreadmessage_tooltip").replaceAll( 56 "&", "")); 57 58 62 64 66 70 } 71 72 76 public void actionPerformed(ActionEvent evt) { 77 IMailFolderCommandReference r = ((MailFrameMediator) getFrameMediator()) 78 .getTableSelection(); 79 ITableController table = ((TableViewOwner) getFrameMediator()) 80 .getTableController(); 81 if ( table == null ) return; 82 83 if (r == null) 84 return; 85 86 IMessageNode[] nodes = table.getSelectedNodes(); 87 if (nodes.length == 0) 88 return; 89 90 MessageNode node = (MessageNode) nodes[0]; 91 MessageNode previousNode = node; 92 boolean seen = true; 93 while (seen) { 94 previousNode = (MessageNode) previousNode.getPreviousNode(); 95 if (previousNode == null) 96 return; 97 98 IColumbaHeader h = previousNode.getHeader(); 99 seen = h.getFlags().getSeen(); 100 } 101 102 r.setUids(new Object [] { previousNode.getUid() }); 104 ((MailFrameMediator) getFrameMediator()).setTableSelection(r); 105 CommandProcessor.getInstance().addOp(new ViewMessageCommand( 106 getFrameMediator(), r)); 107 108 table.setSelected(new Object [] { previousNode.getUid() }); 110 } 111 112 116 public void selectionChanged(SelectionChangedEvent e) { 117 setEnabled(((TableSelectionChangedEvent) e).getUids().length > 0); 118 } 119 } | Popular Tags |