001 package org.springframework.richclient.form.binding.swing;
002
003 import org.springframework.richclient.form.binding.support.AbstractBinder;
004 import org.springframework.richclient.form.binding.Binding;
005 import org.springframework.binding.form.FormModel;
006
007 import javax.swing.*;
008 import java.util.Map;
009
010 @SuppressWarnings("unchecked")
011 public class SpinnerBinder extends AbstractBinder
012 {
013 private Comparable minimum = null;
014 private Comparable maximum = null;
015 private Number currentValue = new Integer(0);
016 private Number stepValue = new Integer(1);
017
018 public SpinnerBinder()
019 {
020 this(Integer.class);
021 }
022
023 public SpinnerBinder(Class requiredClass)
024 {
025 super(requiredClass);
026 }
027
028 public void setMinimum(Comparable minimum)
029 {
030 this.minimum = minimum;
031 }
032
033 public void setMaximum(Comparable maximum)
034 {
035 this.maximum = maximum;
036 }
037
038 public void setCurrentValue(Number currentValue)
039 {
040 this.currentValue = currentValue;
041 }
042
043 public void setStepValue(Number stepValue)
044 {
045 this.stepValue = stepValue;
046 }
047
048 @Override
049 protected JComponent createControl(Map context)
050 {
051 return new JSpinner(new SpinnerNumberModel(this.currentValue, this.minimum, this.maximum, this.stepValue));
052 }
053
054 @Override
055 protected Binding doBind(JComponent control, FormModel formModel, String formPropertyPath, Map context)
056 {
057 return new SpinnerBinding(formModel, formPropertyPath, getRequiredSourceClass(), (JSpinner) control);
058 }
059
060 }