1 package org.columba.mail.gui.table.plugins; 17 18 import java.awt.Color ; 19 import java.awt.Component ; 20 import java.awt.Font ; 21 22 import javax.swing.JTable ; 23 import javax.swing.UIManager ; 24 import javax.swing.table.DefaultTableCellRenderer ; 25 26 import org.columba.api.plugin.IExtensionInterface; 27 import org.columba.mail.gui.table.model.MessageNode; 28 import org.columba.mail.message.ColumbaHeader; 29 import org.columba.mail.message.IColumbaHeader; 30 import org.columba.ristretto.message.Flags; 31 32 42 43 public class DefaultLabelRenderer extends DefaultTableCellRenderer implements 44 IExtensionInterface { 45 46 private static final java.util.logging.Logger LOG = 47 java.util.logging.Logger.getLogger("org.columba.mail.gui.table.plugins"); 49 57 private Font plainFont; 58 59 private Font boldFont; 60 61 private Font underlinedFont; 62 63 65 68 public DefaultLabelRenderer() { 69 super(); 70 71 boldFont = UIManager.getFont("Tree.font"); 72 boldFont = boldFont.deriveFont(Font.BOLD); 73 74 plainFont = UIManager.getFont("Tree.font"); 75 76 underlinedFont = UIManager.getFont("Tree.font"); 77 underlinedFont = underlinedFont.deriveFont(Font.ITALIC); 78 79 } 80 81 85 public Component getTableCellRendererComponent(JTable table, Object value, 86 boolean isSelected, boolean hasFocus, int row, int column) { 87 88 super.getTableCellRendererComponent(table, value, isSelected, hasFocus, 89 row, column); 90 91 setBorder(null); 92 93 MessageNode messageNode = (MessageNode) value; 95 96 IColumbaHeader header = messageNode.getHeader(); 97 98 if (header == null) { 99 LOG.info("header is null"); 101 return this; 102 } 103 104 Flags flags = ((ColumbaHeader) header).getFlags(); 105 106 if (flags != null) { 107 if (!flags.getSeen()) { 109 if (!getFont().equals(boldFont)) { 110 setFont(boldFont); 111 } 112 } else if (messageNode.isHasRecentChildren()) { 113 if (!getFont().equals(underlinedFont)) { 114 setFont(underlinedFont); 115 } 116 } else if (!getFont().equals(plainFont)) { 117 setFont(plainFont); 118 } 119 } 120 121 Color msgColor = (Color ) header.get("columba.color"); 122 123 if (isSelected) 124 setBackground(UIManager.getColor("Table.selectionBackground")); 125 else 126 setBackground(table.getBackground()); 127 128 if (msgColor != null) { 129 if (isSelected) 130 setForeground(UIManager.getColor("Table.selectionForeground")); 131 else { 132 if (msgColor.equals(Color.BLACK) == false) 133 setForeground(msgColor); 134 else 135 setForeground(table.getForeground()); 136 137 } 138 } 139 140 return this; 141 } 142 143 } 144 | Popular Tags |