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.servlet.PortalIncludeUtil;
18  import com.liferay.portal.kernel.util.StringPool;
19  import com.liferay.portal.kernel.util.Validator;
20  import com.liferay.util.PwdGenerator;
21  
22  import javax.servlet.http.HttpServletRequest;
23  import javax.servlet.jsp.JspException;
24  import javax.servlet.jsp.tagext.BodyContent;
25  import javax.servlet.jsp.tagext.BodyTagSupport;
26  
27  /**
28   * <a href="PanelTag.java.html"><b><i>View Source</i></b></a>
29   *
30   * @author Brian Wing Shun Chan
31   */
32  public class PanelTag extends BodyTagSupport {
33  
34      public int doStartTag() {
35          HttpServletRequest request =
36              (HttpServletRequest)pageContext.getRequest();
37  
38          if (Validator.isNull(_id)) {
39              _id = PwdGenerator.getPassword(PwdGenerator.KEY3, 4);
40          }
41  
42          request.setAttribute("liferay-ui:panel:id", _id);
43          request.setAttribute("liferay-ui:panel:title", _title);
44          request.setAttribute(
45              "liferay-ui:panel:collapsible", String.valueOf(_collapsible));
46          request.setAttribute("liferay-ui:panel:defaultState", _defaultState);
47          request.setAttribute(
48              "liferay-ui:panel:persistState", String.valueOf(_persistState));
49          request.setAttribute(
50              "liferay-ui:panel:extended", String.valueOf(_extended));
51          request.setAttribute("liferay-ui:panel:cssClass", _cssClass);
52  
53          return EVAL_BODY_BUFFERED;
54      }
55  
56      public int doAfterBody() {
57          BodyContent bodyContent = getBodyContent();
58  
59          _bodyContentString = bodyContent.getString();
60  
61          return SKIP_BODY;
62      }
63  
64      public int doEndTag() throws JspException {
65          try {
66              PortalIncludeUtil.include(pageContext, getStartPage());
67  
68              pageContext.getOut().print(_bodyContentString);
69  
70              PortalIncludeUtil.include(pageContext, getEndPage());
71  
72              return EVAL_PAGE;
73          }
74          catch (Exception e) {
75              throw new JspException(e);
76          }
77      }
78  
79      public String getStartPage() {
80          if (Validator.isNull(_startPage)) {
81              return _START_PAGE;
82          }
83          else {
84              return _startPage;
85          }
86      }
87  
88      public void setStartPage(String startPage) {
89          _startPage = startPage;
90      }
91  
92      public String getEndPage() {
93          if (Validator.isNull(_endPage)) {
94              return _END_PAGE;
95          }
96          else {
97              return _endPage;
98          }
99      }
100 
101     public void setEndPage(String endPage) {
102         _endPage = endPage;
103     }
104 
105     public void setId(String id) {
106         _id = id;
107     }
108 
109     public void setTitle(String title) {
110         _title = title;
111     }
112 
113     public void setCollapsible(boolean collapsible) {
114         _collapsible = collapsible;
115     }
116 
117     public void setDefaultState(String defaultState) {
118         _defaultState = defaultState;
119     }
120 
121     public void setPersistState(boolean persistState) {
122         _persistState = persistState;
123     }
124 
125     public void setExtended(boolean extended) {
126         _extended = extended;
127     }
128 
129     public void setCssClass(String cssClass) {
130         _cssClass = cssClass;
131     }
132 
133     private static final String _START_PAGE = "/html/taglib/ui/panel/start.jsp";
134 
135     private static final String _END_PAGE = "/html/taglib/ui/panel/end.jsp";
136 
137     private String _startPage;
138     private String _endPage;
139     private String _id;
140     private String _title;
141     private boolean _collapsible = true;
142     private String _defaultState = "open";
143     private boolean _persistState = true;
144     private boolean _extended;
145     private String _cssClass = StringPool.BLANK;
146     private String _bodyContentString = StringPool.BLANK;
147 
148 }