/*
* PeriodsEditorPane.java
*
* Created on 8 ������ 2006 �., 21:22
*
*/
package datechooser.beans.editor.dates;
import datechooser.beans.DateChooserPanel;
import datechooser.beans.editor.descriptor.DescriptionManager;
import datechooser.model.multiple.Period;
import datechooser.model.multiple.PeriodSet;
import java.awt.BorderLayout;
import java.beans.*;
import javax.swing.*;
/**
* Periods editor panel.<br>
* ������ �������������� ��������.
* @author Androsov Vadim
* @since 1.0
*/
class PeriodsEditorPane extends JPanel implements PropertyChangeListener {
private PropertyEditorSupport editor = null;
private DateChooserPanel chooser;
private static int c = 0;
private boolean innerEdit;
public PeriodsEditorPane(PropertyEditorSupport editor) {
setEditor(editor);
chooser = new DateChooserPanel();
initEditor();
setLayout(new BorderLayout());
add(chooser, BorderLayout.CENTER);
chooser.getModel().addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
innerSetValue(chooser.getSelectedPeriodSet());
}
});
}
private void initEditor() {
if (isInnerEdit()) return;
setInnerEdit(true);
if (getEditorValue() != null) {
chooser.setSelection(getEditorValue());
}
setInnerEdit(false);
}
private void innerSetValue(PeriodSet value) {
if (isInnerEdit()) {
return;
}
setInnerEdit(true);
getEditor().setValue(value.clone());
setInnerEdit(false);
}
private PeriodSet getEditorValue() {
return (PeriodSet) editor.getValue();
}
public PropertyEditorSupport getEditor() {
return editor;
}
public void setEditor(PropertyEditorSupport editor) {
if (getEditor() != null) {
getEditor().removePropertyChangeListener(this);
}
this.editor = editor;
getEditor().addPropertyChangeListener(this);
}
public boolean isInnerEdit() {
return innerEdit;
}
public void setInnerEdit(boolean innerEdit) {
this.innerEdit = innerEdit;
}
public void propertyChange(PropertyChangeEvent evt) {
initEditor();
}
}