KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > addressbook > gui > context > ContactDetailsContextualProvider


1 package org.columba.addressbook.gui.context;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.List JavaDoc;
5 import java.util.ResourceBundle JavaDoc;
6 import java.util.Vector JavaDoc;
7
8 import javax.swing.ImageIcon JavaDoc;
9 import javax.swing.JComponent JavaDoc;
10 import javax.swing.JPanel JavaDoc;
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 // TODO: fix layout to look good, even if there's not enough information provided
25
public class ContactDetailsContextualProvider implements IContextProvider {
26
27     private ResourceBundle JavaDoc bundle;
28
29     private ContactSearchProvider searchProvider;
30
31     private List JavaDoc<ISearchResult> result;
32
33     private JPanel JavaDoc panel = new JPanel JavaDoc();
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 JavaDoc<ISearchResult>();
44
45         searchProvider = new ContactSearchProvider();
46     }
47
48     public String JavaDoc getTechnicalName() {
49         return "contact_details_list";
50     }
51
52     public String JavaDoc getName() {
53         return bundle.getString("provider_related_title");
54     }
55
56     public String JavaDoc getDescription() {
57         return bundle.getString("provider_related_title");
58     }
59
60     public ImageIcon JavaDoc 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 JavaDoc<IStructureValue> it = value.getChildIterator(
75                 ISemanticContext.CONTEXT_NODE_IDENTITY,
76                 ISemanticContext.CONTEXT_NAMESPACE_CORE);
77         if (it.hasNext()) {
78             // can be only one
79
IStructureValue identity = it.next();
80             if (identity == null)
81                 return;
82
83             String JavaDoc emailAddress = identity.getString(
84                     ISemanticContext.CONTEXT_ATTR_EMAIL_ADDRESS,
85                     ISemanticContext.CONTEXT_NAMESPACE_CORE);
86             String JavaDoc 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 JavaDoc<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 JavaDoc 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 JavaDoc 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