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 }