1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.uif.container;
17
18 import java.util.ArrayList;
19 import java.util.Collections;
20 import java.util.List;
21
22 import org.kuali.rice.core.api.util.KeyValue;
23 import org.kuali.rice.krad.datadictionary.parse.BeanTag;
24 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
25 import org.kuali.rice.krad.datadictionary.parse.BeanTags;
26 import org.kuali.rice.krad.uif.UifConstants;
27 import org.kuali.rice.krad.uif.component.Component;
28 import org.kuali.rice.krad.uif.control.MultiValueControl;
29 import org.kuali.rice.krad.uif.field.InputField;
30 import org.kuali.rice.krad.uif.field.MessageField;
31 import org.kuali.rice.krad.uif.util.LifecycleElement;
32 import org.kuali.rice.krad.uif.util.ScriptUtils;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 @BeanTags({@BeanTag(name = "dialogGroup-bean", parent = "Uif-DialogGroup"),
66 @BeanTag(name = "sensitiveData-dialogGroup-bean", parent = "Uif-SensitiveData-DialogGroup"),
67 @BeanTag(name = "ok-cancel-dialogGroup-bean", parent = "Uif-OK-Cancel-DialogGroup"),
68 @BeanTag(name = "yes-no-dialogGroup-bean", parent = "Uif-Yes-No-DialogGroup"),
69 @BeanTag(name = "true-false-dialogGroup-bean", parent = "Uif-True-False-DialogGroup"),
70 @BeanTag(name = "checkbox-dialogGroup-bean", parent = "Uif-Checkbox-DialogGroup"),
71 @BeanTag(name = "radioButton-dialogGroup-bean", parent = "Uif-RadioButton-DialogGroup")})
72 public class DialogGroup extends GroupBase {
73 private static final long serialVersionUID = 1L;
74
75 private String promptText;
76 private List<KeyValue> availableResponses;
77
78 private MessageField prompt;
79 private InputField explanation;
80 private InputField responseInputField;
81
82 private boolean reverseButtonOrder;
83 private boolean displayExplanation;
84
85 private String onDialogResponseScript;
86 private String onShowDialogScript;
87
88 public DialogGroup() {
89 super();
90 }
91
92
93
94
95
96
97
98
99
100
101
102 @Override
103 public void performInitialization(Object model) {
104 super.performInitialization(model);
105
106
107
108 List<Component> newItems = new ArrayList<Component>();
109 List<? extends Component> items = getItems();
110
111
112 if (!(items.contains(prompt))) {
113 newItems.add(prompt);
114 }
115
116 if (!(items.contains(explanation))) {
117 newItems.add(explanation);
118 }
119
120 newItems.addAll(getItems());
121
122 if (!(items.contains(responseInputField))) {
123 newItems.add(responseInputField);
124 }
125
126 this.setItems(newItems);
127 }
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144 @Override
145 public void performApplyModel(Object model, LifecycleElement parent) {
146 super.performApplyModel(model, parent);
147
148
149 prompt.setMessageText(promptText);
150
151
152 explanation.setRender(displayExplanation);
153
154
155 if (responseInputField.getControl() != null && responseInputField.getControl() instanceof MultiValueControl) {
156 MultiValueControl multiValueControl = (MultiValueControl) responseInputField.getControl();
157
158 if (reverseButtonOrder) {
159
160 List<KeyValue> buttonList = new ArrayList<KeyValue>(availableResponses);
161 Collections.reverse(buttonList);
162 multiValueControl.setOptions(buttonList);
163 } else {
164 multiValueControl.setOptions(availableResponses);
165 }
166 }
167 }
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182 @Override
183 public void performFinalize(Object model, LifecycleElement parent) {
184 super.performFinalize(model, parent);
185
186 if (responseInputField != null) {
187 String responseInputSelector = "#" + responseInputField.getId() + " [name='" +
188 responseInputField.getBindingInfo().getBindingPath() + "']";
189
190 String onChangeScript = "var value = coerceValue(\"" + responseInputField.getBindingInfo().getBindingPath()
191 + "\");";
192 onChangeScript += "jQuery('#" + getId() + "').trigger({type:'" + UifConstants.JsEvents.DIALOG_RESPONSE
193 + "',value:value});";
194
195 String onChangeHandler = "jQuery(\"" + responseInputSelector + "\").change(function(e){" + onChangeScript
196 + "});";
197
198 String onReadyScript = ScriptUtils.appendScript(getOnDocumentReadyScript(), onChangeHandler);
199 setOnDocumentReadyScript(onReadyScript);
200 }
201 }
202
203
204
205
206
207
208 @Override
209 public String getEventHandlerScript() {
210 String handlerScript = super.getEventHandlerScript();
211
212 handlerScript += ScriptUtils.buildEventHandlerScript(getId(), UifConstants.JsEvents.DIALOG_RESPONSE,
213 getOnDialogResponseScript());
214
215 handlerScript += ScriptUtils.buildEventHandlerScript(getId(), UifConstants.JsEvents.SHOW_DIALOG,
216 getOnShowDialogScript());
217
218 return handlerScript;
219 }
220
221
222
223
224
225
226
227 @BeanTagAttribute(name = "promptText")
228 public String getPromptText() {
229 return promptText;
230 }
231
232
233
234
235
236
237 public void setPromptText(String promptText) {
238 this.promptText = promptText;
239 }
240
241
242
243
244
245
246 @BeanTagAttribute(name = "prompt", type = BeanTagAttribute.AttributeType.SINGLEBEAN)
247 public MessageField getPrompt() {
248 return prompt;
249 }
250
251
252
253
254
255
256 public void setPrompt(MessageField prompt) {
257 this.prompt = prompt;
258 }
259
260
261
262
263
264
265
266
267
268
269
270 @BeanTagAttribute(name = "explanation", type = BeanTagAttribute.AttributeType.SINGLEBEAN)
271 public InputField getExplanation() {
272 return explanation;
273 }
274
275
276
277
278
279
280 public void setExplanation(InputField explanation) {
281 this.explanation = explanation;
282 }
283
284
285
286
287
288
289
290
291
292
293 @BeanTagAttribute(name = "displayExplanation")
294 public boolean isDisplayExplanation() {
295 return displayExplanation;
296 }
297
298
299
300
301
302
303 public void setDisplayExplanation(boolean displayExplanation) {
304 this.displayExplanation = displayExplanation;
305 }
306
307
308
309
310
311
312
313
314
315
316 @BeanTagAttribute(name = "availableResponses", type = BeanTagAttribute.AttributeType.LISTBEAN)
317 public List<KeyValue> getAvailableResponses() {
318 return availableResponses;
319 }
320
321
322
323
324
325
326 public void setAvailableResponses(List<KeyValue> availableResponses) {
327 this.availableResponses = availableResponses;
328 }
329
330
331
332
333
334
335
336
337
338
339
340
341 @BeanTagAttribute(name = "responseInputField", type = BeanTagAttribute.AttributeType.SINGLEBEAN)
342 public InputField getResponseInputField() {
343 return responseInputField;
344 }
345
346
347
348
349
350
351 public void setResponseInputField(InputField responseInputField) {
352 this.responseInputField = responseInputField;
353 }
354
355
356
357
358
359
360
361
362
363
364
365
366 @BeanTagAttribute(name = "reverseButtonOrder")
367 public boolean isReverseButtonOrder() {
368 return reverseButtonOrder;
369 }
370
371
372
373
374
375
376
377
378
379
380 public void setReverseButtonOrder(boolean reverseButtonOrder) {
381 this.reverseButtonOrder = reverseButtonOrder;
382 }
383
384
385
386
387
388
389
390
391
392
393
394
395 @BeanTagAttribute(name = "onDialogResponseScript")
396 public String getOnDialogResponseScript() {
397 return onDialogResponseScript;
398 }
399
400
401
402
403
404
405 public void setOnDialogResponseScript(String onDialogResponseScript) {
406 this.onDialogResponseScript = onDialogResponseScript;
407 }
408
409
410
411
412
413
414
415
416
417
418
419
420 @BeanTagAttribute(name = "onShowDialogScript")
421 public String getOnShowDialogScript() {
422 return onShowDialogScript;
423 }
424
425
426
427
428
429
430 public void setOnShowDialogScript(String onShowDialogScript) {
431 this.onShowDialogScript = onShowDialogScript;
432 }
433 }