001 package org.springframework.richclient.form.binding.swing; 002 003 import org.springframework.richclient.form.binding.support.CustomBinding; 004 import org.springframework.binding.form.FormModel; 005 006 import javax.swing.event.ChangeListener; 007 import javax.swing.event.ChangeEvent; 008 import javax.swing.*; 009 010 @SuppressWarnings("unchecked") 011 public class SpinnerBinding extends CustomBinding implements ChangeListener 012 { 013 private final JSpinner spinner; 014 015 public SpinnerBinding(FormModel formModel, String propertyPath, Class numberClass, JSpinner spinner) 016 { 017 super(formModel, propertyPath, numberClass); 018 this.spinner = spinner; 019 } 020 021 @Override 022 protected JComponent doBindControl() 023 { 024 spinner.setValue(getValue()); 025 spinner.getModel().addChangeListener(this); 026 return this.spinner; 027 } 028 029 @Override 030 protected void readOnlyChanged() 031 { 032 spinner.setEnabled(!isReadOnly() && isEnabled()); 033 } 034 035 @Override 036 protected void enabledChanged() 037 { 038 readOnlyChanged(); 039 } 040 041 public void stateChanged(ChangeEvent e) 042 { 043 controlValueChanged(this.spinner.getValue()); 044 } 045 046 @Override 047 protected void valueModelChanged(Object newValue) 048 { 049 this.spinner.setValue(newValue); 050 } 051 052 }