001    package org.springframework.richclient.samples.showcase.binding;
002    
003    import java.util.Collections;
004    
005    import javax.swing.JComponent;
006    import javax.swing.JLabel;
007    import javax.swing.JPanel;
008    
009    import org.springframework.richclient.form.FormModelHelper;
010    import org.springframework.richclient.form.binding.Binding;
011    import org.springframework.richclient.form.binding.swing.EnumRadioButtonBinder;
012    import org.springframework.richclient.samples.showcase.util.AbstractReporterForm;
013    import org.springframework.richclient.samples.showcase.util.AbstractReporterTitledApplicationDialog;
014    import org.springframework.richclient.samples.showcase.util.Reporter;
015    
016    import com.jgoodies.forms.factories.FormFactory;
017    import com.jgoodies.forms.layout.CellConstraints;
018    import com.jgoodies.forms.layout.FormLayout;
019    
020    public class RadioButtonEnumDialog extends AbstractReporterTitledApplicationDialog {
021    
022        public static enum SmallEnum {
023            CHOICE_1, CHOICE_2, CHOICE_3;
024        }
025    
026        public class EnumContainer {
027            private SmallEnum smallEnum = SmallEnum.CHOICE_1;
028    
029            private SmallEnum nullableEnum = null;
030    
031            public SmallEnum getSmallEnum() {
032                return smallEnum;
033            }
034    
035            public void setSmallEnum(SmallEnum smallEnum) {
036                this.smallEnum = smallEnum;
037            }
038    
039            public SmallEnum getNullableEnum() {
040                return nullableEnum;
041            }
042    
043            public void setNullableEnum(SmallEnum nullableEnum) {
044                this.nullableEnum = nullableEnum;
045            }
046        }
047    
048        private class RadioButtonEnumForm extends AbstractReporterForm {
049    
050            public RadioButtonEnumForm() {
051                super(FormModelHelper.createFormModel(new EnumContainer()));
052            }
053    
054            @Override
055            protected JComponent createFormControl() {
056                JPanel panel = new JPanel(new FormLayout("center:pref", "pref,3dlu,pref,3dlu,pref,3dlu, pref"));
057                CellConstraints cc = new CellConstraints();
058    
059                panel.add(new JLabel(getMessage("radioButtonEnumForm.smallEnum.label")), cc.xy(1, 1));
060                EnumRadioButtonBinder binder = new EnumRadioButtonBinder();
061                Binding binding = binder.bind(getFormModel(), "smallEnum", Collections.EMPTY_MAP);
062                panel.add(binding.getControl(), cc.xy(1, 3));
063    
064                panel.add(new JLabel(getMessage("radioButtonEnumForm.nullableEnum.label")), cc.xy(1, 5));
065                binder = new EnumRadioButtonBinder();
066                binder.setNullable(true);
067                binding = binder.bind(getFormModel(), "nullableEnum", Collections.EMPTY_MAP);
068                panel.add(binding.getControl(), cc.xy(1, 7));
069                return panel;
070            }
071    
072        }
073    
074        @Override
075        protected Reporter getReporter() {
076            return new RadioButtonEnumForm();
077        }
078    
079    }