001 /**
002 * Copyright 2005-2012 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
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,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package edu.sampleu.demo.kitchensink;
017
018 import javax.servlet.http.HttpServletRequest;
019 import javax.servlet.http.HttpServletResponse;
020
021 import org.kuali.rice.krad.datadictionary.validation.ViewAttributeValueReader;
022 import org.kuali.rice.krad.service.DictionaryValidationService;
023 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
024 import org.kuali.rice.krad.uif.UifParameters;
025 import org.kuali.rice.krad.uif.component.Component;
026 import org.kuali.rice.krad.uif.container.CollectionGroup;
027 import org.kuali.rice.krad.uif.container.Container;
028 import org.kuali.rice.krad.uif.container.Group;
029 import org.kuali.rice.krad.uif.field.DataField;
030 import org.kuali.rice.krad.uif.field.FieldGroup;
031 import org.kuali.rice.krad.uif.field.InputField;
032 import org.kuali.rice.krad.uif.layout.StackedLayoutManager;
033 import org.kuali.rice.krad.uif.layout.TableLayoutManager;
034 import org.kuali.rice.krad.util.GlobalVariables;
035 import org.kuali.rice.krad.web.controller.UifControllerBase;
036 import org.kuali.rice.krad.web.form.UifFormBase;
037 import org.springframework.stereotype.Controller;
038 import org.springframework.validation.BindingResult;
039 import org.springframework.web.bind.annotation.ModelAttribute;
040 import org.springframework.web.bind.annotation.RequestMapping;
041 import org.springframework.web.bind.annotation.RequestMethod;
042 import org.springframework.web.servlet.ModelAndView;
043
044 import java.beans.PropertyEditor;
045 import java.util.Enumeration;
046 import java.util.List;
047 import java.util.Map;
048 import java.util.Random;
049
050 /**
051 * Controller for the Test UI Page
052 *
053 * @author Kuali Rice Team (rice.collab@kuali.org)
054 */
055 @Controller
056 @RequestMapping(value = "/uicomponents")
057 public class UifComponentsTestController extends UifControllerBase {
058
059 /**
060 * @see org.kuali.rice.krad.web.controller.UifControllerBase#createInitialForm(javax.servlet.http.HttpServletRequest)
061 */
062 @Override
063 protected UifComponentsTestForm createInitialForm(HttpServletRequest request) {
064 return new UifComponentsTestForm();
065 }
066
067 @Override
068 @RequestMapping(params = "methodToCall=start")
069 public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
070 HttpServletRequest request, HttpServletResponse response) {
071 UifComponentsTestForm uiTestForm = (UifComponentsTestForm) form;
072
073 GlobalVariables.getMessageMap().addGrowlMessage("Welcome!", "kitchenSink.welcome");
074
075 return super.start(uiTestForm, result, request, response);
076 }
077
078 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=save")
079 public ModelAndView save(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, BindingResult result,
080 HttpServletRequest request, HttpServletResponse response) {
081 KRADServiceLocatorWeb.getViewValidationService().validateView(uiTestForm);
082 return getUIFModelAndView(uiTestForm);
083 }
084
085
086 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=close")
087 public ModelAndView close(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, BindingResult result,
088 HttpServletRequest request, HttpServletResponse response) {
089
090 return getUIFModelAndView(uiTestForm, "UifCompView-Page1");
091 }
092
093 /**
094 * Handles menu navigation between view pages
095 */
096 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=navigate")
097 public ModelAndView navigate(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
098 HttpServletRequest request, HttpServletResponse response) {
099 String pageId = form.getActionParamaterValue(UifParameters.NAVIGATE_TO_PAGE_ID);
100
101 if (pageId.equals("UifCompView-Page8")) {
102 GlobalVariables.getMessageMap().putError("gField1", "serverTestError");
103 GlobalVariables.getMessageMap().putError("gField1", "serverTestError2");
104 GlobalVariables.getMessageMap().putError("gField2", "serverTestError");
105 GlobalVariables.getMessageMap().putError("gField3", "serverTestError");
106 GlobalVariables.getMessageMap().putWarning("gField1", "serverTestWarning");
107 GlobalVariables.getMessageMap().putWarning("gField2", "serverTestWarning");
108 GlobalVariables.getMessageMap().putInfo("gField2", "serverTestInfo");
109 GlobalVariables.getMessageMap().putInfo("gField3", "serverTestInfo");
110 }
111 // only refreshing page
112 form.setRenderFullView(false);
113
114 return getUIFModelAndView(form, pageId);
115 }
116
117 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshProgGroup")
118 public ModelAndView refreshProgGroup(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm,
119 BindingResult result, HttpServletRequest request, HttpServletResponse response) {
120
121 return getUIFModelAndView(uiTestForm);
122 }
123
124 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshWithServerMessages")
125 public ModelAndView refreshWithServerMessages(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm,
126 BindingResult result, HttpServletRequest request, HttpServletResponse response) {
127 GlobalVariables.getMessageMap().putError("field45", "serverTestError");
128 GlobalVariables.getMessageMap().putWarning("field45", "serverTestWarning");
129 GlobalVariables.getMessageMap().putInfo("field45", "serverTestInfo");
130
131 return getUIFModelAndView(uiTestForm);
132 }
133
134 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=genCollectionServerMessages")
135 public ModelAndView genCollectionServerMessages(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm,
136 BindingResult result, HttpServletRequest request, HttpServletResponse response) throws Exception {
137 GlobalVariables.getMessageMap().putError("list2[0].field1", "serverTestError");
138 GlobalVariables.getMessageMap().putWarning("list2[0].field1", "serverTestWarning");
139 GlobalVariables.getMessageMap().putInfo("list2[0].field1", "serverTestInfo");
140
141 GlobalVariables.getMessageMap().putError("list3[0].field1", "serverTestError");
142 GlobalVariables.getMessageMap().putWarning("list3[0].field1", "serverTestWarning");
143 GlobalVariables.getMessageMap().putInfo("list3[0].field1", "serverTestInfo");
144
145 GlobalVariables.getMessageMap().putError("list5[0].subList[0].field1", "serverTestError");
146 GlobalVariables.getMessageMap().putWarning("list5[0].subList[0].field1", "serverTestWarning");
147 GlobalVariables.getMessageMap().putInfo("list5[0].subList[0].field1", "serverTestInfo");
148 return refresh(uiTestForm, result, request, response);
149 }
150
151
152 /**
153 * Adds errors to fields defined in the validationMessageFields array
154 */
155 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrors")
156 public ModelAndView addErrors(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
157 HttpServletRequest request, HttpServletResponse response) {
158
159 if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")){
160 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-Section1", "errorSectionTest");
161 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-Section2", "errorSectionTest");
162 }
163 else if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")){
164 GlobalVariables.getMessageMap().putError("badKey", "unmatchedTest");
165 }
166
167 Map<String, PropertyEditor> propertyEditors = form.getPostedView().getViewIndex().getFieldPropertyEditors();
168 for(String key: propertyEditors.keySet()){
169 GlobalVariables.getMessageMap().putError(key, "error1Test");
170 }
171
172 return getUIFModelAndView(form);
173 }
174
175 /**
176 * Adds warnings to fields defined in the validationMessageFields array
177 */
178 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addWarnings")
179 public ModelAndView addWarnings(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
180 HttpServletRequest request, HttpServletResponse response) {
181
182 if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")){
183 GlobalVariables.getMessageMap().putWarning("Demo-ValidationLayout-Section1", "warningSectionTest");
184 GlobalVariables.getMessageMap().putWarning("Demo-ValidationLayout-Section2", "warningSectionTest");
185 }
186 else if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")){
187 GlobalVariables.getMessageMap().putWarning("badKey", "unmatchedTest");
188 }
189
190 Map<String, PropertyEditor> propertyEditors = form.getPostedView().getViewIndex().getFieldPropertyEditors();
191 for(String key: propertyEditors.keySet()){
192 GlobalVariables.getMessageMap().putWarning(key, "warning1Test");
193 }
194
195 return getUIFModelAndView(form);
196 }
197
198 /**
199 * Adds infos to fields defined in the validationMessageFields array
200 */
201 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addInfo")
202 public ModelAndView addInfo(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
203 HttpServletRequest request, HttpServletResponse response) {
204
205 if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")){
206 GlobalVariables.getMessageMap().putInfo("Demo-ValidationLayout-Section1", "infoSectionTest");
207 GlobalVariables.getMessageMap().putInfo("Demo-ValidationLayout-Section2", "infoSectionTest");
208 }
209 else if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")){
210 GlobalVariables.getMessageMap().putInfo("badKey", "unmatchedTest");
211 }
212
213 Map<String, PropertyEditor> propertyEditors = form.getPostedView().getViewIndex().getFieldPropertyEditors();
214 for(String key: propertyEditors.keySet()){
215 GlobalVariables.getMessageMap().putInfo(key, "info1Test");
216 }
217
218 return getUIFModelAndView(form);
219 }
220
221 /**
222 * Adds all message types to fields defined in the validationMessageFields array
223 */
224 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addAllMessages")
225 public ModelAndView addAllMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
226 HttpServletRequest request, HttpServletResponse response) {
227
228 this.addErrors(form, result, request, response);
229 this.addWarnings(form, result, request, response);
230 this.addInfo(form, result, request, response);
231
232 return getUIFModelAndView(form);
233 }
234
235 /**
236 * Adds error and warning messages to fields defined in the validationMessageFields array
237 */
238 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrorWarnMessages")
239 public ModelAndView addErrorWarnMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
240 HttpServletRequest request, HttpServletResponse response) {
241
242 this.addErrors(form, result, request, response);
243 this.addWarnings(form, result, request, response);
244
245 return getUIFModelAndView(form);
246 }
247
248 /**
249 * Adds error and info messages to fields defined in the validationMessageFields array
250 */
251 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrorInfoMessages")
252 public ModelAndView addErrorInfoMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
253 HttpServletRequest request, HttpServletResponse response) {
254
255 this.addErrors(form, result, request, response);
256 this.addInfo(form, result, request, response);
257
258 return getUIFModelAndView(form);
259 }
260
261 /**
262 * Adds warning and info messages to fields defined in the validationMessageFields array
263 */
264 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addWarningInfoMessages")
265 public ModelAndView addWarnInfoMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
266 HttpServletRequest request, HttpServletResponse response) {
267
268 this.addWarnings(form, result, request, response);
269 this.addInfo(form, result, request, response);
270
271 return getUIFModelAndView(form);
272 }
273
274 }