KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > gui > search > GenericResultPanel


1 package org.columba.core.gui.search;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.Component JavaDoc;
5 import java.awt.event.MouseEvent JavaDoc;
6 import java.util.Iterator JavaDoc;
7 import java.util.List JavaDoc;
8
9 import javax.swing.BorderFactory JavaDoc;
10 import javax.swing.DefaultListModel JavaDoc;
11 import javax.swing.ImageIcon JavaDoc;
12 import javax.swing.JComponent JavaDoc;
13 import javax.swing.JLabel JavaDoc;
14 import javax.swing.JList JavaDoc;
15 import javax.swing.JPanel JavaDoc;
16 import javax.swing.ListCellRenderer JavaDoc;
17 import javax.swing.UIManager JavaDoc;
18
19 import org.columba.core.gui.base.DoubleClickListener;
20 import org.columba.core.gui.search.api.IResultPanel;
21 import org.columba.core.resourceloader.IconKeys;
22 import org.columba.core.resourceloader.ImageLoader;
23 import org.columba.core.search.api.IResultEvent;
24 import org.columba.core.search.api.ISearchResult;
25 import org.jdesktop.swingx.JXHyperlink;
26 import org.jdesktop.swingx.JXList;
27 import org.jdesktop.swingx.decorator.AlternateRowHighlighter;
28 import org.jdesktop.swingx.decorator.Highlighter;
29 import org.jdesktop.swingx.decorator.HighlighterPipeline;
30
31 public class GenericResultPanel extends JXList implements IResultPanel {
32
33     private String JavaDoc providerNamespace;
34
35     private DefaultListModel JavaDoc listModel;
36
37     private String JavaDoc providerName;
38
39     public GenericResultPanel(String JavaDoc providerName, String JavaDoc providerNamespace) {
40         super();
41
42         this.providerName = providerName;
43         this.providerNamespace = providerNamespace;
44
45         listModel = new DefaultListModel JavaDoc();
46         setModel(listModel);
47         setCellRenderer(new MyListCellRenderer());
48         setBorder(null);
49         setHighlighters(new HighlighterPipeline(
50                 new Highlighter[] { AlternateRowHighlighter.genericGrey }));
51
52         addMouseListener(new DoubleClickListener() {
53
54             @Override JavaDoc
55             public void doubleClick(MouseEvent JavaDoc event) {
56                 // do something with link
57
}
58         });
59     }
60     
61     public String JavaDoc getSearchCriteriaTechnicalName() {
62         return providerName;
63     }
64
65     public String JavaDoc getProviderTechnicalName() {
66         return providerNamespace;
67     }
68
69     public void resultArrived(IResultEvent event) {
70         if (!event.getProviderName().equals(this.providerName))
71             return;
72
73         List JavaDoc<ISearchResult> result = event.getSearchResults();
74
75         Iterator JavaDoc<ISearchResult> it = result.iterator();
76         while (it.hasNext()) {
77             listModel.addElement(it.next());
78         }
79
80         // setPreferredSize(list.getPreferredSize());
81
revalidate();
82     }
83
84     public void clearSearch(IResultEvent event) {
85         listModel.clear();
86     }
87
88     class MyListCellRenderer extends JPanel JavaDoc implements ListCellRenderer JavaDoc {
89         // private JLabel iconLabel = new JLabel();
90

91         private JXHyperlink titleLabel = new JXHyperlink();
92
93         private JLabel JavaDoc descriptionLabel = new JLabel JavaDoc();
94
95         private JPanel JavaDoc topPanel;
96
97         MyListCellRenderer() {
98             setLayout(new BorderLayout JavaDoc());
99
100             titleLabel.setClickedColor(UIManager.getColor("Label.foreground"));
101             titleLabel
102                     .setUnclickedColor(UIManager.getColor("Label.foreground"));
103             // titleLabel.setBackground(UIManager.getColor("Label.background"));
104
titleLabel.setOpaque(false);
105             titleLabel.setBorderPainted(true);
106
107             topPanel = new JPanel JavaDoc();
108             topPanel.setLayout(new BorderLayout JavaDoc());
109
110             // topPanel.add(iconLabel, BorderLayout.WEST);
111
topPanel.add(titleLabel, BorderLayout.CENTER);
112
113             add(topPanel, BorderLayout.NORTH);
114             add(descriptionLabel, BorderLayout.CENTER);
115
116             topPanel.setOpaque(true);
117             setOpaque(true);
118
119             setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
120
121         }
122
123         public Component JavaDoc getListCellRendererComponent(JList JavaDoc list, Object JavaDoc value,
124                 int index, boolean isSelected, boolean cellHasFocus) {
125
126             if (isSelected) {
127                 setBackground(list.getSelectionBackground());
128                 setForeground(list.getSelectionForeground());
129
130                 topPanel.setBackground(list.getSelectionBackground());
131                 topPanel.setForeground(list.getSelectionForeground());
132             } else {
133                 setBackground(list.getBackground());
134                 setForeground(list.getForeground());
135                 topPanel.setBackground(list.getBackground());
136                 topPanel.setForeground(list.getForeground());
137             }
138
139             ISearchResult result = (ISearchResult) value;
140
141             titleLabel.setText(result.getTitle());
142
143             ImageIcon JavaDoc icon = null;
144             if (providerNamespace.equals("org.columba.contact"))
145                 icon = ImageLoader.getSmallIcon(IconKeys.USER);
146             else if (providerNamespace.equals("org.columba.mail"))
147                 icon = ImageLoader.getSmallIcon(IconKeys.COMPUTER);
148
149             titleLabel.setIcon(icon);
150             descriptionLabel.setText(result.getDescription());
151
152             return this;
153         }
154
155     }
156
157     public JComponent JavaDoc getView() {
158         return this;
159     }
160
161     public ImageIcon JavaDoc getIcon() {
162         return null;
163     }
164
165     public String JavaDoc getTitle(String JavaDoc searchTerm) {
166         return providerName;
167     }
168
169     public String JavaDoc getDescription(String JavaDoc searchTerm) {
170         return providerNamespace;
171     }
172
173     public void reset(IResultEvent event) {
174         listModel.clear();
175     }
176
177     public void finished(IResultEvent event) {
178         // TODO Auto-generated method stub
179

180     }
181 }
182
Popular Tags