/* * The contents of this file are subject to the GNU Lesser General Public * License Version 2.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.gnu.org/copyleft/lesser.html * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * Developer: * Todd Ditchendorf, todd@ditchnet.org * */ /** * @author Todd Ditchendorf * @version 0.8 * @since 0.8 */ package org.ditchnet.jsp.taglib.tabs.handler; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.jsp.JspException; import org.ditchnet.jsp.taglib.tabs.listener.TabServletContextListener; import com.frameworkset.common.tag.BaseTag; /** * @author Todd Ditchendorf * @since 0.8 * * JSP Tag that renders XHTML </code>script</code> and </code>style</code> elements * that link to the CSS and JavaScript resources necessary to render the * tab components on the current page. The resources that are linked to are * the resources placed in a directory named </code>/org.ditchnet.taglib/</code> * in the web app's root directory. These resources were placed there by * the {@link org.ditchnet.jsp.taglib.tabs.listener.TabServletContextListener}. */ public final class TabConfigTag extends BaseTag { private String contextPath; public int doEndTag() throws JspException{ StringBuffer buff = new StringBuffer(); findContextPath(); renderScriptTag(buff); renderStyleTag(buff); // getJspContext().getOut().print(buff); try { // getPreviousOut().print(buff.toString()); this.getJspWriter().print(buff.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return this.EVAL_PAGE; } @Override public void doFinally() { contextPath = null; super.doFinally(); } private void findContextPath() { HttpServletRequest request = this.getHttpServletRequest(); // HttpSession session = request.getSession(false); contextPath = request.getContextPath(); } private void renderScriptTag(final StringBuffer buff) { String uri = getEncodedContextRelativePath(TabServletContextListener.SCRIPT_URI); buff.append("\n\n\t<script type=\"text/javascript\" ") .append("src=\"").append(uri).append("\">") .append("</script>\n"); } private void renderStyleTag(final StringBuffer buff) { String uri = getEncodedContextRelativePath(TabServletContextListener.STYLE_URI); buff.append("\t<link type=\"text/css\" rel=\"stylesheet\" ") .append("href=\"").append(uri).append("\" />\n\n"); } private String getEncodedContextRelativePath(final String uri) { return contextPath + uri; } }