1
22
23 package com.liferay.taglib.ui;
24
25 import com.liferay.portal.kernel.util.IntegerWrapper;
26 import com.liferay.portal.kernel.util.StringPool;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.servlet.PortalIncludeUtil;
29
30 import javax.servlet.ServletRequest;
31 import javax.servlet.jsp.JspException;
32 import javax.servlet.jsp.tagext.BodyContent;
33 import javax.servlet.jsp.tagext.BodyTagSupport;
34
35
41 public class IconMenuTag extends BodyTagSupport {
42
43 public int doStartTag() throws JspException {
44 ServletRequest req = pageContext.getRequest();
45
46 req.setAttribute("liferay-ui:icon-menu:align", _align);
47 req.setAttribute(
48 "liferay-ui:icon-menu:icon-count", new IntegerWrapper());
49
50 return EVAL_BODY_BUFFERED;
51 }
52
53 public int doAfterBody() {
54 BodyContent bodyContent = getBodyContent();
55
56 _bodyContentString = bodyContent.getString();
57
58 ServletRequest req = pageContext.getRequest();
59
60 IntegerWrapper iconCount = (IntegerWrapper)req.getAttribute(
61 "liferay-ui:icon-menu:icon-count");
62
63 Boolean singleIcon = (Boolean)req.getAttribute(
64 "liferay-ui:icon-menu:single-icon");
65
66 if ((iconCount != null) && (iconCount.getValue() == 1) &&
67 (singleIcon == null)) {
68
69 bodyContent.clearBody();
70
71 req.setAttribute("liferay-ui:icon-menu:single-icon", Boolean.TRUE);
72
73 return EVAL_BODY_AGAIN;
74 }
75 else {
76 return SKIP_BODY;
77 }
78 }
79
80 public int doEndTag() throws JspException {
81 try {
82 ServletRequest req = pageContext.getRequest();
83
84 IntegerWrapper iconCount = (IntegerWrapper)req.getAttribute(
85 "liferay-ui:icon-menu:icon-count");
86
87 req.removeAttribute("liferay-ui:icon-menu:icon-count");
88
89 Boolean singleIcon = (Boolean)req.getAttribute(
90 "liferay-ui:icon-menu:single-icon");
91
92 req.removeAttribute("liferay-ui:icon-menu:single-icon");
93
94 if ((iconCount != null) && (iconCount.getValue() > 1) &&
95 (singleIcon == null)) {
96
97 PortalIncludeUtil.include(pageContext, getStartPage());
98 }
99
100 pageContext.getOut().print(_bodyContentString);
101
102 if ((iconCount != null) && (iconCount.getValue() > 1) &&
103 (singleIcon == null)) {
104
105 PortalIncludeUtil.include(pageContext, getEndPage());
106 }
107
108 return EVAL_PAGE;
109 }
110 catch (Exception e) {
111 throw new JspException(e);
112 }
113 }
114
115 public String getStartPage() {
116 if (Validator.isNull(_startPage)) {
117 return _START_PAGE;
118 }
119 else {
120 return _startPage;
121 }
122 }
123
124 public void setStartPage(String startPage) {
125 _startPage = startPage;
126 }
127
128 public String getEndPage() {
129 if (Validator.isNull(_endPage)) {
130 return _END_PAGE;
131 }
132 else {
133 return _endPage;
134 }
135 }
136
137 public void setEndPage(String endPage) {
138 _endPage = endPage;
139 }
140
141 public void setAlign(String align) {
142 _align = align;
143 }
144
145 private static final String _START_PAGE =
146 "/html/taglib/ui/icon_menu/start.jsp";
147
148 private static final String _END_PAGE = "/html/taglib/ui/icon_menu/end.jsp";
149
150 private String _startPage;
151 private String _endPage;
152 private String _align = "right";
153 private String _bodyContentString = StringPool.BLANK;
154
155 }