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 }