001 package org.springframework.richclient.form.binding.swing;
002
003 import org.springframework.richclient.form.binding.Binder;
004 import org.springframework.richclient.form.binding.Binding;
005 import org.springframework.richclient.components.SliderLabelFactory;
006 import org.springframework.binding.form.FormModel;
007
008 import javax.swing.*;
009 import java.util.Map;
010
011 /**
012 * Binder class for integer values that displays a slider. Can use a {@link SliderLabelFactory} for custom labels. If a
013 * {@link SliderLabelFactory} is not present and the majorTickValue is set, the binding will create it's own labels
014 * based on that value.
015 */
016 @SuppressWarnings("unchecked")
017 public class SliderBinder implements Binder
018 {
019
020 private int maxValue;
021 private int minValue;
022 private boolean readOnly;
023 private int maxTickSpacing;
024
025 private SliderLabelFactory sliderLabelFactory;
026
027 public Binding bind(FormModel formModel, String formPropertyPath, Map context)
028 {
029 SliderBinding binding = new SliderBinding(formModel, formPropertyPath);
030 binding.setMaxValue(maxValue);
031 binding.setMinValue(minValue);
032 binding.setReadOnly(readOnly);
033 binding.setMajorTickSpacing(maxTickSpacing);
034 binding.setSliderLabelFactory(sliderLabelFactory);
035 binding.setReadOnly(readOnly);
036 return binding;
037 }
038
039 public Binding bind(JComponent control, FormModel formModel, String formPropertyPath, Map context)
040 {
041 throw new UnsupportedOperationException("Deze binder voorziet in zijn eigen component");
042 }
043
044 /** Sets the maximum value of the slider */
045 public void setMaxValue(int maxValue)
046 {
047 this.maxValue = maxValue;
048 }
049
050 /** Sets the minimum value of the slider */
051 public void setMinValue(int minValue)
052 {
053 this.minValue = minValue;
054 }
055
056 /** Sets whether the control is readonly */
057 public void setReadOnly(boolean readOnly)
058 {
059 this.readOnly = readOnly;
060 }
061
062 /** Sets the major tick value of the slider */
063 public void setMajorTickSpacing(int maxTickSpacing)
064 {
065 this.maxTickSpacing = maxTickSpacing;
066 }
067
068 /** Set the factory for the custom labels */
069 public void setSliderLabelFactory(SliderLabelFactory sliderLabelFactory)
070 {
071 this.sliderLabelFactory = sliderLabelFactory;
072 }
073
074 }