package com.revolsys.swing.table.record.renderer;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import com.revolsys.record.Record;
import com.revolsys.swing.table.record.model.RecordRowTableModel;
import com.revolsys.util.number.BigDecimals;
public class RecordRowTableCellRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
private static final JLabel EMPTY_LABEL = new JLabel("\u2026");
public RecordRowTableCellRenderer() {
setOpaque(true);
}
@Override
public Component getTableCellRendererComponent(final JTable table, final Object value,
final boolean isSelected, final boolean hasFocus, final int rowIndex, final int columnIndex) {
final RecordRowTableModel model = (RecordRowTableModel)table.getModel();
final Record record = model.getRecord(rowIndex);
if (record == null) {
return EMPTY_LABEL;
} else {
final boolean selected = isSelected || model.isSelected(isSelected, rowIndex, columnIndex);
final Object displayValue;
final int fieldsOffset = model.getColumnFieldsOffset();
if (columnIndex < fieldsOffset) {
displayValue = value;
} else {
displayValue = model.toDisplayValue(rowIndex, columnIndex, value);
}
super.getTableCellRendererComponent(table, displayValue, selected, hasFocus, rowIndex,
columnIndex);
if (BigDecimals.isNumber(displayValue)) {
setHorizontalAlignment(SwingConstants.RIGHT);
setHorizontalTextPosition(SwingConstants.RIGHT);
} else {
setHorizontalAlignment(SwingConstants.LEFT);
setHorizontalTextPosition(SwingConstants.LEFT);
}
setToolTipText(null);
return this;
}
}
}