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