package org.rr.jeborker.gui.cell; import static org.rr.commons.utils.StringUtil.EMPTY; import java.awt.Component; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Locale; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import org.rr.commons.swing.SwingUtils; import org.rr.commons.utils.DateConversionUtils; import org.rr.commons.utils.ListUtils; public class DatePropertyCellRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 1L; private DateFormat dateFormat; public DatePropertyCellRenderer() { this(DateFormat.getDateInstance(DateFormat.SHORT)); } public DatePropertyCellRenderer(String formatString) { this(formatString, Locale.getDefault()); } public DatePropertyCellRenderer(Locale l) { this(DateFormat.getDateInstance(DateFormat.SHORT, l)); } public DatePropertyCellRenderer(String formatString, Locale l) { this(new SimpleDateFormat(formatString, l)); } public DatePropertyCellRenderer(DateFormat dateFormat) { this.dateFormat = dateFormat; } public void setValue(Object value) { if (value == null || value.toString().length() == 0) { setText(EMPTY); } else if(value instanceof Date){ setText(dateFormat.format((Date) value)); } else if(value instanceof String) { Date date = DateConversionUtils.toDate((String) value); if(date != null) { setText(dateFormat.format((Date) date)); } else { setText(String.valueOf(value)); } } else if(value instanceof List<?>) { Object first = ListUtils.first((List<?>) value); setText(String.valueOf(first)); } } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); setValue(value); SwingUtils.setColor(this, isSelected); return this; } }