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 }