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 }