KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > gui > tagging > ResultList


1 package org.columba.mail.gui.tagging;
2
3 import java.awt.BorderLayout JavaDoc;
4 import java.awt.Color JavaDoc;
5 import java.awt.Component JavaDoc;
6 import java.awt.event.MouseEvent JavaDoc;
7
8 import javax.swing.BorderFactory JavaDoc;
9 import javax.swing.DefaultListModel JavaDoc;
10 import javax.swing.ImageIcon JavaDoc;
11 import javax.swing.JLabel JavaDoc;
12 import javax.swing.JList JavaDoc;
13 import javax.swing.JPanel JavaDoc;
14 import javax.swing.ListCellRenderer JavaDoc;
15 import javax.swing.border.Border JavaDoc;
16 import javax.swing.border.LineBorder JavaDoc;
17
18 import org.columba.api.exception.ServiceNotFoundException;
19 import org.columba.core.facade.ServiceFacadeRegistry;
20 import org.columba.core.gui.base.DoubleClickListener;
21 import org.columba.core.gui.base.EmptyIcon;
22 import org.columba.core.search.api.ISearchResult;
23 import org.columba.mail.facade.IDialogFacade;
24 import org.columba.mail.resourceloader.MailImageLoader;
25 import org.columba.mail.search.MailSearchResult;
26 import org.jdesktop.swingx.JXList;
27 import org.jdesktop.swingx.decorator.Highlighter;
28 import org.jdesktop.swingx.decorator.HighlighterPipeline;
29 import org.jdesktop.swingx.decorator.RolloverHighlighter;
30
31 /**
32  *
33  * Copied from org.columba.mail.gui.search.ResultList
34  *
35  * @author hubms
36  *
37  */

38 @SuppressWarnings JavaDoc("serial")
39 public class ResultList extends JXList {
40     
41     private DefaultListModel JavaDoc listModel;
42     
43     public ResultList() {
44     
45         listModel = new DefaultListModel JavaDoc();
46         setModel(listModel);
47         setCellRenderer(new MyListCellRenderer());
48     
49         setBorder(null);
50         setHighlighters(new HighlighterPipeline(
51                 new Highlighter[] { new RolloverHighlighter(new Color JavaDoc(248, 248,
52                         248), Color.white) }));
53         setRolloverEnabled(true);
54     
55         /* addMouseListener(new DoubleClickListener() {
56     
57             @Override
58             public void doubleClick(MouseEvent event) {
59                 ISearchResult result = (ISearchResult) getSelectedValue();
60     
61                 try {
62                     IDialogFacade facade = (IDialogFacade) ServiceRegistry
63                             .getInstance().getService(IDialogFacade.class);
64                     facade.openMessage(result.getLocation());
65                 } catch (ServiceNotFoundException e) {
66                     e.printStackTrace();
67                 }
68     
69             }
70         });
71         */

72     }
73
74     class MyListCellRenderer extends JPanel JavaDoc implements ListCellRenderer JavaDoc {
75
76         private JPanel JavaDoc centerPanel;
77
78         private JPanel JavaDoc topPanel;
79
80         private Border JavaDoc lineBorder = new LineBorder JavaDoc(new Color JavaDoc(230,
81                 230, 230));
82
83         private JLabel JavaDoc statusLabel = new JLabel JavaDoc();
84
85         private JLabel JavaDoc fromLabel = new JLabel JavaDoc();
86
87         private JLabel JavaDoc dateLabel = new JLabel JavaDoc();
88
89         private JLabel JavaDoc subjectLabel = new JLabel JavaDoc();
90
91         private JLabel JavaDoc flagLabel = new JLabel JavaDoc();
92
93         private ImageIcon JavaDoc flagIcon = MailImageLoader.getSmallIcon("flag.png");
94
95         MyListCellRenderer() {
96             setLayout(new BorderLayout JavaDoc());
97
98             topPanel = new JPanel JavaDoc();
99             topPanel.setLayout(new BorderLayout JavaDoc());
100             topPanel.add(fromLabel, BorderLayout.CENTER);
101             topPanel.add(dateLabel, BorderLayout.EAST);
102
103             centerPanel = new JPanel JavaDoc();
104             centerPanel.setLayout(new BorderLayout JavaDoc());
105             centerPanel.add(topPanel, BorderLayout.NORTH);
106             centerPanel.add(subjectLabel, BorderLayout.CENTER);
107
108             add(statusLabel, BorderLayout.WEST);
109             add(centerPanel, BorderLayout.CENTER);
110             add(flagLabel, BorderLayout.EAST);
111
112             setBorder(BorderFactory.createCompoundBorder(lineBorder,
113                     BorderFactory.createEmptyBorder(2, 2, 2, 2)));
114
115             statusLabel.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 4));
116             flagLabel.setBorder(BorderFactory.createEmptyBorder(2, 4, 2, 4));
117
118             topPanel.setOpaque(false);
119             centerPanel.setOpaque(false);
120             setOpaque(true);
121
122         }
123
124         public Component JavaDoc getListCellRendererComponent(JList JavaDoc list, Object JavaDoc value,
125                 int index, boolean isSelected, boolean cellHasFocus) {
126
127             if (isSelected) {
128                 // setBackground(list.getSelectionBackground());
129
// setForeground(list.getSelectionForeground());
130
} else {
131                 setBackground(list.getBackground());
132                 setForeground(list.getForeground());
133             }
134
135             MailSearchResult result = (MailSearchResult) value;
136
137             statusLabel.setIcon(result.getStatusIcon());
138             subjectLabel.setText(result.getTitle());
139             fromLabel.setText(result.getFrom().getShortAddress());
140             dateLabel.setText(result.getStringDate());
141
142             if (result.isFlagged())
143                 flagLabel.setIcon(flagIcon);
144             else
145                 flagLabel.setIcon(new EmptyIcon());
146
147             return this;
148         }
149
150     }
151
152
153 }
154
Popular Tags