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 public int doEndTag() throws JspException {
125 try {
126 ServletContext servletContext = getServletContext();
127 HttpServletRequest request = getServletRequest();
128
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 setId(String id) {
142 _id = id;
143 }
144
145 public void setShowImage(String showImage) {
146 _showImage = showImage;
147 }
148
149 public void setHideImage(String hideImage) {
150 _hideImage = hideImage;
151 }
152
153 public void setShowMessage(String showMessage) {
154 _showMessage = showMessage;
155 }
156
157 public void setHideMessage(String hideMessage) {
158 _hideMessage = hideMessage;
159 }
160
161 public void setDefaultShowContent(boolean defaultShowContent) {
162 _defaultShowContent = defaultShowContent;
163 }
164
165 public void setStateVar(String stateVar) {
166 _stateVar = stateVar;
167 }
168
169 protected String getPage() {
170 return _PAGE;
171 }
172
173 private static final String _PAGE = "/html/taglib/ui/toggle/page.jsp";
174
175 private String _id;
176 private String _showImage;
177 private String _hideImage;
178 private String _showMessage;
179 private String _hideMessage;
180 private boolean _defaultShowContent = true;
181 private String _stateVar;
182
183 }