package org.obo.app.swing;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
/**
* A table cell renderer which displays greyed-out placeholder text when the cell value is
* empty.
* @author Jim Balhoff
*/
public class PlaceholderRenderer extends DefaultTableCellRenderer {
private final String placeholder;
/**
* Create a new PlaceholderRenderer which displays the given text as a placeholder value.
* @param placeholder The placeholder text to display.
*/
public PlaceholderRenderer(String placeholder) {
super();
this.placeholder = placeholder;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if ((value == null) || (value.equals(""))) {
final Component component = super.getTableCellRendererComponent(table, this.placeholder, isSelected, hasFocus, row, column);
component.setForeground(Color.GRAY);
return component;
} else {
final Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
component.setForeground(UIManager.getColor("Table.selectionForeground"));
} else {
component.setForeground(UIManager.getColor("Table.foreground"));
}
return component;
}
}
}