1 package org.columba.addressbook.gui.context; 2 3 import java.util.Iterator ; 4 import java.util.List ; 5 import java.util.ResourceBundle ; 6 import java.util.Vector ; 7 8 import javax.swing.ImageIcon ; 9 import javax.swing.JComponent ; 10 import javax.swing.JPanel ; 11 12 import org.columba.addressbook.model.IContactModel; 13 import org.columba.api.gui.frame.IFrameMediator; 14 import org.columba.contact.search.ContactSearchProvider; 15 import org.columba.contact.search.ContactSearchResult; 16 import org.columba.core.context.api.IContextProvider; 17 import org.columba.core.context.base.api.IStructureValue; 18 import org.columba.core.context.semantic.api.ISemanticContext; 19 import org.columba.core.resourceloader.IconKeys; 20 import org.columba.core.resourceloader.ImageLoader; 21 import org.columba.core.search.api.ISearchResult; 22 import org.jdesktop.swingx.VerticalLayout; 23 24 public class ContactDetailsContextualProvider implements IContextProvider { 26 27 private ResourceBundle bundle; 28 29 private ContactSearchProvider searchProvider; 30 31 private List <ISearchResult> result; 32 33 private JPanel panel = new JPanel (); 34 35 public ContactDetailsContextualProvider() { 36 super(); 37 38 panel.setLayout(new VerticalLayout()); 39 40 bundle = ResourceBundle 41 .getBundle("org.columba.addressbook.i18n.search"); 42 43 result = new Vector <ISearchResult>(); 44 45 searchProvider = new ContactSearchProvider(); 46 } 47 48 public String getTechnicalName() { 49 return "contact_details_list"; 50 } 51 52 public String getName() { 53 return bundle.getString("provider_related_title"); 54 } 55 56 public String getDescription() { 57 return bundle.getString("provider_related_title"); 58 } 59 60 public ImageIcon getIcon() { 61 return ImageLoader.getSmallIcon(IconKeys.ADDRESSBOOK); 62 } 63 64 public int getTotalResultCount() { 65 return searchProvider.getTotalResultCount(); 66 } 67 68 public void search(ISemanticContext context, int startIndex, int resultCount) { 69 70 IStructureValue value = context.getValue(); 71 if (value == null) 72 return; 73 74 Iterator <IStructureValue> it = value.getChildIterator( 75 ISemanticContext.CONTEXT_NODE_IDENTITY, 76 ISemanticContext.CONTEXT_NAMESPACE_CORE); 77 if (it.hasNext()) { 78 IStructureValue identity = it.next(); 80 if (identity == null) 81 return; 82 83 String emailAddress = identity.getString( 84 ISemanticContext.CONTEXT_ATTR_EMAIL_ADDRESS, 85 ISemanticContext.CONTEXT_NAMESPACE_CORE); 86 String displayname = identity.getString( 87 ISemanticContext.CONTEXT_ATTR_DISPLAY_NAME, 88 ISemanticContext.CONTEXT_NAMESPACE_CORE); 89 90 if (emailAddress == null && displayname == null) 91 return; 92 93 List <ISearchResult> temp; 94 95 if (emailAddress != null) { 96 temp = searchProvider.query(emailAddress, 97 ContactSearchProvider.CRITERIA_EMAIL_CONTAINS, false, 98 0, 5); 99 result.addAll(temp); 100 } 101 102 if (displayname != null) { 103 temp = searchProvider.query(displayname, 104 ContactSearchProvider.CRITERIA_DISPLAYNAME_CONTAINS, 105 false, 0, 5); 106 result.addAll(temp); 107 } 108 } 109 110 } 111 112 public void showResult() { 113 panel.removeAll(); 114 115 Iterator it2 = result.listIterator(); 116 while (it2.hasNext()) { 117 ContactSearchResult r = (ContactSearchResult) it2.next(); 118 IContactModel m = r.getModel(); 119 120 ContactDetailPanel p = new ContactDetailPanel(m, r); 121 122 panel.add(p); 123 } 124 125 panel.revalidate(); 126 panel.validate(); 127 } 128 129 public JComponent getView() { 130 return panel; 131 } 132 133 public void clear() { 134 135 result.clear(); 136 } 137 138 public boolean isEnabledShowMoreLink() { 139 return false; 140 } 141 142 public void showMoreResults(IFrameMediator mediator) { 143 } 144 145 } 146 | Popular Tags |