KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > facade > DialogFacade


1 package org.columba.mail.facade;
2
3 import java.net.URI JavaDoc;
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     /**
28      * @see org.columba.mail.facade.IDialogFacade#openComposer()
29      */

30     public void openComposer() {
31         // Choice btw. text and html will be based on stored option
32
ComposerController controller = new ComposerController();
33         new DefaultContainer(controller);
34
35         // model -> view
36
controller.updateComponents(true);
37     }
38
39     /**
40      * @see org.columba.mail.facade.IDialogFacade#openMessage(java.net.URI)
41      */

42     public void openMessage(URI JavaDoc location) {
43         // example: "columba://org.columba.mail/<folder-id>/<message-id>"
44
String JavaDoc s = location.toString();
45
46         // TODO: @author fdietz replace with regular expression
47
int index = s.lastIndexOf('/');
48         String JavaDoc messageId = s.substring(index + 1, s.length());
49         String JavaDoc 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 JavaDoc("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                 // found mail component frame
60
mailFrameMediator = mediator;
61             }
62         }
63
64         if (mailFrameMediator == null)
65             throw new RuntimeException JavaDoc("No mail frame mediator found");
66
67         // type-cast here is safe
68
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 JavaDoc[] { 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 JavaDoc contact) {
85         // Choice btw. text and html will be based on stored option
86
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         // model -> view
92
controller.updateComponents(true);
93     }
94
95     public void openComposer(String JavaDoc[] recipients) {
96         // Choice btw. text and html will be based on stored option
97
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         // model -> view
107
controller.updateComponents(true);
108     }
109
110 }
111
Popular Tags