1 package org.columba.mail.gui.composer.command; 19 20 import java.util.Arrays ; 21 import java.util.Collections ; 22 import java.util.Iterator ; 23 import java.util.LinkedList ; 24 25 import org.columba.api.command.ICommandReference; 26 import org.columba.mail.composer.MessageBuilderHelper; 27 import org.columba.mail.config.AccountItem; 28 import org.columba.mail.config.MailConfig; 29 import org.columba.mail.folder.IMailbox; 30 import org.columba.ristretto.message.Address; 31 import org.columba.ristretto.message.BasicHeader; 32 import org.columba.ristretto.message.Header; 33 34 35 40 public class ReplyToAllCommand extends ReplyCommand { 41 protected final String [] headerfields = new String [] { 42 "Subject", "From", "To", "Cc", "Reply-To", "Message-ID", 43 "In-Reply-To", "References" 44 }; 45 46 52 public ReplyToAllCommand(ICommandReference reference) { 53 super(reference); 54 } 55 56 protected void initHeader(IMailbox folder, Object [] uids) 57 throws Exception { 58 Header header = folder.getHeaderFields(uids[0], headerfields); 60 61 Integer accountUid = (Integer ) folder.getAttribute(uids[0], "columba.accountuid"); 63 AccountItem accountItem = MessageBuilderHelper.getAccountItem(accountUid); 64 Address accountAddress = null; 65 if ( accountItem != null) 66 accountAddress = MailConfig.getInstance().getAccountList().uidGet(accountUid.intValue()).getIdentity().getAddress(); 67 68 BasicHeader rfcHeader = new BasicHeader(header); 69 70 model.setSubject(MessageBuilderHelper.createReplySubject( 72 rfcHeader.getSubject())); 73 74 LinkedList toList = new LinkedList (); 75 toList.addAll(Arrays.asList(rfcHeader.getReplyTo())); 76 toList.add(rfcHeader.getFrom()); 77 toList.addAll(Arrays.asList(rfcHeader.getTo())); 78 79 82 Collections.sort(toList); 84 85 Iterator it = toList.iterator(); 86 Address last = (Address) it.next(); 87 88 while (it.hasNext()) { 89 Address act = (Address) it.next(); 90 91 if (last.equals(act) || (accountAddress != null && accountAddress.equals(act)) ) { 93 it.remove(); 94 } else { 95 last = act; 96 } 97 } 98 99 Address[] to = (Address[]) toList.toArray(new Address[] { }); 100 101 MessageBuilderHelper.addAddressesToAddressbook(to); 103 model.setTo(to); 104 105 model.setCc(rfcHeader.getCc()); 107 108 MessageBuilderHelper.createMailingListHeaderItems(header, model); 110 111 model.setAccountItem(accountItem); 113 } 114 } 115 | Popular Tags |