KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > config > accountwizard > AccountCreator


1 //The contents of this file are subject to the Mozilla Public License Version 1.1
2
//(the "License"); you may not use this file except in compliance with the
3
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
4
//
5
//Software distributed under the License is distributed on an "AS IS" basis,
6
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
7
//for the specific language governing rights and
8
//limitations under the License.
9
//
10
//The Original Code is "The Columba Project"
11
//
12
//The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14
//
15
//All Rights Reserved.
16

17 package org.columba.mail.gui.config.accountwizard;
18
19 import net.javaprog.ui.wizard.DataModel;
20 import net.javaprog.ui.wizard.WizardModelEvent;
21 import net.javaprog.ui.wizard.WizardModelListener;
22
23 import org.columba.mail.config.AccountItem;
24 import org.columba.mail.config.ImapItem;
25 import org.columba.mail.config.MailConfig;
26 import org.columba.mail.config.PopItem;
27 import org.columba.mail.folder.FolderCreationException;
28 import org.columba.mail.folder.FolderFactory;
29 import org.columba.mail.folder.IMailFolder;
30 import org.columba.mail.folder.imap.IMAPRootFolder;
31 import org.columba.mail.gui.tree.FolderTreeModel;
32 import org.columba.mail.gui.util.WelcomeMessage;
33 import org.columba.mail.mailchecking.MailCheckingManager;
34 import org.columba.mail.pop3.POP3ServerCollection;
35 import org.columba.ristretto.message.Address;
36
37 class AccountCreator implements WizardModelListener {
38     protected DataModel data;
39
40     public AccountCreator(DataModel data) {
41         this.data = data;
42     }
43
44     public void wizardFinished(WizardModelEvent e) {
45         String JavaDoc type = (String JavaDoc) data.getData("IncomingServer.type");
46         AccountItem account = MailConfig.getInstance().getAccountList()
47                 .addEmptyAccount(type.toLowerCase());
48
49         if (account == null) {
50             // this should not happen, the templates seem to be missing
51
throw new RuntimeException JavaDoc("Account templates missing!");
52         }
53
54         account.setName((String JavaDoc) data.getData("Identity.accountName"));
55         account.getIdentity().setAddress(
56                 (Address) data.getData("Identity.address"));
57
58         IMailFolder folder = null;
59         if (type.equals("POP3")) {
60             PopItem pop = account.getPopItem();
61             pop.setString("host", (String JavaDoc) data.getData("IncomingServer.host"));
62             pop
63                     .setString("user", (String JavaDoc) data
64                             .getData("IncomingServer.login"));
65             POP3ServerCollection.getInstance().add(account);
66
67             folder = FolderTreeModel.getInstance().getFolder("101");
68         } else {
69             ImapItem imap = account.getImapItem();
70             imap
71                     .setString("host", (String JavaDoc) data
72                             .getData("IncomingServer.host"));
73             imap.setString("user", (String JavaDoc) data
74                     .getData("IncomingServer.login"));
75
76             // TODO (@author fdietz): All this code for creating a new
77
// IMAPRootFolder should
78
// be moved to a FolderFactory
79
// -> this way "path" would be handled in the factory, too
80
// parent directory for mail folders
81
// for example: ".columba/mail/"
82
// String path =
83
// MailConfig.getInstance().getConfigDirectory().getPath();
84

85             try {
86 // IMAPRootFolder parentFolder = FolderFactory.getInstance()
87
// .createIMAPRootFolder(account);
88
// IMailFolder inbox = FolderFactory.getInstance()
89
// .createIMAPFolder(parentFolder, "INBOX");
90

91                 IMailFolder inbox = FolderFactory.getInstance().createIMAPRootFolder(account);
92                 folder = inbox;
93             } catch (FolderCreationException e1) {
94                 e1.printStackTrace();
95             }
96
97             // try {
98
// IMAPRootFolder parentFolder = new IMAPRootFolder(account, path);
99
// ((IMailFolder)
100
// FolderTreeModel.getInstance().getRoot()).add(parentFolder);
101
// ((IMailFolder) FolderTreeModel.getInstance().getRoot())
102
// .getConfiguration().getRoot().addElement(
103
// parentFolder.getConfiguration().getRoot());
104
//
105
// IMailFolder inbox = new IMAPFolder("INBOX", "IMAPFolder",
106
// path);
107
// parentFolder.add(inbox);
108
// parentFolder.getConfiguration().getRoot().addElement(
109
// inbox.getConfiguration().getRoot());
110
// folder = inbox;
111
// } catch (Exception e1) {
112
// // TODO Auto-generated catch block
113
// e1.printStackTrace();
114
// }
115

116         }
117
118         // add welcome message to new account inbox
119
try {
120             Address adr = (Address) data.getData("Identity.address");
121             WelcomeMessage.addWelcomeMessage(folder, adr.toString(),
122                     new Integer JavaDoc(account.getUid()).toString());
123         } catch (Exception JavaDoc e1) {
124             e1.printStackTrace();
125         }
126
127         // add account to mail-checking manager
128
MailCheckingManager.getInstance().add(account);
129
130         // notify all observers
131
MailCheckingManager.getInstance().update();
132
133         account.getSmtpItem().setString("host",
134                 (String JavaDoc) data.getData("OutgoingServer.host"));
135
136         // generally we can just use the same login for both servers
137
account.getSmtpItem().setString("user",
138                 (String JavaDoc) data.getData("IncomingServer.login"));
139     }
140
141     public void stepShown(WizardModelEvent e) {
142     }
143
144     public void wizardCanceled(WizardModelEvent e) {
145     }
146
147     public void wizardModelChanged(WizardModelEvent e) {
148     }
149 }
150
Popular Tags