1 64 65 package com.jcorporate.expresso.ext.taglib; 66 67 import com.jcorporate.expresso.core.controller.Transition; 68 import com.jcorporate.expresso.core.misc.StringUtil; 69 import com.jcorporate.expresso.kernel.util.FastStringBuffer; 70 71 import javax.servlet.http.HttpServletResponse ; 72 import javax.servlet.jsp.JspTagException ; 73 import javax.servlet.jsp.JspWriter ; 74 import javax.servlet.jsp.tagext.Tag ; 75 76 81 82 83 91 public class TransitionTag 92 extends ExpressoTagSupport { 93 private Transition oneTransition = null; 94 private java.lang.String name = null; 95 private java.lang.String value = null; 96 private java.lang.String type = null; 97 private java.lang.String src = null; 98 private java.lang.String alt = null; 99 private java.lang.String classValue = null; 100 101 private java.lang.String nameToUse = null; 102 private java.lang.String valueToUse = null; 103 private java.lang.String typeToUse = null; 104 private java.lang.String srcToUse = null; 105 private java.lang.String altToUse = null; 106 private java.lang.String classValueToUse = null; 107 108 109 private java.lang.String onclick = null; 111 112 115 public TransitionTag() { 116 super(); 117 } 118 119 124 public int doEndTag() 125 throws javax.servlet.jsp.JspTagException { 126 nameToUse = name; 127 valueToUse = value; 128 typeToUse = type; 129 srcToUse = src; 130 altToUse = alt; 131 classValueToUse = classValue; 132 133 getControllerResponse(); 134 135 try { 136 Tag container = getContainer(); 137 138 if (container == null) { 139 oneTransition = ctlrResp.getTransition(name); 140 } else { 141 if (container instanceof ElementIterator) { 142 oneTransition = (Transition) ((ElementIterator) container).getElement(); 143 nameToUse = oneTransition.getName(); 144 } else if (container instanceof BlockTag) { 145 oneTransition = (Transition) ((BlockTag) container).getBlock().getContent(getName()); 146 } else { 147 throw new JspTagException ("TransitionTag: cannot handle container tag" + 148 container.getClass().getName()); 149 } 150 } 151 152 JspWriter writer = pageContext.getOut(); 153 154 FastStringBuffer fsb = FastStringBuffer.getInstance(); 155 try { 156 157 if (oneTransition != null) { 158 if (valueToUse == null || "".equals(valueToUse)) { 159 160 valueToUse = oneTransition.getLabel(); 163 } 164 if (valueToUse == null || "".equals(valueToUse)) { 165 166 valueToUse = "Click"; 168 } 169 170 if ((typeToUse == null) || "".equals(typeToUse)) { 172 typeToUse = oneTransition.getType(); 174 } 175 176 177 if ((srcToUse == null) || "".equals(srcToUse)) { 178 srcToUse = oneTransition.getAttribute("SRC"); 180 } 181 183 fsb.append(oneTransition.getHTMLParamString()); 187 if (!StringUtil.notNull(typeToUse).equals("IMAGE")) { 188 fsb.append("<INPUT TYPE=\"submit\" NAME=\"button_"); 189 fsb.append(oneTransition.getName()); 190 fsb.append("\" VALUE=\""); 191 fsb.append(valueToUse); 192 fsb.append("\" CLASS=\""); 193 fsb.append(classValueToUse); 194 fsb.append("\" "); 195 fsb.append(getJavaScript()); 196 fsb.append(">\n"); 197 fsb.append("<INPUT TYPE=\"hidden\" NAME=\"cmd\" VALUE=\"button\" >\n"); 198 } else { 199 if (StringUtil.notNull(srcToUse).equals("")) { 200 throw new JspTagException ("TransitionTag: " + 201 getName() + " of type IMAGE " + 202 " requires a SRC attribute."); 203 } 204 205 HttpServletResponse response = (HttpServletResponse ) pageContext 206 .getResponse(); 207 208 if (altToUse == null || "".equals(altToUse)) { 209 altToUse = oneTransition.getLabel(); 210 } 211 212 fsb.append("<INPUT TYPE=\"image\" NAME=\"button_"); 213 fsb.append(oneTransition.getName()); 214 fsb.append("\" "); 215 fsb.append("SRC=\""); 216 fsb.append(response.encodeURL(srcToUse)); 217 fsb.append("\" "); 218 fsb.append("ALT=\""); 219 fsb.append(StringUtil.notNull(altToUse)); 220 fsb.append("\" "); 221 fsb.append(getJavaScript()); 222 fsb.append(">"); 223 } 224 225 writer.print(fsb.toString()); 226 } else { 227 writer.println("The Transition Button Could Not Be Displayed"); 228 } 229 } finally { 230 fsb.release(); 231 } 232 } catch (Exception e) { 233 e.printStackTrace(System.err); 234 throw new JspTagException ("TransitionTag: " + e.getMessage()); 235 } 236 237 return EVAL_PAGE; 238 } 239 240 241 248 public int doStartTag() 249 throws javax.servlet.jsp.JspTagException { 250 return SKIP_BODY; 251 } 252 253 254 261 protected java.lang.String getJavaScript() { 262 264 if (onclick != null) { 265 FastStringBuffer fsb = new FastStringBuffer(64); 266 fsb.append("onclick=\""); 267 fsb.append(onclick); 268 fsb.append("\""); 269 return fsb.toString(); 271 } 272 273 return ""; 274 } 275 276 281 public java.lang.String getName() { 282 return nameToUse; 283 } 284 285 291 public java.lang.String getValue() { 292 return valueToUse; 293 } 294 295 301 public java.lang.String getClassValue() { 302 return classValueToUse; 303 } 304 305 312 public java.lang.String getOnclick() { 313 return onclick; 314 } 315 316 322 public void setName(java.lang.String newName) { 323 name = newName; 324 } 325 326 332 public void setValue(java.lang.String newValue) { 333 value = newValue; 334 } 335 336 342 public void setClassValue(java.lang.String newClassValue) { 343 classValue = newClassValue; 344 } 345 346 353 public void setOnclick(java.lang.String newValue) { 354 onclick = newValue; 355 } 356 357 363 public java.lang.String getAlt() { 364 return altToUse; 365 } 366 367 368 374 public java.lang.String getSrc() { 375 return srcToUse; 376 } 377 378 379 385 public java.lang.String getType() { 386 return typeToUse; 387 } 388 389 390 396 public void setAlt(java.lang.String newAlt) { 397 alt = newAlt; 398 } 399 400 401 407 public void setSrc(java.lang.String newSrc) { 408 src = newSrc; 409 } 410 411 417 public void setType(java.lang.String newType) { 418 type = newType; 419 } 420 421 } 422 423 | Popular Tags |