package datechooser.beans;
import datechooser.events.CommitEvent;
import datechooser.events.CommitListener;
import datechooser.model.multiple.MultyModelBehavior;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
/**
* Table cell editor based on datechooser bean.
* @author Androsov Vadim
* @since 1.1
*/
class BeanTableCellEditor extends AbstractCellEditor implements TableCellEditor, BeanTableCell {
private DateChooserVisual bean;
private boolean commitLocked;
private BeanTableCellRenderer renderer;
public BeanTableCellEditor(DateChooserVisual bean) {
setCommitLocked(false);
renderer = new BeanTableCellRenderer(bean);
this.bean = bean;
bean.addCommitListener(new CommitListener() {
public void onCommit(CommitEvent evt) {
if (!isCommitLocked()) stopCellEditing();
}
});
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return renderer.getTableCellRendererComponent(table, value, isSelected, true, row, column);
}
/**
* @return bean editor value: Calendar or PeriodSet Object.
* @see datechooser.beans.TableCellEditorAndRenderer#isUseCalendarForSingleDate
*/
public Object getCellEditorValue() {
if ((bean.getBehavior() == MultyModelBehavior.SELECT_SINGLE) && isUseCalendarForSingleDate()) {
return bean.getSelectedDate();
}
return bean.getSelectedPeriodSet();
}
public boolean isCommitLocked() {
return commitLocked;
}
public void setCommitLocked(boolean commitLocked) {
this.commitLocked = commitLocked;
}
public boolean isUseCalendarForSingleDate() {
return renderer.isUseCalendarForSingleDate();
}
public void setUseCalendarForSingleDate(boolean useCalendarForSingleDate) {
renderer.setUseCalendarForSingleDate(useCalendarForSingleDate);
}
}