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 }