1 /**
2 * Copyright 2005-2016 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.rice.krad.uif.widget;
17
18 import org.kuali.rice.krad.datadictionary.parse.BeanTag;
19 import org.kuali.rice.krad.datadictionary.parse.BeanTagAttribute;
20 import org.kuali.rice.krad.datadictionary.parse.BeanTags;
21 import org.kuali.rice.krad.uif.component.Component;
22 import org.kuali.rice.krad.uif.view.View;
23
24 /**
25 * Widget that renders a Tooltip on a component
26 *
27 * <p>
28 * Tooltips can display extra information about an element. The content can be plain text or rich HTML. Tooltips
29 * can be triggered by focus or mouse hover events.
30 * </p>
31 *
32 * @author Kuali Rice Team (rice.collab@kuali.org)
33 */
34 @BeanTags(
35 {@BeanTag(name = "tooltip-bean", parent = "Uif-Tooltip"), @BeanTag(name = "tooltipHelp-bean", parent = "Uif-TooltipHelp"),
36 @BeanTag(name = "tooltipFocus-bean", parent = "Uif-TooltipFocus")})
37 public class Tooltip extends WidgetBase {
38
39 private String tooltipContent;
40
41 private boolean onFocus;
42 private boolean onMouseHover;
43
44 public Tooltip() {
45 super();
46 }
47
48 /**
49 * @see org.kuali.rice.krad.uif.component.ComponentBase#performFinalize(org.kuali.rice.krad.uif.view.View,
50 * Object, org.kuali.rice.krad.uif.component.Component)
51 */
52 @Override
53 public void performFinalize(View view, Object model, Component parent) {
54 super.performFinalize(view, model, parent);
55 }
56
57 /**
58 * Plain text or HTML string that will be used to render the tooltip div
59 *
60 * @return String
61 */
62 @BeanTagAttribute(name = "tooltipContent")
63 public String getTooltipContent() {
64 return tooltipContent;
65 }
66
67 /**
68 * Setter for the tooltip content text
69 *
70 * @param tooltipContent
71 */
72 public void setTooltipContent(String tooltipContent) {
73 if (tooltipContent != null) {
74 this.tooltipContent = tooltipContent.replace("\"", """).replace("'", "'");
75 } else {
76 this.tooltipContent = null;
77 }
78 }
79
80 /**
81 * Indicates the tooltip should be triggered by focus/blur
82 *
83 * @return boolean
84 */
85 @BeanTagAttribute(name = "onFocus")
86 public boolean isOnFocus() {
87 return onFocus;
88 }
89
90 /**
91 * Setter for the onFocus
92 *
93 * @param onFocus
94 */
95 public void setOnFocus(boolean onFocus) {
96 this.onFocus = onFocus;
97 }
98
99 /**
100 * Indicates the tooltip should be triggered by mouse hover
101 *
102 * @return boolean
103 */
104 @BeanTagAttribute(name = "onMouseHover")
105 public boolean isOnMouseHover() {
106 return onMouseHover;
107 }
108
109 /**
110 * Setter for onMouseHover
111 *
112 * @param onMouseHover
113 */
114 public void setOnMouseHover(boolean onMouseHover) {
115 this.onMouseHover = onMouseHover;
116 }
117
118 /**
119 * @see org.kuali.rice.krad.uif.component.ComponentBase#copy()
120 */
121 @Override
122 protected <T> void copyProperties(T component) {
123 super.copyProperties(component);
124 Tooltip tooltipCopy = (Tooltip) component;
125 tooltipCopy.setTooltipContent(this.getTooltipContent());
126 tooltipCopy.setOnFocus(this.isOnFocus());
127 tooltipCopy.setOnMouseHover(this.isOnMouseHover());
128 }
129 }