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 }