001    package org.springframework.richclient.samples.showcase.binding;
002    
003    import javax.swing.JComponent;
004    
005    import org.springframework.binding.form.ConfigurableFormModel;
006    import org.springframework.binding.form.FieldMetadata;
007    import org.springframework.binding.form.support.DefaultFieldMetadata;
008    import org.springframework.binding.form.support.ReadOnlyFieldMetadata;
009    import org.springframework.binding.value.ValueModel;
010    import org.springframework.binding.value.support.MessageFormatValueModel;
011    import org.springframework.richclient.dialog.TitledApplicationDialog;
012    import org.springframework.richclient.form.AbstractForm;
013    import org.springframework.richclient.form.FormModelHelper;
014    import org.springframework.richclient.form.builder.TableFormBuilder;
015    
016    public class DerivedValueModelDialog extends TitledApplicationDialog {
017    
018            private class Values {
019                    private String name;
020    
021                    private String surname;
022    
023                    private String title;
024    
025                    public String getName() {
026                            return name;
027                    }
028    
029                    public void setName(String name) {
030                            this.name = name;
031                    }
032    
033                    public String getSurname() {
034                            return surname;
035                    }
036    
037                    public void setSurname(String surname) {
038                            this.surname = surname;
039                    }
040    
041                    public String getTitle() {
042                            return title;
043                    }
044    
045                    public void setTitle(String title) {
046                            this.title = title;
047                    }
048    
049            }
050    
051            private class MessageValueModelForm extends AbstractForm {
052    
053                    public MessageValueModelForm() {
054                            super(FormModelHelper.createFormModel(new Values()));
055                    }
056    
057                    @Override
058                    protected JComponent createFormControl() {
059                            TableFormBuilder builder = new TableFormBuilder(getBindingFactory());
060                            builder.add("name");
061                            builder.row();
062                            builder.add("surname");
063                            builder.row();
064                            builder.add("title");
065                            builder.row();
066                            ConfigurableFormModel formModel = getFormModel();
067                            ValueModel derivedValueModel = new MessageFormatValueModel("{2} {1} {0}", new ValueModel[] {
068                                            getValueModel("name"), getValueModel("surname"), getValueModel("title") });
069                            FieldMetadata fieldMetaData = new ReadOnlyFieldMetadata(getFormModel(), String.class);
070                            formModel.add("derivedValue", derivedValueModel, fieldMetaData);
071                            builder.add("derivedValue");
072                            return builder.getForm();
073                    }
074    
075            }
076    
077            @Override
078            protected JComponent createTitledDialogContentPane() {
079                    return (new MessageValueModelForm()).getControl();
080            }
081    
082            @Override
083            protected boolean onFinish() {
084                    return true;
085            }
086    
087    }