1 package org.columba.mail.gui.composer; 17 18 import java.util.Iterator ; 19 import java.util.List ; 20 import java.util.Vector ; 21 22 import javax.swing.JOptionPane ; 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 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 addressCollector.clear(); 60 61 try { 62 IContactFacade facade = ServiceConnector.getContactFacade(); 63 IFolderFacade folderFacade = ServiceConnector.getFolderFacade(); 64 65 try { 67 List <IFolder> list = folderFacade.getAllFolders(); 68 Iterator <IFolder> it = list.iterator(); 69 while (it.hasNext()) { 70 IFolder f = it.next(); 71 72 List <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 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 124 return true; 125 } else { 126 return true; 127 } 128 129 } 130 131 public void installListener() { 132 } 134 135 public void updateComponents(boolean b) { 136 if (b) { 137 138 String 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 s = getView().getToComboBox().getText(); 153 List 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 <IHeaderItem> getHeaderItemList(int recipient) { 168 169 List <IHeaderItem> list = new Vector <IHeaderItem>(); 170 171 String 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 l = ListParser.createListFromString(str); 189 if (l == null) 190 return list; 191 192 Iterator it = l.iterator(); 193 194 while (it.hasNext()) { 195 String s = (String ) it.next(); 196 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 <IHeaderItem> getToHeaderItemList() { 223 return getHeaderItemList(0); 224 } 225 226 public List <IHeaderItem> getCcHeaderItemList() { 227 return getHeaderItemList(1); 228 } 229 230 public List <IHeaderItem> getBccHeaderItemList() { 231 return getHeaderItemList(2); 232 } 233 234 public void setToHeaderItemList(List <IHeaderItem> list) { 235 List <String > stringList = ListBuilder 236 .createStringListFromItemList(list); 237 238 ((ComposerModel) controller.getModel()).setToList(stringList); 239 } 240 241 public void setCcHeaderItemList(List <IHeaderItem> list) { 242 ((ComposerModel) controller.getModel()).setCcList(ListBuilder 243 .createStringListFromItemList(list)); 244 } 245 246 public void setBccHeaderItemList(List <IHeaderItem> list) { 247 ((ComposerModel) controller.getModel()).setBccList(ListBuilder 248 .createStringListFromItemList(list)); 249 } 250 251 264 } | Popular Tags |