001 /* 002 * Copyright 2002-2007 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 017 package org.springframework.richclient.samples.showcase.binding; 018 019 import java.util.Date; 020 import java.util.HashMap; 021 import java.util.Map; 022 023 import javax.swing.JComponent; 024 025 import org.springframework.binding.form.ConfigurableFormModel; 026 import org.springframework.binding.form.FieldMetadata; 027 import org.springframework.binding.form.support.ReadOnlyFieldMetadata; 028 import org.springframework.binding.value.ValueModel; 029 import org.springframework.binding.value.support.MessageFormatValueModel; 030 import org.springframework.richclient.dialog.TitledApplicationDialog; 031 import org.springframework.richclient.form.AbstractForm; 032 import org.springframework.richclient.form.FormModelHelper; 033 import org.springframework.richclient.form.binding.Binding; 034 import org.springframework.richclient.form.binding.swing.SwingBindingFactory; 035 import org.springframework.richclient.form.binding.swing.date.NachoCalendarDateFieldBinder; 036 import org.springframework.richclient.form.builder.TableFormBuilder; 037 038 public class CalendarBindingDialog extends TitledApplicationDialog { 039 040 private class Values { 041 private String name; 042 043 private String surname; 044 045 private Date birthday; 046 047 public String getName() { 048 return name; 049 } 050 051 public void setName(String name) { 052 this.name = name; 053 } 054 055 public String getSurname() { 056 return surname; 057 } 058 059 public void setSurname(String surname) { 060 this.surname = surname; 061 } 062 063 public Date getBirthday() { 064 return birthday; 065 } 066 067 public void setBirthday(Date birthday) { 068 this.birthday = birthday; 069 } 070 071 } 072 073 private class MessageValueModelForm extends AbstractForm { 074 075 public MessageValueModelForm() { 076 super(FormModelHelper.createFormModel(new Values())); 077 } 078 079 @Override 080 protected JComponent createFormControl() { 081 TableFormBuilder builder = new TableFormBuilder(getBindingFactory()); 082 builder.add("name"); 083 builder.row(); 084 builder.add("surname"); 085 builder.row(); 086 087 Map<String, Object> context = new HashMap<String, Object>(); 088 context.put(NachoCalendarDateFieldBinder.SHOW_OK_CANCEL_KEY, Boolean.TRUE); 089 context.put(NachoCalendarDateFieldBinder.SHOW_WEEKNUMBERS_KEY, Boolean.TRUE); 090 // context.put(NachoCalendarDateFieldBinder.DATE_FORMAT, "MM'/'yyyy"); 091 context.put(NachoCalendarDateFieldBinder.WORKING_DAYS_KEY, new boolean[] {true, true, true, false, false, false, false}); 092 final SwingBindingFactory bf = (SwingBindingFactory) getBindingFactory(); 093 Binding b = bf.createBinding("birthday", context); 094 builder.add(b); 095 // builder.add("birthday"); 096 builder.row(); 097 ConfigurableFormModel formModel = getFormModel(); 098 ValueModel derivedValueModel = new MessageFormatValueModel("{0} {1} was born on {2}", new ValueModel[] { 099 getValueModel("name"), getValueModel("surname"), getValueModel("birthday") }); 100 FieldMetadata fieldMetaData = new ReadOnlyFieldMetadata(getFormModel(), String.class); 101 formModel.add("derivedBirthday", derivedValueModel, fieldMetaData); 102 builder.add("derivedBirthday"); 103 return builder.getForm(); 104 } 105 106 } 107 108 @Override 109 protected JComponent createTitledDialogContentPane() { 110 return (new MessageValueModelForm()).getControl(); 111 } 112 113 @Override 114 protected boolean onFinish() { 115 return true; 116 } 117 118 }