001 package org.springframework.richclient.form.binding.swing.date;
002
003
004 import java.beans.PropertyChangeEvent;
005 import java.beans.PropertyChangeListener;
006 import java.util.Date;
007
008 import javax.swing.JComponent;
009
010 import org.springframework.binding.form.FormModel;
011
012 import com.toedter.calendar.JDateChooser;
013
014 /**
015 * Binds a <cod>Date</code> to a JCalendar <code>JDateChooser</code>
016 *
017 * @author Peter De Bruycker
018 */
019 public class JCalendarDateFieldBinding extends AbstractDateFieldBinding {
020
021 private JDateChooser dateChooser;
022
023 public JCalendarDateFieldBinding(JDateChooser dateChooser, FormModel formModel, String formPropertyPath) {
024 super(formModel, formPropertyPath);
025 this.dateChooser = dateChooser;
026 }
027
028 protected void valueModelChanged(Object newValue) {
029 dateChooser.setDate((Date) newValue);
030 }
031
032 protected JComponent doBindControl() {
033 if (getDateFormat() != null) {
034 dateChooser.setDateFormatString(getDateFormat());
035 }
036
037 dateChooser.setDate((Date) getValue());
038
039 dateChooser.addPropertyChangeListener("date", new PropertyChangeListener() {
040 public void propertyChange(PropertyChangeEvent evt) {
041 controlValueChanged(dateChooser.getDate());
042 }
043 });
044
045 return dateChooser;
046 }
047
048 protected void readOnlyChanged() {
049 dateChooser.setEnabled(isEnabled() && !isReadOnly());
050 }
051
052 protected void enabledChanged() {
053 dateChooser.setEnabled(isEnabled() && !isReadOnly());
054 }
055
056 }