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 org.apache.commons.collections.CollectionUtils;
19 import org.apache.commons.lang.StringUtils;
20 import org.kuali.rice.core.api.util.KeyValue;
21 import org.kuali.rice.krad.datadictionary.parse.BeanTag;
22 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
23 import org.kuali.rice.krad.datadictionary.parse.BeanTags;
24 import org.kuali.rice.krad.uif.UifConstants;
25 import org.kuali.rice.krad.uif.UifParameters;
26 import org.kuali.rice.krad.uif.UifPropertyPaths;
27 import org.kuali.rice.krad.uif.component.Component;
28 import org.kuali.rice.krad.uif.element.Action;
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.lifecycle.ViewLifecycleRestriction;
32 import org.kuali.rice.krad.uif.lifecycle.ViewLifecycleUtils;
33 import org.kuali.rice.krad.uif.util.ComponentFactory;
34 import org.kuali.rice.krad.uif.util.LifecycleElement;
35 import org.kuali.rice.krad.uif.widget.QuickFinder;
36
37 import java.util.ArrayList;
38 import java.util.List;
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 @BeanTags({@BeanTag(name = "dialog", parent = "Uif-DialogGroup"),
61 @BeanTag(name = "dialogOkCancel", parent = "Uif-DialogGroup-OkCancel"),
62 @BeanTag(name = "dialogOkCancelExpl", parent = "Uif-DialogGroup-OkCancelExpl"),
63 @BeanTag(name = "dialogYesNo", parent = "Uif-DialogGroup-YesNo"),
64 @BeanTag(name = "actionConfirmation", parent = "Uif-ActionConfirmation"),
65 @BeanTag(name = "actionConfirmationExpl", parent = "Uif-ActionConfirmationExpl")})
66 public class DialogGroup extends GroupBase {
67
68 private static final long serialVersionUID = 1L;
69
70 private MessageField prompt;
71 private InputField explanation;
72
73 private List<KeyValue> availableResponses;
74
75 private String dialogCssClass;
76
77 private String onDialogResponseScript;
78 private String onShowDialogScript;
79 private String onHideDialogScript;
80 private String onHiddenDialogScript;
81
82 private boolean destroyDialogOnHidden;
83
84
85
86
87 public DialogGroup() {
88 super();
89 }
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 setRefreshedByAction(true);
107
108 if ((explanation != null) && StringUtils.isBlank(explanation.getPropertyName()) && StringUtils.isBlank(
109 explanation.getBindingInfo().getBindingPath())) {
110 explanation.setPropertyName(UifPropertyPaths.DIALOG_EXPLANATIONS + "['" + getId() + "']");
111 explanation.getBindingInfo().setBindToForm(true);
112 }
113
114 if ((getItems() == null) || getItems().isEmpty()) {
115 List<Component> items = new ArrayList<Component>();
116
117 if (prompt != null) {
118 items.add(prompt);
119 }
120
121 if (explanation != null) {
122 items.add(explanation);
123 }
124
125 setItems(items);
126 }
127 }
128
129
130
131
132
133
134
135
136
137
138 @Override
139 public void performApplyModel(Object model, LifecycleElement parent) {
140 super.performApplyModel(model, parent);
141
142
143 if ((availableResponses != null) && !availableResponses.isEmpty()) {
144 List<Component> footerItems = new ArrayList<Component>();
145
146 for (KeyValue keyValue : availableResponses) {
147 Action responseAction = ComponentFactory.getSecondaryAction();
148
149 responseAction.setDialogDismissOption(UifConstants.DialogDismissOption.PRESUBMIT.name());
150 responseAction.setDialogResponse(keyValue.getKey());
151
152 responseAction.setActionLabel(keyValue.getValue());
153
154 footerItems.add(responseAction);
155 }
156
157 if (getFooter() == null) {
158 setFooter(ComponentFactory.getFooter());
159 }
160
161 if (getFooter().getItems() != null) {
162 footerItems.addAll(getFooter().getItems());
163 }
164
165 getFooter().setItems(footerItems);
166 }
167 }
168
169
170
171
172
173
174
175
176
177
178 @Override
179 public void performFinalize(Object model, LifecycleElement parent) {
180 super.performFinalize(model, parent);
181
182 if (StringUtils.isNotBlank(this.onDialogResponseScript)) {
183 addDataAttribute(UifConstants.DataAttributes.DIALOG_RESPONSE_HANDLER, this.onDialogResponseScript);
184 }
185
186 String script = "jQuery.unblockUI();";
187 if (StringUtils.isNotBlank(this.onShowDialogScript)) {
188 this.onShowDialogScript = script + this.onShowDialogScript;
189 } else {
190 this.onShowDialogScript = script;
191 }
192 addDataAttribute(UifConstants.DataAttributes.DIALOG_SHOW_HANDLER, this.onShowDialogScript);
193
194 if (StringUtils.isNotBlank(this.onHideDialogScript)) {
195 addDataAttribute(UifConstants.DataAttributes.DIALOG_HIDE_HANDLER, this.onHideDialogScript);
196 }
197
198 if (StringUtils.isBlank(this.onHiddenDialogScript)) {
199 this.onHiddenDialogScript = "";
200 }
201
202 if (destroyDialogOnHidden) {
203 this.onHiddenDialogScript += "destroyDialog('" + getId() + "');";
204 }
205
206 if (StringUtils.isNotBlank(this.onHiddenDialogScript)) {
207 addDataAttribute(UifConstants.DataAttributes.DIALOG_HIDDEN_HANDLER, this.onHiddenDialogScript);
208 }
209
210
211 this.getDataAttributes().remove(UifConstants.DataAttributes.PARENT);
212
213 List<QuickFinder> quickFinders = ViewLifecycleUtils.getElementsOfTypeDeep(getItems(), QuickFinder.class);
214 for (QuickFinder quickFinder : quickFinders) {
215 Action quickFinderAction = quickFinder.getQuickfinderAction();
216 quickFinderAction.addActionParameter(UifParameters.DIALOG_ID, getId());
217 }
218 }
219
220
221
222
223
224
225
226
227
228 @BeanTagAttribute
229 public String getPromptText() {
230 if (prompt != null) {
231 return prompt.getMessage().getMessageText();
232 }
233
234 return null;
235 }
236
237
238
239
240 public void setPromptText(String promptText) {
241 if (prompt == null) {
242 prompt = ComponentFactory.getMessageField();
243 }
244
245 prompt.setMessageText(promptText);
246 }
247
248
249
250
251
252
253 @ViewLifecycleRestriction
254 @BeanTagAttribute
255 public MessageField getPrompt() {
256 return prompt;
257 }
258
259
260
261
262 public void setPrompt(MessageField prompt) {
263 this.prompt = prompt;
264 }
265
266
267
268
269
270
271
272
273
274 @ViewLifecycleRestriction
275 @BeanTagAttribute
276 public InputField getExplanation() {
277 return explanation;
278 }
279
280
281
282
283 public void setExplanation(InputField explanation) {
284 this.explanation = explanation;
285 }
286
287
288
289
290
291
292
293
294
295
296
297 @BeanTagAttribute
298 public List<KeyValue> getAvailableResponses() {
299 return availableResponses;
300 }
301
302
303
304
305 public void setAvailableResponses(List<KeyValue> availableResponses) {
306 this.availableResponses = availableResponses;
307 }
308
309
310
311
312
313
314 @BeanTagAttribute
315 public String getDialogCssClass() {
316 return dialogCssClass;
317 }
318
319 public void setDialogCssClass(String dialogCssClass) {
320 this.dialogCssClass = dialogCssClass;
321 }
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336 @BeanTagAttribute
337 public String getOnDialogResponseScript() {
338 return onDialogResponseScript;
339 }
340
341
342
343
344 public void setOnDialogResponseScript(String onDialogResponseScript) {
345 this.onDialogResponseScript = onDialogResponseScript;
346 }
347
348
349
350
351
352
353
354
355
356
357 @BeanTagAttribute
358 public String getOnShowDialogScript() {
359 return onShowDialogScript;
360 }
361
362
363
364
365 public void setOnShowDialogScript(String onShowDialogScript) {
366 this.onShowDialogScript = onShowDialogScript;
367 }
368
369
370
371
372
373
374 public String getOnHideDialogScript() {
375 return onHideDialogScript;
376 }
377
378
379
380
381 public void setOnHideDialogScript(String onHideDialogScript) {
382 this.onHideDialogScript = onHideDialogScript;
383 }
384
385
386
387
388
389
390 public String getOnHiddenDialogScript() {
391 return onHiddenDialogScript;
392 }
393
394
395
396
397 public void setOnHiddenDialogScript(String onHiddenDialogScript) {
398 this.onHiddenDialogScript = onHiddenDialogScript;
399 }
400
401
402
403
404
405
406 public boolean isDestroyDialogOnHidden() {
407 return destroyDialogOnHidden;
408 }
409
410
411
412
413 public void setDestroyDialogOnHidden(boolean destroyDialogOnHidden) {
414 this.destroyDialogOnHidden = destroyDialogOnHidden;
415 }
416 }