001
014
015 package com.liferay.taglib.ui;
016
017 import com.liferay.portal.kernel.servlet.PortalIncludeUtil;
018 import com.liferay.portal.kernel.servlet.taglib.BaseBodyTagSupport;
019 import com.liferay.portal.kernel.util.IntegerWrapper;
020 import com.liferay.portal.kernel.util.StringPool;
021 import com.liferay.portal.kernel.util.Validator;
022 import com.liferay.util.PwdGenerator;
023
024 import javax.servlet.http.HttpServletRequest;
025 import javax.servlet.jsp.JspException;
026 import javax.servlet.jsp.tagext.BodyTag;
027
028
031 public class PanelFloatingContainerTag
032 extends BaseBodyTagSupport implements BodyTag {
033
034 @Override
035 public int doStartTag() {
036 HttpServletRequest request =
037 (HttpServletRequest)pageContext.getRequest();
038
039 if (Validator.isNull(_id)) {
040 _id = PwdGenerator.getPassword(PwdGenerator.KEY3, 4);
041 }
042
043 request.setAttribute("liferay-ui:panel-floating-container:id", _id);
044 request.setAttribute(
045 "liferay-ui:panel-floating-container:trigger", _trigger);
046 request.setAttribute(
047 "liferay-ui:panel-floating-container:accordion",
048 String.valueOf(_accordion));
049 request.setAttribute(
050 "liferay-ui:panel-floating-container:persistState",
051 String.valueOf(_persistState));
052 request.setAttribute(
053 "liferay-ui:panel-floating-container:paging",
054 String.valueOf(_paging));
055 request.setAttribute(
056 "liferay-ui:panel-floating-container:pagingElements",
057 _pagingElements);
058 request.setAttribute(
059 "liferay-ui:panel-floating-container:resultsPerPage",
060 String.valueOf(_resultsPerPage));
061 request.setAttribute(
062 "liferay-ui:panel-floating-container:width",
063 String.valueOf(_width));
064 request.setAttribute(
065 "liferay-ui:panel-floating-container:extended", _extended);
066 request.setAttribute(
067 "liferay-ui:panel-floating-container:cssClass", _cssClass);
068 request.setAttribute(
069 "liferay-ui:panel-container:panelCount" + _id,
070 new IntegerWrapper());
071
072 return EVAL_BODY_BUFFERED;
073 }
074
075 @Override
076 public int doAfterBody() {
077 HttpServletRequest request =
078 (HttpServletRequest)pageContext.getRequest();
079
080 IntegerWrapper panelCount = (IntegerWrapper)request.getAttribute(
081 "liferay-ui:panel-container:panelCount" + _id);
082
083 if ((panelCount != null) && (panelCount.getValue() == 1)) {
084
085 bodyContent.clearBody();
086
087 return EVAL_BODY_AGAIN;
088 }
089 else {
090 return SKIP_BODY;
091 }
092 }
093
094 @Override
095 public int doEndTag() throws JspException {
096 try {
097 HttpServletRequest request =
098 (HttpServletRequest)pageContext.getRequest();
099
100 IntegerWrapper panelCount = (IntegerWrapper)request.getAttribute(
101 "liferay-ui:panel-container:panelCount" + _id);
102
103 request.removeAttribute(
104 "liferay-ui:panel-container:panelCount" + _id);
105
106 if ((panelCount != null) && (panelCount.getValue() >= 1)) {
107 PortalIncludeUtil.include(pageContext, getStartPage());
108 }
109
110 writeBodyContent(pageContext.getOut());
111
112 if ((panelCount != null) && (panelCount.getValue() >= 1)) {
113 PortalIncludeUtil.include(pageContext, getEndPage());
114 }
115
116 request.removeAttribute("liferay-ui:panel-floating-container:id");
117 request.removeAttribute(
118 "liferay-ui:panel-floating-container:trigger");
119 request.removeAttribute(
120 "liferay-ui:panel-floating-container:accordion");
121 request.removeAttribute(
122 "liferay-ui:panel-floating-container:persistState");
123 request.removeAttribute(
124 "liferay-ui:panel-floating-container:paging");
125 request.removeAttribute(
126 "liferay-ui:panel-floating-container:pagingElements");
127 request.removeAttribute(
128 "liferay-ui:panel-floating-container:resultsPerPage");
129 request.removeAttribute(
130 "liferay-ui:panel-floating-container:width");
131 request.removeAttribute(
132 "liferay-ui:panel-floating-container:extended");
133 request.removeAttribute(
134 "liferay-ui:panel-floating-container:cssClass");
135
136 return EVAL_PAGE;
137 }
138 catch (Exception e) {
139 throw new JspException(e);
140 }
141 }
142
143 public String getId() {
144 return _id;
145 }
146
147 protected String getStartPage() {
148 if (Validator.isNull(_startPage)) {
149 return _START_PAGE;
150 }
151 else {
152 return _startPage;
153 }
154 }
155
156 public void setStartPage(String startPage) {
157 _startPage = startPage;
158 }
159
160 protected String getEndPage() {
161 if (Validator.isNull(_endPage)) {
162 return _END_PAGE;
163 }
164 else {
165 return _endPage;
166 }
167 }
168
169 public void setEndPage(String endPage) {
170 _endPage = endPage;
171 }
172
173 public void setId(String id) {
174 _id = id;
175 }
176
177 public void setTrigger(String trigger) {
178 _trigger = trigger;
179 }
180
181 public void setAccordion(boolean accordion) {
182 _accordion = accordion;
183 }
184
185 public void setPersistState(boolean persistState) {
186 _persistState = persistState;
187 }
188
189 public void setPaging(boolean paging) {
190 _paging = paging;
191 }
192
193 public void setPagingElements(String pagingElements) {
194 _pagingElements = pagingElements;
195 }
196
197 public void setResultsPerPage(int resultsPerPage) {
198 _resultsPerPage = resultsPerPage;
199 }
200
201 public void setWidth(int width) {
202 _width = width;
203 }
204
205 public void setExtended(Boolean extended) {
206 _extended = extended;
207 }
208
209 public void setCssClass(String cssClass) {
210 _cssClass = cssClass;
211 }
212
213 private static final String _START_PAGE =
214 "/html/taglib/ui/panel_floating_container/start.jsp";
215
216 private static final String _END_PAGE =
217 "/html/taglib/ui/panel_floating_container/end.jsp";
218
219 private String _startPage;
220 private String _endPage;
221 private String _id;
222 private String _trigger;
223 private boolean _accordion;
224 private boolean _persistState;
225 private boolean _paging;
226 private String _pagingElements = "ul";
227 private int _resultsPerPage = 1;
228 private int _width = 300;
229 private Boolean _extended;
230 private String _cssClass = StringPool.BLANK;
231
232 }