001package jmri.util.swing;
002
003import java.awt.Component;
004
005import javax.swing.JTable;
006import javax.swing.JTextArea;
007import javax.swing.table.TableCellRenderer;
008import javax.swing.UIManager;
009
010/**
011 * Renderer to display multiple lines in a JTable cell
012 *
013 * @see jmri.util.swing.MultiLineCellEditor
014 */
015public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
016
017    public MultiLineCellRenderer() {
018    
019        // match these to jmri.util.swing.MultiLineCellEditor
020        setLineWrap(false);
021        setWrapStyleWord(true);
022        setOpaque(true);
023        customize();
024    }
025
026    /**
027     * Allow the creator of one of these objects to customize its
028     * appearance, tooltips, etc
029     */
030    protected void customize() {}
031    
032    
033    @Override
034    public Component getTableCellRendererComponent(JTable table, Object value,
035        boolean isSelected, boolean hasFocus, int row, int column) {
036        if (isSelected) {
037            setForeground(table.getSelectionForeground());
038            setBackground(table.getSelectionBackground());
039        } else {
040            setForeground(table.getForeground());
041            setBackground(table.getBackground());
042        }
043        setFont(table.getFont());
044        if (hasFocus) {
045            if (table.isCellEditable(row, column)) {
046                setForeground(UIManager.getColor("Table.focusCellForeground"));
047                setBackground(UIManager.getColor("Table.focusCellBackground"));
048            }
049        }
050        setText((value == null) ? "" : value.toString());
051        return this;
052    }
053}