KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > composer > HeaderController


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
package org.columba.mail.gui.composer;
17
18 import java.util.Iterator JavaDoc;
19 import java.util.List JavaDoc;
20 import java.util.Vector JavaDoc;
21
22 import javax.swing.JOptionPane JavaDoc;
23
24 import org.columba.addressbook.facade.IContactFacade;
25 import org.columba.addressbook.facade.IFolder;
26 import org.columba.addressbook.facade.IFolderFacade;
27 import org.columba.addressbook.facade.IHeaderItem;
28 import org.columba.addressbook.facade.IModelFacade;
29 import org.columba.api.exception.ServiceNotFoundException;
30 import org.columba.api.exception.StoreException;
31 import org.columba.mail.connector.ServiceConnector;
32 import org.columba.mail.gui.composer.util.AddressCollector;
33 import org.columba.mail.parser.ListBuilder;
34 import org.columba.mail.parser.ListParser;
35 import org.columba.mail.util.MailResourceLoader;
36
37 /**
38  * Recipients editor component.
39  *
40  * @author fdietz
41  */

42 public class HeaderController {
43
44     private ComposerController controller;
45
46     private HeaderView view;
47
48     private AddressCollector addressCollector;
49
50     public HeaderController(ComposerController controller) {
51         this.controller = controller;
52
53         view = new HeaderView(this);
54
55         addressCollector = AddressCollector.getInstance();
56
57         if (addressCollector != null) {
58             // clear autocomplete hashmap
59
addressCollector.clear();
60
61             try {
62                 IContactFacade facade = ServiceConnector.getContactFacade();
63                 IFolderFacade folderFacade = ServiceConnector.getFolderFacade();
64
65                 // fill hashmap with all available contacts and groups
66
try {
67                     List JavaDoc<IFolder> list = folderFacade.getAllFolders();
68                     Iterator JavaDoc<IFolder> it = list.iterator();
69                     while (it.hasNext()) {
70                         IFolder f = it.next();
71
72                         List JavaDoc<IHeaderItem> l = facade.getAllHeaderItems(f
73                                 .getId(), false);
74                         addressCollector.addAllContacts(l, true);
75                     }
76
77                 } catch (StoreException e) {
78                     e.printStackTrace();
79                 }
80
81             } catch (ServiceNotFoundException e) {
82             }
83
84         }
85
86         view.initAutocompletion();
87     }
88
89     public ComposerController getComposerController() {
90         return controller;
91     }
92
93     public HeaderView getView() {
94         return view;
95     }
96
97     public boolean checkState() {
98
99         Iterator JavaDoc it = getHeaderItemList(0).iterator();
100
101         while (it.hasNext()) {
102             IHeaderItem item = (IHeaderItem) it.next();
103             if (isValid(item))
104                 return true;
105         }
106
107         JOptionPane.showMessageDialog(controller.getComponent(), MailResourceLoader.getString(
108                 "menu", "mainframe", "composer_no_recipients_found"));
109
110         return false;
111     }
112
113     protected boolean isValid(IHeaderItem headerItem) {
114         if (headerItem.isContact()) {
115             /*
116              * String address = (String) headerItem.get("email;internet");
117              *
118              * if (AddressParser.isValid(address)) { return true; }
119              *
120              * address = (String) headerItem.get("displayname");
121              *
122              * if (AddressParser.isValid(address)) { return true; }
123              */

124             return true;
125         } else {
126             return true;
127         }
128
129     }
130
131     public void installListener() {
132         // view.table.getModel().addTableModelListener(this);
133
}
134
135     public void updateComponents(boolean b) {
136         if (b) {
137
138             String JavaDoc s = ListParser.createStringFromList(controller.getModel()
139                     .getToList(), ",");
140             getView().getToComboBox().setText(s);
141
142             s = ListParser.createStringFromList(controller.getModel()
143                     .getCcList(), ",");
144             getView().getCcComboBox().setText(s);
145
146             s = ListParser.createStringFromList(controller.getModel()
147                     .getBccList(), ",");
148             getView().getBccComboBox().setText(s);
149
150         } else {
151
152             String JavaDoc s = getView().getToComboBox().getText();
153             List JavaDoc list = ListParser.createListFromString(s);
154             controller.getModel().setToList(list);
155
156             s = getView().getCcComboBox().getText();
157             list = ListParser.createListFromString(s);
158             controller.getModel().setCcList(list);
159
160             s = getView().getBccComboBox().getText();
161             list = ListParser.createListFromString(s);
162             controller.getModel().setBccList(list);
163
164         }
165     }
166
167     private List JavaDoc<IHeaderItem> getHeaderItemList(int recipient) {
168
169         List JavaDoc<IHeaderItem> list = new Vector JavaDoc<IHeaderItem>();
170
171         String JavaDoc str = null;
172         switch (recipient) {
173         case 0:
174             str = getView().getToComboBox().getText();
175
176             break;
177         case 1:
178             str = getView().getCcComboBox().getText();
179
180             break;
181         case 2:
182             str = getView().getBccComboBox().getText();
183
184             break;
185
186         }
187
188         List JavaDoc l = ListParser.createListFromString(str);
189         if (l == null)
190             return list;
191
192         Iterator JavaDoc it = l.iterator();
193
194         while (it.hasNext()) {
195             String JavaDoc s = (String JavaDoc) it.next();
196             // skip empty strings
197
if (s.length() == 0)
198                 continue;
199
200             IHeaderItem item = null;
201             if (addressCollector != null)
202                 item = addressCollector.getHeaderItem(s);
203             if (item == null) {
204
205                 try {
206                     IModelFacade c = ServiceConnector.getModelFacade();
207                     item = c.createContactItem();
208                     item.setName(s);
209                 } catch (ServiceNotFoundException e) {
210
211                     e.printStackTrace();
212                 }
213
214             }
215
216             list.add(item);
217         }
218
219         return list;
220     }
221
222     public List JavaDoc<IHeaderItem> getToHeaderItemList() {
223         return getHeaderItemList(0);
224     }
225
226     public List JavaDoc<IHeaderItem> getCcHeaderItemList() {
227         return getHeaderItemList(1);
228     }
229
230     public List JavaDoc<IHeaderItem> getBccHeaderItemList() {
231         return getHeaderItemList(2);
232     }
233
234     public void setToHeaderItemList(List JavaDoc<IHeaderItem> list) {
235         List JavaDoc<String JavaDoc> stringList = ListBuilder
236                 .createStringListFromItemList(list);
237
238         ((ComposerModel) controller.getModel()).setToList(stringList);
239     }
240
241     public void setCcHeaderItemList(List JavaDoc<IHeaderItem> list) {
242         ((ComposerModel) controller.getModel()).setCcList(ListBuilder
243                 .createStringListFromItemList(list));
244     }
245
246     public void setBccHeaderItemList(List JavaDoc<IHeaderItem> list) {
247         ((ComposerModel) controller.getModel()).setBccList(ListBuilder
248                 .createStringListFromItemList(list));
249     }
250
251     // public void setHeaderItemLists(List<IHeaderItem>[] lists) {
252
// ((ComposerModel) controller.getModel()).setToList(ListBuilder
253
// .createStringListFromItemList(lists[0]));
254
//
255
// ((ComposerModel) controller.getModel()).setCcList(ListBuilder
256
// .createStringListFromItemList(lists[1]));
257
//
258
// ((ComposerModel) controller.getModel()).setBccList(ListBuilder
259
// .createStringListFromItemList(lists[2]));
260
//
261
// updateComponents(true);
262
// }
263

264 }
Popular Tags