1 package org.columba.mail.gui.composer; 17 18 import java.awt.Component ; 19 20 import javax.swing.BorderFactory ; 21 import javax.swing.ImageIcon ; 22 import javax.swing.JComboBox ; 23 import javax.swing.JLabel ; 24 import javax.swing.JList ; 25 import javax.swing.ListCellRenderer ; 26 27 import org.columba.mail.resourceloader.MailImageLoader; 28 import org.columba.mail.util.MailResourceLoader; 29 30 31 39 public class PriorityView extends JComboBox { 40 private static final String [] priorities = { 41 MailResourceLoader.getString("dialog", "composer", "highest"), 42 MailResourceLoader.getString("dialog", "composer", "high"), 43 MailResourceLoader.getString("dialog", "composer", "normal"), 44 MailResourceLoader.getString("dialog", "composer", "low"), 45 MailResourceLoader.getString("dialog", "composer", "lowest") 46 }; PriorityController controller; 48 49 public PriorityView(PriorityController controller) { 50 super(priorities); 51 this.controller = controller; 52 53 setRenderer(new ComboBoxRenderer()); 54 55 setSelectedIndex(2); 56 } 57 58 public void installListener(PriorityController controller) { 59 addItemListener(controller); 60 } 61 62 class ComboBoxRenderer extends JLabel implements ListCellRenderer { 63 private ImageIcon image1 = MailImageLoader.getSmallIcon( 64 "priority-high.png"); 65 66 private ImageIcon image4 = MailImageLoader.getSmallIcon( 69 "priority-low.png"); 70 71 public ComboBoxRenderer() { 72 setOpaque(true); 73 } 74 75 public Component getListCellRendererComponent(JList list, Object value, 76 int index, boolean isSelected, boolean cellHasFocus) { 77 if (isSelected) { 78 setBackground(list.getSelectionBackground()); 79 setForeground(list.getSelectionForeground()); 80 } else { 81 setBackground(list.getBackground()); 82 setForeground(list.getForeground()); 83 } 84 85 String p = (String ) value; 86 87 if (p == null) { 88 return this; 89 } 90 91 if (p.equals("Highest")) { 92 setIcon(image1); 93 } 94 98 102 else if (p.equals("Lowest")) { 103 setIcon(image4); 104 } else { 105 setIcon(null); 106 } 107 108 if (getIcon() == null) { 109 setBorder(BorderFactory.createEmptyBorder(0, 110 image1.getIconWidth() + getIconTextGap(), 0, 0)); 111 } else { 112 setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); 113 } 114 115 setText((String ) value); 116 117 return this; 118 } 119 } 120 } 121 | Popular Tags |