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 }