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    }