1 package org.columba.addressbook.gui.autocomplete; 19 20 import java.util.Hashtable ; 21 import java.util.Iterator ; 22 import java.util.List ; 23 import java.util.Vector ; 24 25 import org.columba.addressbook.folder.AbstractFolder; 26 import org.columba.addressbook.folder.IGroupFolder; 27 import org.columba.addressbook.gui.tree.AddressbookTreeModel; 28 import org.columba.addressbook.model.ContactModelFactory; 29 import org.columba.addressbook.model.ContactModelPartial; 30 import org.columba.addressbook.model.GroupModelPartial; 31 import org.columba.addressbook.model.BasicModelPartial; 32 import org.columba.addressbook.model.IGroupModel; 33 import org.columba.addressbook.model.IGroupModelPartial; 34 import org.columba.addressbook.model.IBasicModelPartial; 35 36 public class AddressCollector implements IAddressCollector { 37 38 private Hashtable _adds = new Hashtable (); 39 40 private static AddressCollector instance = new AddressCollector(); 41 42 private AddressCollector() { 43 } 44 45 public static AddressCollector getInstance() { 46 return instance; 47 } 48 49 57 public void addAllContacts(String uid, boolean includeGroup) { 58 if (uid == null) 59 throw new IllegalArgumentException ("uid == null"); 60 61 List <IBasicModelPartial> list = new Vector <IBasicModelPartial>(); 62 63 try { 64 AbstractFolder folder = (AbstractFolder) AddressbookTreeModel 65 .getInstance().getFolder(uid); 66 if (folder == null) 67 return; 68 69 list.addAll(folder.getHeaderItemList()); 70 71 if (includeGroup) { 72 for (int i = 0; i < folder.getChildCount(); i++) { 73 IGroupFolder groupFolder = (IGroupFolder) folder 74 .getChildAt(i); 75 IGroupModel group = groupFolder.getGroup(); 76 77 IGroupModelPartial groupPartial = ContactModelFactory.createGroupPartial(group, folder); 78 79 list.add(groupPartial); 80 } 81 } 82 83 } catch (Exception e) { 84 85 e.printStackTrace(); 86 } 87 88 Iterator it = list.iterator(); 89 while (it.hasNext()) { 90 BasicModelPartial headerItem = (BasicModelPartial) it.next(); 91 92 if (headerItem.isContact()) { 93 ContactModelPartial item = (ContactModelPartial) headerItem; 95 96 addAddress(item.getName(), item); 97 addAddress(item.getLastname(), item); 98 addAddress(item.getFirstname(), item); 99 addAddress(item.getAddress(), item); 100 } else { 101 if (includeGroup) { 102 GroupModelPartial item = (GroupModelPartial) headerItem; 104 105 addAddress(item.getName(), item); 106 } 107 } 108 } 109 } 110 111 public void addAddress(String add, IBasicModelPartial item) { 112 if (add != null) { 113 _adds.put(add, item); 114 } 115 } 116 117 public Object [] getAddresses() { 118 return _adds.keySet().toArray(); 119 } 120 121 public IBasicModelPartial getHeaderItem(String add) { 122 return (IBasicModelPartial) _adds.get(add); 123 } 124 125 public void clear() { 126 _adds.clear(); 127 } 128 129 132 public Object [] getMatchingItems(String s) { 133 Object [] items = getAddresses(); 134 135 Vector v = new Vector (); 136 for (int k = 0; k < items.length; k++) { 138 String item = items[k].toString().toLowerCase(); 140 if (item.startsWith(s.toLowerCase())) { 142 v.add(item); 143 } 144 } 145 return v.toArray(); 146 } 147 } | Popular Tags |