1   /**
2    * Copyright (c) 2000-2007 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.taglib.ui;
24  
25  import com.liferay.portal.kernel.util.ParamUtil;
26  import com.liferay.portal.kernel.util.StringPool;
27  import com.liferay.portal.kernel.util.StringUtil;
28  import com.liferay.portal.kernel.util.Validator;
29  import com.liferay.taglib.util.ParamAncestorTagImpl;
30  
31  import javax.portlet.PortletURL;
32  
33  import javax.servlet.ServletRequest;
34  import javax.servlet.jsp.JspException;
35  
36  /**
37   * <a href="TabsTag.java.html"><b><i>View Source</i></b></a>
38   *
39   * @author Brian Wing Shun Chan
40   *
41   */
42  public class TabsTag extends ParamAncestorTagImpl {
43  
44      public int doStartTag() throws JspException {
45          try {
46              ServletRequest req = getServletRequest();
47  
48              req.setAttribute("liferay-ui:tabs:names", _names);
49  
50              if ((_tabsValues == null) || (_tabsValues.length < _names.length)) {
51                  _tabsValues = _names;
52              }
53  
54              req.setAttribute("liferay-ui:tabs:values", _tabsValues);
55  
56              req.setAttribute("liferay-ui:tabs:formName", _formName);
57              req.setAttribute("liferay-ui:tabs:param", _param);
58  
59              if (_value == null) {
60                  if (_tabsValues.length > 0) {
61                      _value = ParamUtil.getString(req, _param, _tabsValues[0]);
62                  }
63              }
64  
65              if (Validator.isNull(_value)) {
66                  if (_tabsValues.length > 0) {
67                      _value = _tabsValues[0];
68                  }
69                  else {
70                      _value = StringPool.BLANK;
71                  }
72              }
73  
74              boolean match = false;
75  
76              for (int i = 0; i < _tabsValues.length; i++) {
77                  if (_value.equals(_tabsValues[i])) {
78                      match = true;
79                  }
80              }
81  
82              if (!match) {
83                  if (_tabsValues.length > 0) {
84                      _value = _tabsValues[0];
85                  }
86                  else {
87                      _value = StringPool.BLANK;
88                  }
89              }
90  
91              req.setAttribute("liferay-ui:tabs:value", _value);
92              req.setAttribute("liferay-ui:tabs:portletURL", _portletURL);
93              req.setAttribute("liferay-ui:tabs:url", _url);
94              req.setAttribute("liferay-ui:tabs:url0", _url0);
95              req.setAttribute("liferay-ui:tabs:url1", _url1);
96              req.setAttribute("liferay-ui:tabs:url2", _url2);
97              req.setAttribute("liferay-ui:tabs:url3", _url3);
98              req.setAttribute("liferay-ui:tabs:url4", _url4);
99              req.setAttribute("liferay-ui:tabs:url5", _url5);
100             req.setAttribute("liferay-ui:tabs:url6", _url6);
101             req.setAttribute("liferay-ui:tabs:url7", _url7);
102             req.setAttribute("liferay-ui:tabs:url8", _url8);
103             req.setAttribute("liferay-ui:tabs:url9", _url9);
104             req.setAttribute("liferay-ui:tabs:backURL", _backURL);
105             req.setAttribute(
106                 "liferay-ui:tabs:refresh", String.valueOf(_refresh));
107 
108             include(getStartPage());
109 
110             return EVAL_BODY_INCLUDE;
111         }
112         catch (Exception e) {
113             throw new JspException(e);
114         }
115     }
116 
117     public int doEndTag() throws JspException {
118         try {
119             include(getEndPage());
120 
121             return EVAL_PAGE;
122         }
123         catch (Exception e) {
124             throw new JspException(e);
125         }
126         finally {
127             _startPage = null;
128             _endPage = null;
129             _names = null;
130             _namesPos = 0;
131             _tabsValues = null;
132             _formName = StringPool.BLANK;
133             _param = "tabs1";
134             _value = null;
135             _portletURL = null;
136             _url = null;
137             _url0 = null;
138             _url1 = null;
139             _url2 = null;
140             _url3 = null;
141             _url4 = null;
142             _url5 = null;
143             _url6 = null;
144             _url7 = null;
145             _url8 = null;
146             _url9 = null;
147             _backURL = null;
148             _refresh = true;
149         }
150     }
151 
152     public String getStartPage() {
153         if (Validator.isNull(_startPage)) {
154             return _START_PAGE;
155         }
156         else {
157             return _startPage;
158         }
159     }
160 
161     public void setStartPage(String startPage) {
162         _startPage = startPage;
163     }
164 
165     public String getEndPage() {
166         if (Validator.isNull(_endPage)) {
167             return _END_PAGE;
168         }
169         else {
170             return _endPage;
171         }
172     }
173 
174     public void setEndPage(String endPage) {
175         _endPage = endPage;
176     }
177 
178     public void setNames(String names) {
179         _names = StringUtil.split(names);
180     }
181 
182     public void setTabsValues(String tabsValues) {
183         _tabsValues = StringUtil.split(tabsValues);
184     }
185 
186     public void setFormName(String formName) {
187         _formName = formName;
188     }
189 
190     public String getParam() {
191         return _param;
192     }
193 
194     public void setParam(String param) {
195         _param = param;
196     }
197 
198     public void setValue(String value) {
199         _value = value;
200     }
201 
202     public void setPortletURL(PortletURL portletURL) {
203         _portletURL = portletURL;
204     }
205 
206     public void setUrl(String url) {
207         _url = url;
208     }
209 
210     public void setUrl0(String url0) {
211         _url0 = url0;
212     }
213 
214     public void setUrl1(String url1) {
215         _url1 = url1;
216     }
217 
218     public void setUrl2(String url2) {
219         _url2 = url2;
220     }
221 
222     public void setUrl3(String url3) {
223         _url3 = url3;
224     }
225 
226     public void setUrl4(String url4) {
227         _url4 = url4;
228     }
229 
230     public void setUrl5(String url5) {
231         _url5 = url5;
232     }
233 
234     public void setUrl6(String url6) {
235         _url6 = url6;
236     }
237 
238     public void setUrl7(String url7) {
239         _url7 = url7;
240     }
241 
242     public void setUrl8(String url8) {
243         _url8 = url8;
244     }
245 
246     public void setUrl9(String url9) {
247         _url9 = url9;
248     }
249 
250     public void setBackURL(String backURL) {
251         _backURL = backURL;
252     }
253 
254     public boolean isRefresh() {
255         return _refresh;
256     }
257 
258     public void setRefresh(boolean refresh) {
259         _refresh = refresh;
260     }
261 
262     public String getSectionName() {
263         if (_names.length > _namesPos) {
264             return _names[_namesPos];
265         }
266         else {
267             return StringPool.BLANK;
268         }
269     }
270 
271     public boolean getSectionSelected() {
272         if ((_names.length == 0) ||
273             ((_names.length > _namesPos) &&
274                 (_names[_namesPos].equals(_value)))) {
275 
276             return true;
277         }
278         else {
279             return false;
280         }
281     }
282 
283     public void incrementSection() {
284         _namesPos++;
285     }
286 
287     private static final String _START_PAGE = "/html/taglib/ui/tabs/start.jsp";
288 
289     private static final String _END_PAGE = "/html/taglib/ui/tabs/end.jsp";
290 
291     private String _startPage;
292     private String _endPage;
293     private String[] _names;
294     private int _namesPos;
295     private String[] _tabsValues;
296     private String _formName;
297     private String _param = "tabs1";
298     private String _value;
299     private PortletURL _portletURL;
300     private String _url;
301     private String _url0;
302     private String _url1;
303     private String _url2;
304     private String _url3;
305     private String _url4;
306     private String _url5;
307     private String _url6;
308     private String _url7;
309     private String _url8;
310     private String _url9;
311     private String _backURL;
312     private boolean _refresh = true;
313 
314 }