/* * PeriodsEditorPane.java * * Created on 8 ������ 2006 �., 21:22 * */ package datechooser.beans.editor.dates; import datechooser.beans.DateChooserPanel; import datechooser.model.multiple.MultyModelBehavior; import datechooser.model.multiple.Period; import datechooser.model.multiple.PeriodSet; import java.awt.BorderLayout; import java.beans.*; import java.util.*; import javax.swing.*; /** * Date editor panel.<br> * ������ �������������� ���. * @author Androsov Vadim * @since 1.0 */ class DateEditorPane extends JPanel { private PropertyEditorSupport editor; private DateChooserPanel chooser; private boolean innerEdit; public DateEditorPane(PropertyEditorSupport editor) { setEditor(editor); chooser = new DateChooserPanel(); chooser.setBehavior(MultyModelBehavior.SELECT_SINGLE); initEditor(); setLayout(new BorderLayout()); add(chooser, BorderLayout.CENTER); chooser.getModel().addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { innerSetValue(chooser.getSelectedDate()); } }); getEditor().addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { initEditor(); } }); } private void initEditor() { if (!isInnerEdit()) { innerSetValue(getEditorValue()); setInnerEdit(true); chooser.setSelectedDate(getEditorValue()); setInnerEdit(false); } } private void innerSetValue(Calendar value) { if (isInnerEdit()) { return; } setInnerEdit(true); Calendar date = value != null ? (Calendar) value.clone() : null; getEditor().setValue(date); setInnerEdit(false); } private Calendar getEditorValue() { return (Calendar) editor.getValue(); } public PropertyEditorSupport getEditor() { return editor; } public void setEditor(PropertyEditorSupport editor) { this.editor = editor; } public boolean isInnerEdit() { return innerEdit; } public void setInnerEdit(boolean innerEdit) { this.innerEdit = innerEdit; } }