1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.taglib.ui;
16  
17  import com.liferay.portal.kernel.dao.search.SearchContainer;
18  import com.liferay.portal.kernel.servlet.PortalIncludeUtil;
19  import com.liferay.portal.kernel.util.StringPool;
20  import com.liferay.portal.kernel.util.Validator;
21  
22  import javax.servlet.http.HttpServletRequest;
23  import javax.servlet.jsp.JspException;
24  import javax.servlet.jsp.tagext.TagSupport;
25  
26  /**
27   * <a href="PageIteratorTag.java.html"><b><i>View Source</i></b></a>
28   *
29   * @author Brian Wing Shun Chan
30   */
31  public class PageIteratorTag extends TagSupport {
32  
33      public int doStartTag() throws JspException {
34          try {
35              _pages = (int)Math.ceil((double)_total / _delta);
36  
37              HttpServletRequest request =
38                  (HttpServletRequest)pageContext.getRequest();
39  
40              request.setAttribute(
41                  "liferay-ui:page-iterator:formName", _formName);
42              request.setAttribute(
43                  "liferay-ui:page-iterator:cur", String.valueOf(_cur));
44              request.setAttribute(
45                  "liferay-ui:page-iterator:curParam", _curParam);
46              request.setAttribute(
47                  "liferay-ui:page-iterator:delta", String.valueOf(_delta));
48              request.setAttribute(
49                  "liferay-ui:page-iterator:deltaConfigurable",
50                  String.valueOf(_deltaConfigurable));
51              request.setAttribute(
52                  "liferay-ui:page-iterator:deltaParam", _deltaParam);
53              request.setAttribute("liferay-ui:page-iterator:jsCall", _jsCall);
54              request.setAttribute(
55                  "liferay-ui:page-iterator:maxPages", String.valueOf(_maxPages));
56              request.setAttribute("liferay-ui:page-iterator:target", _target);
57              request.setAttribute(
58                  "liferay-ui:page-iterator:total", String.valueOf(_total));
59              request.setAttribute("liferay-ui:page-iterator:url", _url);
60              request.setAttribute(
61                  "liferay-ui:page-iterator:urlAnchor", _urlAnchor);
62              request.setAttribute(
63                  "liferay-ui:page-iterator:pages", String.valueOf(_pages));
64              request.setAttribute("liferay-ui:page-iterator:type", _type);
65  
66              PortalIncludeUtil.include(pageContext, getStartPage());
67  
68              return EVAL_BODY_INCLUDE;
69          }
70          catch (Exception e) {
71              throw new JspException(e);
72          }
73      }
74  
75      public int doEndTag() throws JspException {
76          try {
77              if (_pages > 1) {
78                  PortalIncludeUtil.include(pageContext, getEndPage());
79              }
80  
81              return EVAL_PAGE;
82          }
83          catch (Exception e) {
84              throw new JspException(e);
85          }
86      }
87  
88      public String getStartPage() {
89          if (Validator.isNull(_startPage)) {
90              return _START_PAGE;
91          }
92          else {
93              return _startPage;
94          }
95      }
96  
97      public void setStartPage(String startPage) {
98          _startPage = startPage;
99      }
100 
101     public String getEndPage() {
102         if (Validator.isNull(_endPage)) {
103             return _END_PAGE;
104         }
105         else {
106             return _endPage;
107         }
108     }
109 
110     public void setEndPage(String endPage) {
111         _endPage = endPage;
112     }
113 
114     public void setFormName(String formName) {
115         _formName = formName;
116     }
117 
118     public void setCur(int cur) {
119         _cur = cur;
120     }
121 
122     public void setCurParam(String curParam) {
123         _curParam = curParam;
124     }
125 
126     public void setDelta(int delta) {
127         _delta = delta;
128     }
129 
130     public void setDeltaConfigurable(boolean deltaConfigurable) {
131         _deltaConfigurable = deltaConfigurable;
132     }
133 
134     public void setDeltaParam(String deltaParam) {
135         _deltaParam = deltaParam;
136     }
137 
138     public void setJsCall(String jsCall) {
139         _jsCall = jsCall;
140     }
141 
142     public void setMaxPages(int maxPages) {
143         _maxPages = maxPages;
144     }
145 
146     public void setTarget(String target) {
147         _target = target;
148     }
149 
150     public void setTotal(int total) {
151         _total = total;
152     }
153 
154     public void setType(String type) {
155         _type = type;
156     }
157 
158     public void setUrl(String url) {
159         _url = url;
160         _urlAnchor = StringPool.BLANK;
161 
162         int pos = _url.indexOf("#");
163 
164         if (pos != -1) {
165             _url = url.substring(0, pos);
166             _urlAnchor = url.substring(pos, url.length());
167         }
168 
169         if (_url.indexOf("?") == -1) {
170             _url += "?";
171         }
172         else if (!_url.endsWith("&")) {
173             _url += "&";
174         }
175     }
176 
177     private static final String _START_PAGE =
178         "/html/taglib/ui/page_iterator/start.jsp";
179 
180     private static final String _END_PAGE =
181         "/html/taglib/ui/page_iterator/end.jsp";
182 
183     private String _startPage;
184     private String _endPage;
185     private String _formName = "fm";
186     private int _cur;
187     private String _curParam;
188     private int _delta = SearchContainer.DEFAULT_DELTA;
189     private boolean _deltaConfigurable =
190         SearchContainer.DEFAULT_DELTA_CONFIGURABLE;
191     private String _deltaParam = SearchContainer.DEFAULT_DELTA_PARAM;
192     private String _jsCall;
193     private int _maxPages = 10;
194     private String _target = "_self";
195     private int _total;
196     private String _type = "regular";
197     private String _url;
198     private String _urlAnchor;
199     private int _pages;
200 
201 }