001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.taglib.ui;
016    
017    import com.liferay.portal.kernel.util.FriendlyURLNormalizerUtil;
018    import com.liferay.portal.kernel.util.HtmlUtil;
019    import com.liferay.portal.kernel.util.JavaConstants;
020    import com.liferay.portal.kernel.util.StringPool;
021    import com.liferay.portal.kernel.util.Validator;
022    import com.liferay.portal.util.PortalUtil;
023    import com.liferay.taglib.util.IncludeTag;
024    
025    import java.util.Map;
026    
027    import javax.portlet.PortletResponse;
028    
029    import javax.servlet.http.HttpServletRequest;
030    
031    /**
032     * @author Brian Wing Shun Chan
033     */
034    public class IconTag extends IncludeTag {
035    
036            @Override
037            public int doStartTag() {
038                    return EVAL_BODY_INCLUDE;
039            }
040    
041            public void setAlt(String alt) {
042                    _alt = alt;
043            }
044    
045            public void setAriaRole(String ariaRole) {
046                    _ariaRole = ariaRole;
047            }
048    
049            public void setCssClass(String cssClass) {
050                    _cssClass = cssClass;
051            }
052    
053            public void setData(Map<String, Object> data) {
054                    _data = data;
055            }
056    
057            public void setIconCssClass(String iconCssClass) {
058                    _iconCssClass = iconCssClass;
059            }
060    
061            public void setId(String id) {
062                    _id = id;
063            }
064    
065            public void setImage(String image) {
066                    _image = image;
067            }
068    
069            public void setImageHover(String imageHover) {
070                    _imageHover = imageHover;
071            }
072    
073            public void setLabel(boolean label) {
074                    _label = label;
075            }
076    
077            public void setLang(String lang) {
078                    _lang = lang;
079            }
080    
081            public void setLinkCssClass(String linkCssClass) {
082                    _linkCssClass = linkCssClass;
083            }
084    
085            public void setLocalizeMessage(boolean localizeMessage) {
086                    _localizeMessage = localizeMessage;
087            }
088    
089            public void setMessage(String message) {
090                    _message = message;
091            }
092    
093            public void setMethod(String method) {
094                    _method = method;
095            }
096    
097            public void setOnClick(String onClick) {
098                    _onClick = onClick;
099            }
100    
101            public void setSrc(String src) {
102                    _src = src;
103            }
104    
105            public void setSrcHover(String srcHover) {
106                    _srcHover = srcHover;
107            }
108    
109            public void setTarget(String target) {
110                    _target = target;
111            }
112    
113            public void setToolTip(boolean toolTip) {
114                    _toolTip = toolTip;
115            }
116    
117            public void setUrl(String url) {
118                    _url = url;
119            }
120    
121            public void setUseDialog(boolean useDialog) {
122                    _useDialog = useDialog;
123            }
124    
125            @Override
126            protected void cleanUp() {
127                    _alt = null;
128                    _ariaRole = null;
129                    _cssClass = null;
130                    _data = null;
131                    _iconCssClass = null;
132                    _id = null;
133                    _image = null;
134                    _imageHover = null;
135                    _label = false;
136                    _lang = null;
137                    _linkCssClass = null;
138                    _localizeMessage = true;
139                    _message = null;
140                    _method = null;
141                    _onClick = null;
142                    _src = null;
143                    _srcHover = null;
144                    _target = null;
145                    _toolTip = false;
146                    _url = null;
147                    _useDialog = false;
148            }
149    
150            protected String getImage() {
151                    return _image;
152            }
153    
154            protected String getMessage() {
155                    return _message;
156            }
157    
158            @Override
159            protected String getPage() {
160                    return _PAGE;
161            }
162    
163            protected String getUrl() {
164                    return _url;
165            }
166    
167            @Override
168            protected boolean isCleanUpSetAttributes() {
169                    return _CLEAN_UP_SET_ATTRIBUTES;
170            }
171    
172            @Override
173            protected void setAttributes(HttpServletRequest request) {
174                    String id = _id;
175    
176                    if (Validator.isNull(id)) {
177                            id = (String)request.getAttribute("liferay-ui:icon-menu:id");
178    
179                            String message = _message;
180    
181                            if (Validator.isNull(message)) {
182                                    message = _image;
183                            }
184    
185                            if (Validator.isNotNull(id) && Validator.isNotNull(message)) {
186                                    id = id.concat(StringPool.UNDERLINE).concat(
187                                            FriendlyURLNormalizerUtil.normalize(message));
188    
189                                    PortletResponse portletResponse =
190                                            (PortletResponse)request.getAttribute(
191                                                    JavaConstants.JAVAX_PORTLET_RESPONSE);
192    
193                                    String namespace = StringPool.BLANK;
194    
195                                    if (portletResponse != null) {
196                                            namespace = portletResponse.getNamespace();
197                                    }
198    
199                                    id = PortalUtil.getUniqueElementId(
200                                            getOriginalServletRequest(), namespace, id);
201                            }
202                            else {
203                                    id = PortalUtil.generateRandomKey(
204                                            request, IconTag.class.getName());
205                            }
206    
207                            id = HtmlUtil.getAUICompatibleId(id);
208                    }
209    
210                    request.setAttribute("liferay-ui:icon:alt", _alt);
211                    request.setAttribute("liferay-ui:icon:ariaRole", _ariaRole);
212                    request.setAttribute("liferay-ui:icon:cssClass", _cssClass);
213                    request.setAttribute("liferay-ui:icon:data", _data);
214                    request.setAttribute("liferay-ui:icon:iconCssClass", _iconCssClass);
215                    request.setAttribute("liferay-ui:icon:id", id);
216                    request.setAttribute("liferay-ui:icon:image", _image);
217                    request.setAttribute("liferay-ui:icon:imageHover", _imageHover);
218                    request.setAttribute("liferay-ui:icon:label", String.valueOf(_label));
219                    request.setAttribute("liferay-ui:icon:lang", _lang);
220                    request.setAttribute("liferay-ui:icon:linkCssClass", _linkCssClass);
221                    request.setAttribute(
222                            "liferay-ui:icon:localizeMessage",
223                            String.valueOf(_localizeMessage));
224                    request.setAttribute("liferay-ui:icon:message", _message);
225                    request.setAttribute("liferay-ui:icon:method", _method);
226                    request.setAttribute("liferay-ui:icon:onClick", _onClick);
227                    request.setAttribute("liferay-ui:icon:src", _src);
228                    request.setAttribute("liferay-ui:icon:srcHover", _srcHover);
229                    request.setAttribute("liferay-ui:icon:target", _target);
230                    request.setAttribute(
231                            "liferay-ui:icon:toolTip", String.valueOf(_toolTip));
232                    request.setAttribute("liferay-ui:icon:url", _url);
233                    request.setAttribute(
234                            "liferay-ui:icon:useDialog", String.valueOf(_useDialog));
235            }
236    
237            private static final boolean _CLEAN_UP_SET_ATTRIBUTES = true;
238    
239            private static final String _PAGE = "/html/taglib/ui/icon/page.jsp";
240    
241            private String _alt;
242            private String _ariaRole;
243            private String _cssClass;
244            private Map<String, Object> _data;
245            private String _iconCssClass;
246            private String _id;
247            private String _image;
248            private String _imageHover;
249            private boolean _label;
250            private String _lang;
251            private String _linkCssClass;
252            private boolean _localizeMessage = true;
253            private String _message;
254            private String _method;
255            private String _onClick;
256            private String _src;
257            private String _srcHover;
258            private String _target = "_self";
259            private boolean _toolTip;
260            private String _url;
261            private boolean _useDialog = false;
262    
263    }