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