1 33 34 package com.icesoft.faces.component.menubar; 35 36 import com.icesoft.faces.component.CSS_DEFAULT; 37 import com.icesoft.faces.component.ext.taglib.Util; 38 import com.icesoft.faces.util.CoreUtils; 39 40 import javax.faces.component.UIComponent; 41 import javax.faces.component.UIParameter; 42 import javax.faces.el.MethodBinding; 43 import javax.faces.el.ValueBinding; 44 import javax.faces.event.ActionListener; 45 import java.util.Iterator ; 46 import java.util.List ; 47 48 49 65 public class MenuItem extends MenuItemBase { 66 67 private String icon; 68 private Object value; 69 private String link; 70 private String target; 71 private MethodBinding action = null; 72 private MethodBinding actionListener = null; 73 private Boolean disabled = null; 74 private String enabledOnUserRole = null; 75 private String renderedOnUserRole = null; 76 77 80 public static final String DEFAULT_ICON = 81 "/xmlhttp/css/xp/css-images/menu_blank_icon.gif"; 82 private static final String DEFAULT_VALUE = "menu item default"; 83 private static final String DEFAULT_LINK = "#"; 84 85 public MenuItem() { 86 } 87 88 91 public String getRendererType() { 92 return "com.icesoft.faces.View"; 93 } 94 95 public String getComponentType() { 96 return "com.icesoft.faces.MenuNode"; 97 } 98 99 103 public String getFamily() { 104 return "com.icesoft.faces.MenuNode"; 105 } 106 107 109 112 public String getIcon() { 113 if (icon != null) { 114 return icon; 115 } 116 ValueBinding vb = getValueBinding("icon"); 117 if (vb != null) { 118 return (String ) vb.getValue(getFacesContext()); 119 } 120 return CoreUtils.resolveResourceURL(getFacesContext(), DEFAULT_ICON); 121 } 122 123 126 public void setIcon(String iconValue) { 127 icon = iconValue; 128 } 129 130 133 public Object getValue() { 134 if (value != null) { 135 return value; 136 } 137 ValueBinding vb = getValueBinding("value"); 138 if (vb != null) { 139 return (String ) vb.getValue(getFacesContext()); 140 } 141 return DEFAULT_VALUE; 142 } 143 144 147 public void setValue(Object value) { 148 this.value = value; 149 } 150 151 154 public String getLink() { 155 if (link != null) { 156 return link; 157 } 158 ValueBinding vb = getValueBinding("link"); 159 if (vb != null) { 160 return (String ) vb.getValue(getFacesContext()); 161 } 162 return DEFAULT_LINK; 163 } 164 165 168 public void setLink(String linkValue) { 169 this.link = linkValue; 170 } 171 172 175 public String getTarget() { 176 if (target != null) { 177 return target; 178 } 179 ValueBinding vb = getValueBinding("target"); 180 if (vb != null) { 181 return (String ) vb.getValue(getFacesContext()); 182 } 183 return null; 184 } 185 186 189 public void setTarget(String target) { 190 this.target = target; 191 } 192 193 196 public MethodBinding getAction() { 197 MethodBinding actionMB = super.getAction(); 200 if(actionMB != null) 201 return actionMB; 202 return action; 203 } 204 205 208 public void setAction(MethodBinding action) { 209 this.action = action; 210 } 211 212 215 public MethodBinding getActionListener() { 216 return actionListener; 217 } 218 219 222 public void setActionListener(MethodBinding actionListener) { 223 this.actionListener = actionListener; 224 } 225 226 public boolean hasActionOrActionListener() { 227 if( getAction() != null ) 228 return true; 229 if( getActionListener() != null ) 230 return true; 231 ActionListener[] actionListeners = getActionListeners(); 232 if( actionListeners != null && actionListeners.length > 0 ) 233 return true; 234 return false; 235 } 236 237 238 241 public void setDisabled(boolean disabled) { 242 this.disabled = new Boolean (disabled); 243 ValueBinding vb = getValueBinding("disabled"); 244 if (vb != null) { 245 vb.setValue(getFacesContext(), this.disabled); 246 this.disabled = null; 247 } 248 } 249 250 public boolean getDisabled() { 251 return isDisabled(); 252 } 253 254 257 public boolean isDisabled() { 258 if (!Util.isEnabledOnUserRole(this)) { 259 return true; 260 } 261 262 if (disabled != null) { 263 return disabled.booleanValue(); 264 } 265 ValueBinding vb = getValueBinding("disabled"); 266 Boolean v = 267 vb != null ? (Boolean ) vb.getValue(getFacesContext()) : null; 268 return v != null ? v.booleanValue() : false; 269 } 270 271 void addParameter(UIComponent link) { 272 List children = getChildren(); 273 274 for (int i = 0; i < children.size(); i++) { 275 UIComponent nextChild = (UIComponent) children.get(i); 276 if (nextChild instanceof UIParameter) { 277 UIParameter param = new UIParameter(); 278 param.setName(((UIParameter) nextChild).getName()); 279 param.setValue(((UIParameter) nextChild).getValue()); 280 link.getChildren().add(param); 281 } 282 } 283 } 284 285 boolean isChildrenMenuItem() { 286 Iterator children = getChildren().iterator(); 287 while (children.hasNext()) { 288 UIComponent child = (UIComponent) children.next(); 289 if (child instanceof MenuItem) { 290 return true; 291 } 292 } 293 return false; 294 } 295 296 297 302 public void setEnabledOnUserRole(String enabledOnUserRole) { 303 this.enabledOnUserRole = enabledOnUserRole; 304 } 305 306 311 public String getEnabledOnUserRole() { 312 if (enabledOnUserRole != null) { 313 return enabledOnUserRole; 314 } 315 ValueBinding vb = getValueBinding("enabledOnUserRole"); 316 return vb != null ? (String ) vb.getValue(getFacesContext()) : null; 317 } 318 319 324 public void setRenderedOnUserRole(String renderedOnUserRole) { 325 this.renderedOnUserRole = renderedOnUserRole; 326 } 327 328 333 public String getRenderedOnUserRole() { 334 if (renderedOnUserRole != null) { 335 return renderedOnUserRole; 336 } 337 ValueBinding vb = getValueBinding("renderedOnUserRole"); 338 return vb != null ? (String ) vb.getValue(getFacesContext()) : null; 339 } 340 341 346 public boolean isRendered() { 347 if (!Util.isRenderedOnUserRole(this)) { 348 return false; 349 } 350 return super.isRendered(); 351 } 352 353 private String styleClass; 354 359 public void setStyleClass(String styleClass) { 360 this.styleClass = styleClass; 361 } 362 363 368 public String getStyleClass() { 369 return Util.getQualifiedStyleClass(this, 370 styleClass, 371 CSS_DEFAULT.MENU_ITEM_STYLE, 372 "styleClass", 373 isDisabled()); 374 } 375 376 public String getLabelStyleClass() { 377 return Util.getQualifiedStyleClass(this, 378 CSS_DEFAULT.MENU_ITEM_LABEL_STYLE, isDisabled()); 379 } 380 381 public String getImageStyleClass() { 382 return Util.getQualifiedStyleClass(this, 383 CSS_DEFAULT.MENU_ITEM_IMAGE_STYLE); 384 } 385 386 String getUserDefinedStyleClass(String parentClass, String subClass) { 387 String disSuffix = isDisabled()? "-dis" : ""; 388 389 if (styleClass != null) { 390 return parentClass + disSuffix + " " +styleClass + subClass + disSuffix; 391 } 392 return parentClass + disSuffix; 393 } 394 } 395 | Popular Tags |