001 /* 002 * Copyright 2002-2006 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 018 package org.springframework.richclient.form; 019 020 import javax.swing.JComponent; 021 022 import org.springframework.beans.factory.InitializingBean; 023 import org.springframework.util.Assert; 024 import org.springframework.binding.form.FormModel; 025 import org.springframework.binding.form.HierarchicalFormModel; 026 import org.springframework.binding.form.ValidatingFormModel; 027 import org.springframework.binding.value.ValueModel; 028 029 /** 030 * Convenience class for producing a Spring Rich {@link Form} based on a 031 * pre-generated form UI (typically, a form that has been created in a form 032 * designer such as Matisse or JFormDesigner). This implementation handles 033 * the most common case where a developer designs a form and wants to display 034 * it without any custom functionality beyond what Spring Rich already 035 * provides. 036 * <p/> 037 * In order to better facilitate the common usage scenarios and to avoid 038 * developers having to subclass <code>GeneratedForm</code>, many convenience 039 * constructors are provided, along with making the 040 * {@link #setFormModel(ValidatingFormModel)} and {@link #setId(String)} 041 * methods public. 042 * 043 * @author Andy DePue 044 * @author Peter De Bruycker 045 */ 046 public class GeneratedForm extends AbstractForm implements InitializingBean { 047 private FormUIProvider formUIProvider; 048 049 public GeneratedForm() { 050 super(); 051 } 052 053 public GeneratedForm(String formId) { 054 super(formId); 055 } 056 057 public GeneratedForm(Object formObject) { 058 super(formObject); 059 } 060 061 public GeneratedForm(FormModel pageFormModel) { 062 super(pageFormModel); 063 } 064 065 public GeneratedForm(FormModel formModel, String formId) { 066 super(formModel, formId); 067 } 068 069 public GeneratedForm(HierarchicalFormModel parentFormModel, String formId, String childFormObjectPropertyPath) { 070 super(parentFormModel, formId, childFormObjectPropertyPath); 071 } 072 073 public GeneratedForm(HierarchicalFormModel parentFormModel, String formId, ValueModel childFormObjectHolder) { 074 super(parentFormModel, formId, childFormObjectHolder); 075 } 076 077 public GeneratedForm(final FormUIProvider formUIProvider) { 078 this.formUIProvider = formUIProvider; 079 } 080 081 public GeneratedForm(String formId, final FormUIProvider formUIProvider) { 082 super(formId); 083 this.formUIProvider = formUIProvider; 084 } 085 086 public GeneratedForm(Object formObject, final FormUIProvider formUIProvider) { 087 super(formObject); 088 this.formUIProvider = formUIProvider; 089 } 090 091 public GeneratedForm(Object formObject, String formId, final FormUIProvider formUIProvider) { 092 super(formObject); 093 setId(formId); 094 this.formUIProvider = formUIProvider; 095 } 096 097 public GeneratedForm(FormModel pageFormModel, final FormUIProvider formUIProvider) { 098 super(pageFormModel); 099 this.formUIProvider = formUIProvider; 100 } 101 102 public GeneratedForm(FormModel formModel, String formId, final FormUIProvider formUIProvider) { 103 super(formModel, formId); 104 this.formUIProvider = formUIProvider; 105 } 106 107 public GeneratedForm(HierarchicalFormModel parentFormModel, String formId, String childFormObjectPropertyPath, final FormUIProvider formUIProvider) { 108 super(parentFormModel, formId, childFormObjectPropertyPath); 109 this.formUIProvider = formUIProvider; 110 } 111 112 public GeneratedForm(HierarchicalFormModel parentFormModel, String formId, ValueModel childFormObjectHolder, final FormUIProvider formUIProvider) { 113 super(parentFormModel, formId, childFormObjectHolder); 114 this.formUIProvider = formUIProvider; 115 } 116 117 118 // 119 // METHODS FROM CLASS AbstractForm 120 // 121 122 protected JComponent createFormControl() { 123 this.formUIProvider.bind(getBindingFactory(), this); 124 return this.formUIProvider.getControl(); 125 } 126 127 /** 128 * Provides public access to this method as a convenience. 129 * 130 * @param formModel 131 */ 132 public void setFormModel(ValidatingFormModel formModel) { 133 super.setFormModel(formModel); 134 } 135 136 137 /** 138 * Provides public access to this method as a convenience. 139 * 140 * @param formId 141 */ 142 public void setId(String formId) { 143 super.setId(formId); 144 } 145 146 147 148 149 150 151 // 152 // METHODS FROM INTERFACE InitializingBean 153 // 154 155 public void afterPropertiesSet() throws Exception { 156 Assert.notNull(this.formUIProvider, "formUIProvider must be set"); 157 } 158 159 160 161 162 // 163 // SIMPLE PROPERTY ACCESSORS 164 // 165 166 public FormUIProvider getFormUIProvider() { 167 return formUIProvider; 168 } 169 170 public void setFormUIProvider(final FormUIProvider formUIProvider) { 171 this.formUIProvider = formUIProvider; 172 } 173 }