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}