1 package org.columba.mail.gui.context; 2 3 import java.awt.BorderLayout ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 import java.util.ResourceBundle ; 7 import java.util.Vector ; 8 9 import javax.swing.BorderFactory ; 10 import javax.swing.ImageIcon ; 11 import javax.swing.JComponent ; 12 import javax.swing.JPanel ; 13 import javax.swing.JScrollPane ; 14 15 import org.columba.api.gui.frame.IFrameMediator; 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.search.api.ISearchResult; 20 import org.columba.mail.gui.search.ResultList; 21 import org.columba.mail.resourceloader.IconKeys; 22 import org.columba.mail.resourceloader.MailImageLoader; 23 import org.columba.mail.search.MailSearchProvider; 24 25 public class RecentMessagesContextualProvider implements IContextProvider { 26 private ResourceBundle bundle; 27 28 private ResultList list; 29 30 private MailSearchProvider p; 31 32 private List <ISearchResult> result = new Vector <ISearchResult>(); 33 34 private String emailAddress; 35 36 private JPanel panel = new JPanel (); 37 38 private JScrollPane scrollPane; 39 40 public RecentMessagesContextualProvider() { 41 bundle = ResourceBundle.getBundle("org.columba.mail.i18n.search"); 42 43 panel.setLayout(new BorderLayout ()); 44 panel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); 45 46 list = new ResultList(); 47 48 scrollPane = new JScrollPane (list); 49 scrollPane 50 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 51 panel.add(scrollPane, BorderLayout.CENTER); 52 } 53 54 public String getTechnicalName() { 55 return "recent_messages_of_contact"; 56 } 57 58 public String getName() { 59 return bundle.getString("provider_related_title"); 60 } 61 62 public String getDescription() { 63 return bundle.getString("provider_related_title"); 64 } 65 66 public ImageIcon getIcon() { 67 return MailImageLoader.getSmallIcon(IconKeys.MESSAGE_READ); 68 } 69 70 public int getTotalResultCount() { 71 return p.getTotalResultCount(); 72 } 73 74 public void search(ISemanticContext context, int startIndex, int resultCount) { 75 76 IStructureValue value = context.getValue(); 77 if (value == null) 78 return; 79 80 result.clear(); 81 82 Iterator <IStructureValue> it = value.getChildIterator( 83 ISemanticContext.CONTEXT_NODE_IDENTITY, 84 ISemanticContext.CONTEXT_NAMESPACE_CORE); 85 IStructureValue identity = it.next(); 87 if (identity == null) 88 return; 89 90 emailAddress = identity.getString( 91 ISemanticContext.CONTEXT_ATTR_EMAIL_ADDRESS, 92 ISemanticContext.CONTEXT_NAMESPACE_CORE); 93 94 if (emailAddress == null) 95 return; 96 97 p = new MailSearchProvider(); 98 List <ISearchResult> r = p.query(emailAddress, 99 MailSearchProvider.CRITERIA_FROM_CONTAINS, false, 0, 20); 100 101 result.addAll(r); 102 } 103 104 public void showResult() { 105 list.addAll(result); 106 } 107 108 public JComponent getView() { 109 return panel; 110 } 111 112 public void clear() { 113 114 list.clear(); 115 } 116 117 public boolean isEnabledShowMoreLink() { 118 return true; 119 } 120 121 public void showMoreResults(IFrameMediator mediator) { 122 if (emailAddress == null) 123 return; 124 125 p.showAllResults(mediator, emailAddress, 127 MailSearchProvider.CRITERIA_FROM_CONTAINS); 128 } 129 130 } 131 | Popular Tags |