1 16 17 22 package org.ditchnet.jsp.taglib.tabs.handler; 23 24 import java.io.StringWriter ; 25 import java.io.IOException ; 26 import javax.servlet.http.HttpServletRequest ; 27 import javax.servlet.jsp.JspWriter ; 28 import javax.servlet.jsp.JspContext ; 29 import javax.servlet.jsp.PageContext ; 30 import javax.servlet.jsp.JspException ; 31 import javax.servlet.jsp.tagext.SimpleTagSupport ; 32 33 34 41 public final class TabLinkTag extends SimpleTagSupport { 42 43 static final String QUESTION_MARK = "?"; 44 static final String EQUALS = "="; 45 static final String AMPERSAND = "&"; 46 47 public static final String PARAM_NAME_TAB_PANE_ID 48 = "orgDitchnetTabPaneId"; 49 50 private String id,href,selectedTabPaneId; 51 52 public void setId(final String id) { 53 this.id = id; 54 } 55 56 public void setHref(final String href) { 57 this.href = href; 58 } 59 60 public void setSelectedTabPaneId(final String selectedTabPaneId) { 61 this.selectedTabPaneId = selectedTabPaneId; 62 } 63 64 private boolean hrefHasQueryString() { 65 return href.indexOf( QUESTION_MARK ) > -1; 66 } 67 68 private String getUrlParamString() { 69 String prefix; 70 if (hrefHasQueryString()) { 71 prefix = AMPERSAND; 72 } else { 73 prefix = QUESTION_MARK; 74 } 75 StringBuffer buff = new StringBuffer (); 76 buff.append(prefix).append(PARAM_NAME_TAB_PANE_ID).append(EQUALS) 77 .append(selectedTabPaneId); 78 return buff.toString(); 79 } 80 81 public void doTag() throws JspException , IOException { 82 83 StringWriter evalResult = new StringWriter (); 84 StringBuffer buff = evalResult.getBuffer(); 85 86 buff.append("\n<a "); 87 if (isHrefSameAsRequestURI()) { 88 buff.append("onclick=\"org.ditchnet.jsp.") 89 .append("TabUtils.tabLinkClicked(event,'") 90 .append(selectedTabPaneId) 91 .append("'); return false;\" HREF=\"") 92 .append(getRequest().getRequestURL()); 93 } else { 94 buff.append("href=\"").append(href).append(getUrlParamString()); 95 } 96 if (null != id && 0 != id.length()) { 97 buff.append(" id=\"").append(id).append("\""); 98 } 99 buff.append("\">"); 100 101 getJspBody().invoke(evalResult); 102 103 buff.append("</a>\n"); 104 105 getJspContext().getOut().print(buff); 106 107 } 108 109 private boolean isHrefSameAsRequestURI() { 110 return null == href; 111 } 112 113 private HttpServletRequest getRequest() { 114 PageContext pageContext = (PageContext )getJspContext(); 115 HttpServletRequest request = 116 (HttpServletRequest )pageContext.getRequest(); 117 return request; 118 } 119 120 } 121 | Popular Tags |