001
014
015 package com.liferay.taglib.ui;
016
017 import com.liferay.portal.kernel.servlet.PipingServletResponse;
018 import com.liferay.portal.kernel.util.DeterminateKeyGenerator;
019 import com.liferay.portal.kernel.util.StringPool;
020 import com.liferay.portal.kernel.util.Validator;
021 import com.liferay.portal.kernel.util.WebKeys;
022 import com.liferay.portal.theme.ThemeDisplay;
023 import com.liferay.portal.util.SessionClicks;
024 import com.liferay.taglib.util.IncludeTag;
025
026 import javax.servlet.RequestDispatcher;
027 import javax.servlet.ServletContext;
028 import javax.servlet.http.HttpServletRequest;
029 import javax.servlet.http.HttpServletResponse;
030 import javax.servlet.jsp.JspException;
031
032
035 public class ToggleTag extends IncludeTag {
036
037 public static void doTag(
038 String id, String showImage, String hideImage, String showMessage,
039 String hideMessage, boolean defaultShowContent, String stateVar,
040 ServletContext servletContext, HttpServletRequest request,
041 HttpServletResponse response)
042 throws Exception {
043
044 doTag(
045 _PAGE, id, showImage, hideImage, showMessage, hideMessage,
046 defaultShowContent, stateVar, servletContext, request, response);
047 }
048
049 public static void doTag(
050 String page, String id, String showImage, String hideImage,
051 String showMessage, String hideMessage, boolean defaultShowContent,
052 String stateVar, ServletContext servletContext,
053 HttpServletRequest request, HttpServletResponse response)
054 throws Exception {
055
056 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
057 WebKeys.THEME_DISPLAY);
058
059 if (Validator.isNull(showImage) && Validator.isNull(showMessage)) {
060 showImage =
061 themeDisplay.getPathThemeImages() + "/arrows/01_down.png";
062 }
063
064 if (Validator.isNull(hideImage) && Validator.isNull(hideImage)) {
065 hideImage =
066 themeDisplay.getPathThemeImages() + "/arrows/01_right.png";
067 }
068
069 String defaultStateValue =
070 defaultShowContent ? StringPool.BLANK : "none";
071 String defaultImage = defaultShowContent ? hideImage : showImage;
072 String defaultMessage = defaultShowContent ? hideMessage : showMessage;
073
074 String clickValue = SessionClicks.get(request, id, null);
075
076 if (defaultShowContent) {
077 if ((clickValue != null) && clickValue.equals("none")) {
078 defaultStateValue = "none";
079 defaultImage = showImage;
080 defaultMessage = showMessage;
081 }
082 else {
083 defaultStateValue = "";
084 defaultImage = hideImage;
085 defaultMessage = hideMessage;
086 }
087 }
088 else {
089 if ((clickValue == null) || clickValue.equals("none")) {
090 defaultStateValue = "none";
091 defaultImage = showImage;
092 defaultMessage = showMessage;
093 }
094 else {
095 defaultStateValue = "";
096 defaultImage = hideImage;
097 defaultMessage = hideMessage;
098 }
099 }
100
101 if (stateVar == null) {
102 stateVar = DeterminateKeyGenerator.generate(
103 ToggleTag.class.getName());
104 }
105
106 request.setAttribute("liferay-ui:toggle:id", id);
107 request.setAttribute("liferay-ui:toggle:showImage", showImage);
108 request.setAttribute("liferay-ui:toggle:hideImage", hideImage);
109 request.setAttribute("liferay-ui:toggle:showMessage", showMessage);
110 request.setAttribute("liferay-ui:toggle:hideMessage", hideMessage);
111 request.setAttribute("liferay-ui:toggle:stateVar", stateVar);
112 request.setAttribute(
113 "liferay-ui:toggle:defaultStateValue", defaultStateValue);
114 request.setAttribute("liferay-ui:toggle:defaultImage", defaultImage);
115 request.setAttribute(
116 "liferay-ui:toggle:defaultMessage", defaultMessage);
117
118 RequestDispatcher requestDispatcher =
119 servletContext.getRequestDispatcher(page);
120
121 requestDispatcher.include(request, response);
122 }
123
124 @Override
125 public int doEndTag() throws JspException {
126 try {
127 doTag(
128 getPage(), _id, _showImage, _hideImage, _showMessage,
129 _hideMessage, _defaultShowContent, _stateVar, servletContext,
130 request, new PipingServletResponse(pageContext));
131
132 return EVAL_PAGE;
133 }
134 catch (Exception e) {
135 throw new JspException(e);
136 }
137 }
138
139 public void setDefaultShowContent(boolean defaultShowContent) {
140 _defaultShowContent = defaultShowContent;
141 }
142
143 public void setHideImage(String hideImage) {
144 _hideImage = hideImage;
145 }
146
147 public void setHideMessage(String hideMessage) {
148 _hideMessage = hideMessage;
149 }
150
151 public void setId(String id) {
152 _id = id;
153 }
154
155 public void setShowImage(String showImage) {
156 _showImage = showImage;
157 }
158
159 public void setShowMessage(String showMessage) {
160 _showMessage = showMessage;
161 }
162
163 public void setStateVar(String stateVar) {
164 _stateVar = stateVar;
165 }
166
167 @Override
168 protected String getPage() {
169 return _PAGE;
170 }
171
172 private static final String _PAGE = "/html/taglib/ui/toggle/page.jsp";
173
174 private boolean _defaultShowContent = true;
175 private String _hideImage;
176 private String _hideMessage;
177 private String _id;
178 private String _showImage;
179 private String _showMessage;
180 private String _stateVar;
181
182 }