1 21 22 package org.opensubsystems.patterns.tabbeddialog.www; 23 24 import java.util.Enumeration ; 25 26 import javax.servlet.jsp.JspException ; 27 import javax.servlet.jsp.tagext.BodyContent ; 28 29 import org.opensubsystems.core.www.BlockElementTag; 30 import org.opensubsystems.core.www.TagUtils; 31 32 42 public class TabbedDialogTag extends BlockElementTag 43 { 44 46 50 public static final String ACTIVE_TABBED_DIALOG_ID = "activetabdialogid"; 51 52 57 public static final String FOCUSED_CONTROL_ID = "focusedcontrolid"; 58 59 63 public static final String TABBED_DIALOG_ONSWITCH_JSFUNCTION = "tabdialogonswitchjsfunc"; 64 65 68 public static final String TABBED_DIALOG_PREFIX = "unknowntabbeddialogid"; 69 70 72 75 private static final long serialVersionUID = -9155268056625844216L; 76 77 80 protected String m_strFillercssclass; 81 82 86 protected String m_strOnswitch; 87 88 90 93 public TabbedDialogTag() 94 { 95 super("clsTabbedDialog", BlockElementTag.DIV_BLOCK_ELEMENT); 96 97 m_strFillercssclass = "clsTabHeaderFiller"; 98 m_strOnswitch = null; 99 } 100 101 103 106 public int doStartTag( 107 ) throws JspException 108 { 109 StringBuffer sbHtml = null; 110 StringBuffer sbOnSwitchJSFunction = new StringBuffer (); 111 112 sbHtml = new StringBuffer (); 113 114 123 124 sbHtml.append("<input type=\"hidden\" id=\"activetab\" name=\"activetab\">"); 126 127 sbHtml.append("<div id=\""); 129 sbHtml.append(m_strId); 130 sbHtml.append("dialog\""); 131 if ((m_strCssclass != null) && (m_strCssclass.length() > 0)) 132 { 133 sbHtml.append(" class=\""); 134 sbHtml.append(m_strCssclass); 135 sbHtml.append("\""); 136 } 137 138 sbHtml.append(" onclick=\"focusTab(event, '"); 139 sbHtml.append(m_strId); 140 sbHtml.append("', "); 141 if ((m_strOnswitch != null) && (m_strOnswitch.length() > 0)) 142 { 143 sbOnSwitchJSFunction.append("'"); 144 sbOnSwitchJSFunction.append(m_strOnswitch.replaceAll("\'", "\\\\'")); 145 sbOnSwitchJSFunction.append("'"); 146 sbHtml.append(sbOnSwitchJSFunction); 151 } 152 else 153 { 154 sbOnSwitchJSFunction.append("null"); 155 sbHtml.append(sbOnSwitchJSFunction); 156 } 157 sbHtml.append(");dialogHelp(event);\" onKeyUp=\"showHelp(event);\">\n"); 158 sbHtml.append("<div id=\""); 161 sbHtml.append(m_strId); 162 sbHtml.append("tabfiller\" class=\"clsTabHeaderFiller\">\n" + 163 " \n" + 164 "</div>"); 165 166 Enumeration enumNames; 167 String strParam; 168 for (enumNames = pageContext.getRequest().getParameterNames(); 169 enumNames.hasMoreElements();) 170 { 171 strParam = (String )enumNames.nextElement(); 172 if (strParam.startsWith("activetab_")) 173 { 174 pageContext.getRequest().setAttribute("activetab", 177 pageContext.getRequest().getParameterValues(strParam)[0]); 178 } 179 } 180 181 pageContext.setAttribute(ACTIVE_TABBED_DIALOG_ID, m_strId); 184 cache(TABBED_DIALOG_ONSWITCH_JSFUNCTION, sbOnSwitchJSFunction.toString()); 186 187 TagUtils.write(pageContext, sbHtml.toString()); 188 189 return (EVAL_BODY_BUFFERED); 190 } 191 192 195 public int doEndTag( 196 ) throws JspException 197 { 198 BodyContent content = getBodyContent(); 203 String strContent = content.getString(); 204 if (content != null) 205 { 206 strContent = strContent.replaceAll(TABBED_DIALOG_PREFIX , m_strId); 207 } 208 TagUtils.write(pageContext, strContent); 209 210 getCachedContent(TABBED_DIALOG_ONSWITCH_JSFUNCTION, true); 212 pageContext.removeAttribute(ACTIVE_TABBED_DIALOG_ID); 214 TagUtils.write(pageContext, "</div>"); 216 217 return (EVAL_PAGE); 218 } 219 220 224 public String getFillercssclass( 225 ) 226 { 227 return m_strFillercssclass; 228 } 229 230 234 public String getOnswitch( 235 ) 236 { 237 return m_strOnswitch; 238 } 239 240 244 public void setFillercssclass( 245 String strFillercssclass 246 ) 247 { 248 m_strFillercssclass = strFillercssclass; 249 } 250 251 255 public void setOnswitch( 256 String strOnswitch 257 ) 258 { 259 m_strOnswitch = strOnswitch; 260 } 261 } 262 | Popular Tags |