package datechooser.beans;
import datechooser.model.multiple.PeriodSet;
import java.awt.*;
import java.util.Calendar;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.table.TableCellRenderer;
/**
* Table cell renderer based on datechooser bean.
* @author Androsov Vadim
* @since 1.1
*/
class BeanTableCellRenderer implements TableCellRenderer, BeanTableCell {
private boolean useCalendarForSingleDate;
private DateChooserVisual bean;
private boolean commitLocked;
private Border selectBorder;
private Border focusBorder;
private Border emptyBorder;
public BeanTableCellRenderer(DateChooserVisual bean) {
setUseCalendarForSingleDate(true);
this.bean = bean;
selectBorder = BorderFactory.createLineBorder(Color.BLUE, 1);
focusBorder = BorderFactory.createLineBorder(Color.BLACK, 1);
emptyBorder = BorderFactory.createEmptyBorder(1, 1, 1, 1);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
bean.setBorder(emptyBorder);
if (isSelected) {
bean.setBorder(selectBorder);
}
if (hasFocus) {
bean.setBorder(focusBorder);
}
if (value instanceof Calendar) {
Calendar cval = (Calendar) value;
bean.setSelectedDate(cval);
} else if (value instanceof PeriodSet) {
PeriodSet pval = (PeriodSet) value;
bean.setSelection(pval);
}
return bean;
}
public boolean isUseCalendarForSingleDate() {
return useCalendarForSingleDate;
}
public void setUseCalendarForSingleDate(boolean useCalendarForSingleDate) {
this.useCalendarForSingleDate = useCalendarForSingleDate;
}
}