1 package org.columba.mail.facade; 2 3 import java.net.URI ; 4 5 import org.columba.api.gui.frame.IContainer; 6 import org.columba.api.gui.frame.IFrameMediator; 7 import org.columba.core.command.CommandProcessor; 8 import org.columba.core.gui.frame.DefaultContainer; 9 import org.columba.core.gui.frame.FrameManager; 10 import org.columba.mail.command.IMailFolderCommandReference; 11 import org.columba.mail.command.MailFolderCommandReference; 12 import org.columba.mail.folder.IMailbox; 13 import org.columba.mail.gui.composer.ComposerController; 14 import org.columba.mail.gui.composer.ComposerModel; 15 import org.columba.mail.gui.frame.ThreePaneMailFrameController; 16 import org.columba.mail.gui.message.command.ViewMessageCommand; 17 import org.columba.mail.gui.messageframe.MessageFrameController; 18 import org.columba.mail.gui.tree.FolderTreeModel; 19 import org.columba.ristretto.message.Address; 20 21 public class DialogFacade implements IDialogFacade { 22 23 public DialogFacade() { 24 super(); 25 } 26 27 30 public void openComposer() { 31 ComposerController controller = new ComposerController(); 33 new DefaultContainer(controller); 34 35 controller.updateComponents(true); 37 } 38 39 42 public void openMessage(URI location) { 43 String s = location.toString(); 45 46 int index = s.lastIndexOf('/'); 48 String messageId = s.substring(index + 1, s.length()); 49 String folderId = s.substring(s.lastIndexOf('/', index - 1) + 1, index); 50 51 IContainer[] container = FrameManager.getInstance().getOpenFrames(); 52 if (container == null || container.length == 0) 53 throw new RuntimeException ("No frames available"); 54 55 IFrameMediator mailFrameMediator = null; 56 for (int i = 0; i < container.length; i++) { 57 IFrameMediator mediator = container[i].getFrameMediator(); 58 if (mediator.getId().equals("ThreePaneMail")) { 59 mailFrameMediator = mediator; 61 } 62 } 63 64 if (mailFrameMediator == null) 65 throw new RuntimeException ("No mail frame mediator found"); 66 67 MessageFrameController c = new MessageFrameController( 69 (ThreePaneMailFrameController) mailFrameMediator); 70 new DefaultContainer(c); 71 72 IMailbox folder = (IMailbox) FolderTreeModel.getInstance().getFolder( 73 folderId); 74 IMailFolderCommandReference r = new MailFolderCommandReference(folder, 75 new Object [] { Integer.parseInt(messageId) }); 76 77 c.setTreeSelection(r); 78 79 c.setTableSelection(r); 80 81 CommandProcessor.getInstance().addOp(new ViewMessageCommand(c, r)); 82 } 83 84 public void openComposer(String contact) { 85 ComposerController controller = new ComposerController(); 87 new DefaultContainer(controller); 88 ComposerModel model = controller.getModel(); 89 Address adr = new Address(contact); 90 model.setTo(new Address[] { adr }); 91 controller.updateComponents(true); 93 } 94 95 public void openComposer(String [] recipients) { 96 ComposerController controller = new ComposerController(); 98 new DefaultContainer(controller); 99 ComposerModel model = controller.getModel(); 100 Address[] adr = new Address[recipients.length]; 101 for (int i = 0; i < recipients.length; i++) { 102 adr[i] = new Address(recipients[i]); 103 } 104 105 model.setTo(adr); 106 controller.updateComponents(true); 108 } 109 110 } 111 | Popular Tags |