1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.uif.widget;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.core.api.CoreApiServiceLocator;
20 import org.kuali.rice.coreservice.framework.CoreFrameworkServiceLocator;
21 import org.kuali.rice.coreservice.framework.parameter.ParameterService;
22 import org.kuali.rice.krad.datadictionary.HelpDefinition;
23 import org.kuali.rice.krad.datadictionary.parse.BeanTag;
24 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
25 import org.kuali.rice.krad.uif.UifConstants;
26 import org.kuali.rice.krad.uif.component.Component;
27 import org.kuali.rice.krad.uif.element.Action;
28 import org.kuali.rice.krad.uif.view.View;
29 import org.kuali.rice.krad.uif.util.ComponentFactory;
30
31 import java.text.MessageFormat;
32 import java.util.List;
33
34
35
36
37
38
39
40
41
42
43 @BeanTag(name = "help-bean", parent = "Uif-Help")
44 public class Help extends WidgetBase {
45 private static final long serialVersionUID = -1514436681476297241L;
46
47 private Action helpAction;
48 private HelpDefinition helpDefinition;
49 private String externalHelpUrl;
50
51 private String tooltipHelpContent;
52
53
54
55
56
57
58
59
60
61
62
63
64 @Override
65 public void performInitialization(View view, Object model) {
66 super.performInitialization(view, model);
67
68 if (helpAction == null) {
69
70 if ((StringUtils.isNotBlank(externalHelpUrl) || (getPropertyExpression("externalHelpUrl") != null))
71 || ((helpDefinition != null) && StringUtils.isNotBlank(helpDefinition.getParameterName()))
72 && StringUtils.isNotBlank(helpDefinition.getParameterDetailType())) {
73 helpAction = ComponentFactory.getHelpAction();
74
75 view.assignComponentIds(helpAction);
76 helpAction.addDataAttribute(UifConstants.DataAttributes.ROLE, "help");
77 }
78 }
79 else{
80 helpAction.addDataAttribute(UifConstants.DataAttributes.ROLE, "help");
81 }
82 }
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 @Override
98 public void performFinalize(View view, Object model, Component parent) {
99 super.performFinalize(view, model, parent);
100
101 buildExternalHelp(view, parent);
102 buildTooltipHelp(parent);
103
104
105 if (StringUtils.isBlank(this.externalHelpUrl) && StringUtils.isBlank(this.tooltipHelpContent)) {
106 setRender(false);
107 }
108 }
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 protected void buildExternalHelp(View view, Component parent) {
131 if (StringUtils.isBlank(externalHelpUrl) && (helpDefinition != null)) {
132 if (StringUtils.isBlank(helpDefinition.getParameterNamespace())) {
133 helpDefinition.setParameterNamespace(view.getNamespaceCode());
134 }
135
136 if (StringUtils.isNotBlank(helpDefinition.getParameterNamespace())
137 && StringUtils.isNotBlank(helpDefinition.getParameterDetailType())
138 && StringUtils.isNotBlank(helpDefinition.getParameterName())) {
139 externalHelpUrl = getParameterService().getParameterValueAsString(helpDefinition.getParameterNamespace(),
140 helpDefinition.getParameterDetailType(), helpDefinition.getParameterName());
141 }
142 }
143
144 if (StringUtils.isNotBlank(externalHelpUrl)) {
145
146 getHelpAction().setActionScript("openHelpWindow('" + externalHelpUrl + "')");
147
148
149 String helpTitle;
150
151
152 if ((parent instanceof Helpable) && (((Helpable) parent).getHelp() == this)) {
153 helpTitle = MessageFormat.format(
154 CoreApiServiceLocator.getKualiConfigurationService().getPropertyValueAsString(
155 "help.icon.title.tag.with.field.label"), ((Helpable) parent).getHelpTitle());
156 } else {
157 helpTitle = CoreApiServiceLocator.getKualiConfigurationService().getPropertyValueAsString(
158 "help.icon.title.tag");
159 }
160
161 getHelpAction().getActionImage().setAltText(helpTitle);
162 getHelpAction().getActionImage().setTitle(helpTitle);
163 }
164 }
165
166
167
168
169
170
171
172
173
174
175
176 protected void buildTooltipHelp(Component parent) {
177 if (StringUtils.isNotBlank(tooltipHelpContent) && this.isRender()) {
178
179 if ((parent instanceof Helpable) && (((Helpable) parent).getHelp() == this)) {
180 this.getToolTip().setTooltipContent(tooltipHelpContent);
181 ((Helpable) parent).setTooltipOfComponent(this.getToolTip());
182 }
183 }
184 }
185
186
187
188
189 @Override
190 public List<Component> getComponentsForLifecycle() {
191 List<Component> components = super.getComponentsForLifecycle();
192
193 components.add(helpAction);
194
195 return components;
196 }
197
198
199
200
201
202
203 @BeanTagAttribute(name="helpAction",type= BeanTagAttribute.AttributeType.SINGLEBEAN)
204 public Action getHelpAction() {
205 return helpAction;
206 }
207
208
209
210
211
212
213 public void setHelpAction(Action helpAction) {
214 this.helpAction = helpAction;
215 }
216
217
218
219
220
221
222
223 @BeanTagAttribute(name="helpDefinition",type= BeanTagAttribute.AttributeType.SINGLEBEAN)
224 public HelpDefinition getHelpDefinition() {
225 return helpDefinition;
226 }
227
228
229
230
231
232
233 public void setHelpDefinition(HelpDefinition helpDefinition) {
234 this.helpDefinition = helpDefinition;
235 }
236
237
238
239
240
241
242
243
244
245
246
247 @BeanTagAttribute(name="externalHelpUrl")
248 public String getExternalHelpUrl() {
249 return this.externalHelpUrl;
250 }
251
252
253
254
255
256
257 public void setExternalHelpUrl(String externalHelpUrl) {
258 this.externalHelpUrl = externalHelpUrl;
259 }
260
261
262
263
264
265
266 @BeanTagAttribute(name="tooltipHelpContent")
267 public String getTooltipHelpContent() {
268 return this.tooltipHelpContent;
269 }
270
271
272
273
274
275
276 public void setTooltipHelpContent(String tooltipHelpContent) {
277 this.tooltipHelpContent = tooltipHelpContent;
278 }
279
280
281
282
283
284
285 protected ParameterService getParameterService() {
286 return CoreFrameworkServiceLocator.getParameterService();
287 }
288
289
290
291
292 @Override
293 protected <T> void copyProperties(T component) {
294 super.copyProperties(component);
295 Help helpCopy = (Help) component;
296 helpCopy.setExternalHelpUrl(this.getExternalHelpUrl());
297
298 if (this.helpAction != null) {
299 helpCopy.setHelpAction((Action)this.helpAction.copy());
300 }
301
302 helpCopy.setHelpDefinition(this.getHelpDefinition());
303 helpCopy.setTooltipHelpContent(this.tooltipHelpContent);
304 }
305
306 }