1
14
15 package com.liferay.taglib.ui;
16
17 import com.liferay.portal.kernel.servlet.StringServletResponse;
18 import com.liferay.portal.kernel.util.DeterminateKeyGenerator;
19 import com.liferay.portal.kernel.util.StringPool;
20 import com.liferay.portal.kernel.util.Validator;
21 import com.liferay.portal.kernel.util.WebKeys;
22 import com.liferay.portal.theme.ThemeDisplay;
23 import com.liferay.portal.util.SessionClicks;
24 import com.liferay.taglib.util.IncludeTag;
25
26 import javax.servlet.RequestDispatcher;
27 import javax.servlet.ServletContext;
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30 import javax.servlet.jsp.JspException;
31
32
37 public class ToggleTag extends IncludeTag {
38
39 public static void doTag(
40 String id, String showImage, String hideImage, String showMessage,
41 String hideMessage, boolean defaultShowContent, String stateVar,
42 ServletContext servletContext, HttpServletRequest request,
43 HttpServletResponse response)
44 throws Exception {
45
46 doTag(
47 _PAGE, id, showImage, hideImage, showMessage, hideMessage,
48 defaultShowContent, stateVar, servletContext, request, response);
49 }
50
51 public static void doTag(
52 String page, String id, String showImage, String hideImage,
53 String showMessage, String hideMessage, boolean defaultShowContent,
54 String stateVar, ServletContext servletContext,
55 HttpServletRequest request, HttpServletResponse response)
56 throws Exception {
57
58 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
59 WebKeys.THEME_DISPLAY);
60
61 if (Validator.isNull(showImage) && Validator.isNull(showMessage)) {
62 showImage =
63 themeDisplay.getPathThemeImages() + "/arrows/01_down.png";
64 }
65
66 if (Validator.isNull(hideImage) && Validator.isNull(hideImage)) {
67 hideImage =
68 themeDisplay.getPathThemeImages() + "/arrows/01_right.png";
69 }
70
71 String defaultStateValue =
72 defaultShowContent ? StringPool.BLANK : "none";
73 String defaultImage = defaultShowContent ? hideImage : showImage;
74 String defaultMessage = defaultShowContent ? hideMessage : showMessage;
75
76 String clickValue = SessionClicks.get(request, id, null);
77
78 if (defaultShowContent) {
79 if ((clickValue != null) && (clickValue.equals("none"))) {
80 defaultStateValue = "none";
81 defaultImage = showImage;
82 defaultMessage = showMessage;
83 }
84 else {
85 defaultStateValue = "";
86 defaultImage = hideImage;
87 defaultMessage = hideMessage;
88 }
89 }
90 else {
91 if ((clickValue == null) || (clickValue.equals("none"))) {
92 defaultStateValue = "none";
93 defaultImage = showImage;
94 defaultMessage = showMessage;
95 }
96 else {
97 defaultStateValue = "";
98 defaultImage = hideImage;
99 defaultMessage = hideMessage;
100 }
101 }
102
103 if (stateVar == null) {
104 stateVar = DeterminateKeyGenerator.generate(
105 ToggleTag.class.getName());
106 }
107
108 request.setAttribute("liferay-ui:toggle:id", id);
109 request.setAttribute("liferay-ui:toggle:showImage", showImage);
110 request.setAttribute("liferay-ui:toggle:hideImage", hideImage);
111 request.setAttribute("liferay-ui:toggle:showMessage", showMessage);
112 request.setAttribute("liferay-ui:toggle:hideMessage", hideMessage);
113 request.setAttribute("liferay-ui:toggle:stateVar", stateVar);
114 request.setAttribute(
115 "liferay-ui:toggle:defaultStateValue", defaultStateValue);
116 request.setAttribute("liferay-ui:toggle:defaultImage", defaultImage);
117 request.setAttribute(
118 "liferay-ui:toggle:defaultMessage", defaultMessage);
119
120 RequestDispatcher requestDispatcher =
121 servletContext.getRequestDispatcher(page);
122
123 requestDispatcher.include(request, response);
124 }
125
126 public int doEndTag() throws JspException {
127 try {
128 ServletContext servletContext = getServletContext();
129 HttpServletRequest request = getServletRequest();
130 StringServletResponse response = getServletResponse();
131
132 doTag(
133 getPage(), _id, _showImage, _hideImage, _showMessage,
134 _hideMessage, _defaultShowContent, _stateVar, servletContext,
135 request, response);
136
137 pageContext.getOut().print(response.getString());
138
139 return EVAL_PAGE;
140 }
141 catch (Exception e) {
142 throw new JspException(e);
143 }
144 }
145
146 public void setId(String id) {
147 _id = id;
148 }
149
150 public void setShowImage(String showImage) {
151 _showImage = showImage;
152 }
153
154 public void setHideImage(String hideImage) {
155 _hideImage = hideImage;
156 }
157
158 public void setShowMessage(String showMessage) {
159 _showMessage = showMessage;
160 }
161
162 public void setHideMessage(String hideMessage) {
163 _hideMessage = hideMessage;
164 }
165
166 public void setDefaultShowContent(boolean defaultShowContent) {
167 _defaultShowContent = defaultShowContent;
168 }
169
170 public void setStateVar(String stateVar) {
171 _stateVar = stateVar;
172 }
173
174 protected String getDefaultPage() {
175 return _PAGE;
176 }
177
178 private static final String _PAGE = "/html/taglib/ui/toggle/page.jsp";
179
180 private String _id;
181 private String _showImage;
182 private String _hideImage;
183 private String _showMessage;
184 private String _hideMessage;
185 private boolean _defaultShowContent = true;
186 private String _stateVar;
187
188 }