1 package org.columba.mail.gui.tagging; 2 3 import java.awt.BorderLayout ; 4 import java.awt.Color ; 5 import java.awt.Component ; 6 import java.awt.event.MouseEvent ; 7 8 import javax.swing.BorderFactory ; 9 import javax.swing.DefaultListModel ; 10 import javax.swing.ImageIcon ; 11 import javax.swing.JLabel ; 12 import javax.swing.JList ; 13 import javax.swing.JPanel ; 14 import javax.swing.ListCellRenderer ; 15 import javax.swing.border.Border ; 16 import javax.swing.border.LineBorder ; 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 38 @SuppressWarnings ("serial") 39 public class ResultList extends JXList { 40 41 private DefaultListModel listModel; 42 43 public ResultList() { 44 45 listModel = new DefaultListModel (); 46 setModel(listModel); 47 setCellRenderer(new MyListCellRenderer()); 48 49 setBorder(null); 50 setHighlighters(new HighlighterPipeline( 51 new Highlighter[] { new RolloverHighlighter(new Color (248, 248, 52 248), Color.white) })); 53 setRolloverEnabled(true); 54 55 72 } 73 74 class MyListCellRenderer extends JPanel implements ListCellRenderer { 75 76 private JPanel centerPanel; 77 78 private JPanel topPanel; 79 80 private Border lineBorder = new LineBorder (new Color (230, 81 230, 230)); 82 83 private JLabel statusLabel = new JLabel (); 84 85 private JLabel fromLabel = new JLabel (); 86 87 private JLabel dateLabel = new JLabel (); 88 89 private JLabel subjectLabel = new JLabel (); 90 91 private JLabel flagLabel = new JLabel (); 92 93 private ImageIcon flagIcon = MailImageLoader.getSmallIcon("flag.png"); 94 95 MyListCellRenderer() { 96 setLayout(new BorderLayout ()); 97 98 topPanel = new JPanel (); 99 topPanel.setLayout(new BorderLayout ()); 100 topPanel.add(fromLabel, BorderLayout.CENTER); 101 topPanel.add(dateLabel, BorderLayout.EAST); 102 103 centerPanel = new JPanel (); 104 centerPanel.setLayout(new BorderLayout ()); 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 getListCellRendererComponent(JList list, Object value, 125 int index, boolean isSelected, boolean cellHasFocus) { 126 127 if (isSelected) { 128 } 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 |