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 }