1 16 package com.blandware.atleap.webapp.taglib.core.menu.context; 17 18 import com.blandware.atleap.webapp.taglib.core.ParamParent; 19 import com.blandware.atleap.webapp.taglib.core.html.LinkTag; 20 import com.blandware.atleap.webapp.util.core.WebappConstants; 21 import org.apache.commons.validator.GenericValidator; 22 23 import javax.servlet.jsp.JspException ; 24 import javax.servlet.jsp.JspTagException ; 25 import java.io.IOException ; 26 27 74 public class ItemLinkTag extends LinkTag implements ParamParent { 75 76 81 protected String confirmExpression; 82 83 87 protected String highlightedStyleClass = null; 88 89 93 protected String disabledStyleClass = null; 94 95 99 protected String highlightedDisabledStyleClass = null; 100 101 104 protected int renderingFlag = ItemPart.FLAG_RENDER_TO_PAGE; 105 106 110 protected boolean isItemEnabled; 111 112 122 public String getConfirmExpression() { 123 return confirmExpression; 124 } 125 126 132 public void setConfirmExpression(String confirmExpression) { 133 this.confirmExpression = confirmExpression; 134 } 135 136 146 public String getHighlightedStyleClass() { 147 return highlightedStyleClass; 148 } 149 150 156 public void setHighlightedStyleClass(String highlightedStyleClass) { 157 this.highlightedStyleClass = highlightedStyleClass; 158 } 159 160 170 public String getDisabledStyleClass() { 171 return disabledStyleClass; 172 } 173 174 179 public void setDisabledStyleClass(String disabledStyleClass) { 180 this.disabledStyleClass = disabledStyleClass; 181 } 182 183 193 public String getHighlightedDisabledStyleClass() { 194 return highlightedDisabledStyleClass; 195 } 196 197 202 public void setHighlightedDisabledStyleClass(String highlightedDisabledStyleClass) { 203 this.highlightedDisabledStyleClass = highlightedDisabledStyleClass; 204 } 205 206 211 public void doTag() throws JspException , IOException { 212 213 ItemPart part = (ItemPart) findAncestorWithClass(this, ItemPart.class); 215 if ( part == null ) { 216 throw new JspTagException ("This tag is only valid when nested within 'itemEnabled' or 'itemDisabled' tag"); 217 } 218 219 ItemTag parentItemTag = (ItemTag) findAncestorWithClass(this, ItemTag.class); 220 if (parentItemTag == null) { 221 throw new JspTagException ("This tag is only valid when nested within 'item' tag"); 222 } 223 isItemEnabled = parentItemTag.getEnabled().booleanValue(); 225 226 renderingFlag = part.getRenderingFlag(); 228 suppressValidation = true; 229 super.doTag(); 230 } 231 232 239 protected void openElement(StringBuffer element) { 240 if ( renderingFlag == ItemPart.FLAG_RENDER_TO_MENU ) { 241 element.append("<div "); 242 } else { 243 if (isItemEnabled) { 244 super.openElement(element); 245 } 246 } 247 } 248 249 252 protected void appendLocation(StringBuffer element, String location) { 253 if ( renderingFlag == ItemPart.FLAG_RENDER_TO_MENU ) { 254 if (GenericValidator.isBlankOrNull(location)) { 255 location = ""; 256 } 257 element.append("url=\"").append(location).append("\""); 258 } else { 259 if (isItemEnabled) { 260 if (name == null && action == null && forward == null && href == null) { 261 href = "#"; 262 } 263 super.appendLocation(element, location); 264 } 265 } 266 } 267 268 271 protected void appendAttributes(StringBuffer element) { 272 if ( !GenericValidator.isBlankOrNull(confirmExpression) ) { 273 confirmExpression = "eval('" + confirmExpression + "')"; 274 } 275 if ( renderingFlag == ItemPart.FLAG_RENDER_TO_MENU ) { 276 onclick = "onMenuItemClick(this);"; 278 if ( !GenericValidator.isBlankOrNull(confirmExpression) ) { 279 onclick = "if ( " + confirmExpression + " ) { " + onclick + "} else { return false;}"; 280 } 281 if (GenericValidator.isBlankOrNull(styleClass)) { 282 styleClass = WebappConstants.CONTEXT_MENU_ITEM_STYLE_CLASS; 283 } 284 if (GenericValidator.isBlankOrNull(highlightedStyleClass)) { 285 highlightedStyleClass = WebappConstants.HIGHLIGHTED_CONTEXT_MENU_ITEM_STYLE_CLASS; 286 } 287 if (GenericValidator.isBlankOrNull(disabledStyleClass)) { 288 disabledStyleClass = WebappConstants.DISABLED_CONTEXT_MENU_ITEM_STYLE_CLASS; 289 } 290 if (GenericValidator.isBlankOrNull(highlightedDisabledStyleClass)) { 291 highlightedDisabledStyleClass = WebappConstants.HIGHLIGHTED_DISABLED_CONTEXT_MENU_ITEM_STYLE_CLASS; 292 } 293 if (!isItemEnabled) { 294 styleClass = disabledStyleClass; 295 highlightedStyleClass = highlightedDisabledStyleClass; 296 } 297 onmouseover = "activateContextMenuItem(this, '" + highlightedStyleClass + "');"; 298 onmouseout = "deactivateContextMenuItem(this, '" + styleClass + "');"; 299 } else { 300 onclick = "return " + confirmExpression + ";"; 301 } 302 if (renderingFlag == ItemPart.FLAG_RENDER_TO_MENU || isItemEnabled) { 303 super.appendAttributes(element); 304 } 305 } 306 307 310 protected void closeOpeningTag(StringBuffer element) { 311 if ( renderingFlag == ItemPart.FLAG_RENDER_TO_MENU ) { 312 element.append(">"); 313 } else { 314 if (isItemEnabled) { 315 super.closeOpeningTag(element); 316 } 317 } 318 } 319 320 323 protected void closeElement(StringBuffer element) { 324 if ( renderingFlag == ItemPart.FLAG_RENDER_TO_MENU ) { 325 element.append("</div>"); 326 } else { 327 if (isItemEnabled) { 328 super.closeElement(element); 329 } 330 } 331 } 332 333 } 334 | Popular Tags |