| 1 33 34 package com.icesoft.faces.component.ext; 35 36 import java.util.ArrayList ; 37 import java.util.Collection ; 38 import java.util.Iterator ; 39 import java.util.List ; 40 import java.util.Map ; 41 42 import javax.faces.component.UIComponent; 43 import javax.faces.component.UISelectItem; 44 import javax.faces.component.UISelectItems; 45 import javax.faces.context.FacesContext; 46 import javax.faces.el.ValueBinding; 47 import javax.faces.model.SelectItem; 48 49 import com.icesoft.faces.component.CSS_DEFAULT; 50 import com.icesoft.faces.component.IceExtended; 51 import com.icesoft.faces.component.ext.taglib.Util; 52 import com.icesoft.faces.context.BridgeFacesContext; 53 import com.icesoft.faces.context.effects.CurrentStyle; 54 import com.icesoft.faces.context.effects.Effect; 55 import com.icesoft.faces.context.effects.JavascriptContext; 56 57 58 65 public class HtmlSelectOneMenu 66 extends javax.faces.component.html.HtmlSelectOneMenu 67 implements IceExtended { 68 69 public static final String COMPONENT_TYPE = 70 "com.icesoft.faces.HtmlSelectOneMenu"; 71 public static final String RENDERER_TYPE = "com.icesoft.faces.Menu"; 72 private static final boolean DEFAULT_VISIBLE = true; 73 private String styleClass = null; 74 private Boolean partialSubmit = null; 75 private String enabledOnUserRole = null; 76 private String renderedOnUserRole = null; 77 private Effect effect; 78 private Boolean visible = null; 79 private Effect onclickeffect; 80 private Effect ondblclickeffect; 81 private Effect onmousedowneffect; 82 private Effect onmouseupeffect; 83 private Effect onmousemoveeffect; 84 private Effect onmouseovereffect; 85 private Effect onmouseouteffect; 86 87 private Effect onkeypresseffect; 88 private Effect onkeydowneffect; 89 private Effect onkeyupeffect; 90 91 92 private CurrentStyle currentStyle; 93 94 private Effect onchangeeffect; 95 96 public HtmlSelectOneMenu() { 97 super(); 98 setRendererType(RENDERER_TYPE); 99 } 100 101 105 public void requestFocus() { 106 ((BridgeFacesContext) FacesContext.getCurrentInstance()) 107 .setFocusId("null"); 108 JavascriptContext.focus(FacesContext.getCurrentInstance(), 109 this.getClientId( 110 FacesContext.getCurrentInstance())); 111 } 112 113 public SelectItem[] getSelectItems() { 114 List selectItems = new ArrayList (); 115 Iterator children = this.getChildren().iterator(); 116 117 while (children.hasNext()) { 118 UIComponent child = (UIComponent) children.next(); 119 if (child instanceof UISelectItem) { 120 Object selectItemValue = ((UISelectItem) child).getValue(); 121 if (selectItemValue != null && 122 selectItemValue instanceof SelectItem) { 123 selectItems.add(selectItemValue); 124 } else { 125 assignDataIfNull(child); 130 selectItems.add( 131 new SelectItem( 132 ((UISelectItem) child).getItemValue(), 133 ((UISelectItem) child).getItemLabel(), 134 ((UISelectItem) child).getItemDescription(), 135 ((UISelectItem) child).isItemDisabled())); 136 } 137 } else if (child instanceof UISelectItems) { 138 Object selectItemsValue = ((UISelectItems) child).getValue(); 139 140 if (selectItemsValue != null) { 141 if (selectItemsValue instanceof SelectItem) { 142 selectItems.add(selectItemsValue); 143 } else if (selectItemsValue instanceof Collection ) { 144 Iterator selectItemsIterator = 145 ((Collection ) selectItemsValue).iterator(); 146 while (selectItemsIterator.hasNext()) { 147 selectItems.add(selectItemsIterator.next()); 148 } 149 } else if (selectItemsValue instanceof SelectItem[]) { 150 SelectItem selectItemArray[] = 151 (SelectItem[]) selectItemsValue; 152 for (int i = 0; i < selectItemArray.length; i++) { 153 selectItems.add(selectItemArray[i]); 154 } 155 } else if (selectItemsValue instanceof Map ) { 156 Iterator selectItemIterator = 157 ((Map ) selectItemsValue).keySet().iterator(); 158 while (selectItemIterator.hasNext()) { 159 Object nextKey = selectItemIterator.next(); 160 if (nextKey != null) { 161 Object nextValue = 162 ((Map ) selectItemsValue).get(nextKey); 163 if (nextValue != null) { 164 selectItems.add( 165 new SelectItem( 166 nextValue.toString(), 167 nextKey.toString())); 168 } 169 } 170 } 171 } else if (selectItemsValue instanceof String []) { 172 String stringItemArray[] = (String []) selectItemsValue; 173 for (int i = 0; i < stringItemArray.length; i++) { 174 selectItems.add(new SelectItem(stringItemArray[i])); 175 } 176 } 177 } 178 } 179 } 180 return (SelectItem[]) selectItems 181 .toArray(new SelectItem[selectItems.size()]); 182 } 183 184 static void assignDataIfNull(Object selectItem) { 185 UISelectItem uiSelectItem = (UISelectItem) selectItem; 186 if (uiSelectItem.getItemValue() == null) { 187 if (uiSelectItem.getItemLabel() != null) { 188 uiSelectItem.setItemValue(uiSelectItem.getItemLabel()); 189 } 190 } 191 if (uiSelectItem.getItemLabel() == null) { 192 if (uiSelectItem.getItemValue() != null) { 193 uiSelectItem 194 .setItemLabel(uiSelectItem.getItemValue().toString()); 195 } 196 } 197 } 198 199 public void setValueBinding(String s, ValueBinding vb) { 200 if (s != null && s.indexOf("effect") != -1) { 201 JavascriptContext.includeLib(JavascriptContext.ICE_EXTRAS, 203 getFacesContext()); 204 } 205 super.setValueBinding(s, vb); 206 } 207 208 211 public void setVisible(boolean visible) { 212 this.visible = Boolean.valueOf(visible); 213 } 214 215 218 public boolean getVisible() { 219 if (visible != null) { 220 return visible.booleanValue(); 221 } 222 ValueBinding vb = getValueBinding("visible"); 223 Boolean boolVal = 224 vb != null ? (Boolean ) vb.getValue(getFacesContext()) : null; 225 return boolVal != null ? boolVal.booleanValue() : DEFAULT_VISIBLE; 226 } 227 228 231 public void setEffect(Effect effect) { 232 this.effect = effect; 233 JavascriptContext 234 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 235 } 236 237 240 public Effect getEffect() { 241 if (effect != null) { 242 return effect; 243 } 244 ValueBinding vb = getValueBinding("effect"); 245 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 246 } 247 248 251 public void setPartialSubmit(boolean partialSubmit) { 252 this.partialSubmit = Boolean.valueOf(partialSubmit); 253 } 254 255 258 public boolean getPartialSubmit() { 259 if (partialSubmit != null) { 260 return partialSubmit.booleanValue(); 261 } 262 ValueBinding vb = getValueBinding("partialSubmit"); 263 Boolean boolVal = 264 vb != null ? (Boolean ) vb.getValue(getFacesContext()) : null; 265 return boolVal != null ? boolVal.booleanValue() : 266 Util.isParentPartialSubmit(this); 267 } 268 269 272 public void setEnabledOnUserRole(String enabledOnUserRole) { 273 this.enabledOnUserRole = enabledOnUserRole; 274 } 275 276 279 public String getEnabledOnUserRole() { 280 if (enabledOnUserRole != null) { 281 return enabledOnUserRole; 282 } 283 ValueBinding vb = getValueBinding("enabledOnUserRole"); 284 return vb != null ? (String ) vb.getValue(getFacesContext()) : null; 285 } 286 287 290 public void setRenderedOnUserRole(String renderedOnUserRole) { 291 this.renderedOnUserRole = renderedOnUserRole; 292 } 293 294 297 public String getRenderedOnUserRole() { 298 if (renderedOnUserRole != null) { 299 return renderedOnUserRole; 300 } 301 ValueBinding vb = getValueBinding("renderedOnUserRole"); 302 return vb != null ? (String ) vb.getValue(getFacesContext()) : null; 303 } 304 305 308 public boolean isRendered() { 309 if (!Util.isRenderedOnUserRole(this)) { 310 return false; 311 } 312 return super.isRendered(); 313 } 314 315 318 public void setStyleClass(String styleClass) { 319 this.styleClass = styleClass; 320 } 321 322 325 public String getStyleClass() { 326 return Util.getQualifiedStyleClass(this, 327 styleClass, 328 CSS_DEFAULT.SELECT_ONE_MENU_DEFAULT_STYLE_CLASS, 329 "styleClass", 330 isDisabled()); 331 } 332 333 336 public boolean isDisabled() { 337 if (!Util.isEnabledOnUserRole(this)) { 338 return true; 339 } else { 340 return super.isDisabled(); 341 } 342 } 343 344 345 348 public Effect getOnchangeeffect() { 349 if (onchangeeffect != null) { 350 return onchangeeffect; 351 } 352 ValueBinding vb = getValueBinding("onchangeeffect"); 353 354 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 355 } 356 357 360 public void setOnchangeeffect(Effect onchangeeffect) { 361 this.onchangeeffect = onchangeeffect; 362 JavascriptContext 363 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 364 } 365 366 367 370 public CurrentStyle getCurrentStyle() { 371 return currentStyle; 372 } 373 374 377 public void setCurrentStyle(CurrentStyle currentStyle) { 378 this.currentStyle = currentStyle; 379 } 380 381 382 383 384 385 386 389 public void setOnclickeffect(Effect onclickeffect) { 390 this.onclickeffect = onclickeffect; 391 JavascriptContext 392 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 393 } 394 395 398 public Effect getOndblclickeffect() { 399 if (ondblclickeffect != null) { 400 return ondblclickeffect; 401 } 402 ValueBinding vb = getValueBinding("ondblclickeffect"); 403 404 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 405 } 406 407 410 public void setOndblclickeffect(Effect ondblclickeffect) { 411 this.ondblclickeffect = ondblclickeffect; 412 JavascriptContext 413 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 414 } 415 416 419 public Effect getOnmousedowneffect() { 420 if (onmousedowneffect != null) { 421 return onmousedowneffect; 422 } 423 ValueBinding vb = getValueBinding("onmousedowneffect"); 424 425 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 426 } 427 428 431 public void setOnmousedowneffect(Effect onmousedowneffect) { 432 this.onmousedowneffect = onmousedowneffect; 433 JavascriptContext 434 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 435 } 436 437 440 public Effect getOnmouseupeffect() { 441 if (onmouseupeffect != null) { 442 return onmouseupeffect; 443 } 444 ValueBinding vb = getValueBinding("onmouseupeffect"); 445 446 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 447 } 448 449 452 public void setOnmouseupeffect(Effect onmouseupeffect) { 453 this.onmouseupeffect = onmouseupeffect; 454 JavascriptContext 455 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 456 } 457 458 461 public Effect getOnmousemoveeffect() { 462 if (onmousemoveeffect != null) { 463 return onmousemoveeffect; 464 } 465 ValueBinding vb = getValueBinding("onmousemoveeffect"); 466 467 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 468 } 469 470 473 public void setOnmousemoveeffect(Effect onmousemoveeffect) { 474 this.onmousemoveeffect = onmousemoveeffect; 475 JavascriptContext 476 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 477 } 478 479 482 public Effect getOnmouseovereffect() { 483 if (onmouseovereffect != null) { 484 return onmouseovereffect; 485 } 486 ValueBinding vb = getValueBinding("onmouseovereffect"); 487 488 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 489 } 490 491 494 public void setOnmouseovereffect(Effect onmouseovereffect) { 495 this.onmouseovereffect = onmouseovereffect; 496 JavascriptContext 497 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 498 } 499 500 503 public Effect getOnmouseouteffect() { 504 if (onmouseouteffect != null) { 505 return onmouseouteffect; 506 } 507 ValueBinding vb = getValueBinding("onmouseouteffect"); 508 509 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 510 } 511 512 515 public void setOnmouseouteffect(Effect onmouseouteffect) { 516 this.onmouseouteffect = onmouseouteffect; 517 JavascriptContext 518 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 519 } 520 521 522 525 public Effect getOnkeypresseffect() { 526 if (onkeypresseffect != null) { 527 return onkeypresseffect; 528 } 529 ValueBinding vb = getValueBinding("onkeypresseffect"); 530 531 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 532 } 533 534 537 public void setOnkeypresseffect(Effect onkeypresseffect) { 538 this.onkeypresseffect = onkeypresseffect; 539 JavascriptContext 540 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 541 } 542 543 544 545 546 547 548 549 550 551 554 public Effect getOnkeydowneffect() { 555 if (onkeydowneffect != null) { 556 return onkeydowneffect; 557 } 558 ValueBinding vb = getValueBinding("onkeydowneffect"); 559 560 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 561 } 562 563 566 public void setOnkeydowneffect(Effect onkeydowneffect) { 567 this.onkeydowneffect = onkeydowneffect; 568 JavascriptContext 569 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 570 } 571 572 575 public Effect getOnkeyupeffect() { 576 if (onkeyupeffect != null) { 577 return onkeyupeffect; 578 } 579 ValueBinding vb = getValueBinding("onkeyupeffect"); 580 581 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 582 } 583 584 587 public void setOnkeyupeffect(Effect onkeyupeffect) { 588 this.onkeyupeffect = onkeyupeffect; 589 JavascriptContext 590 .includeLib(JavascriptContext.ICE_EXTRAS, getFacesContext()); 591 } 592 593 596 public Effect getOnclickeffect() { 597 if (onclickeffect != null) { 598 return onclickeffect; 599 } 600 ValueBinding vb = getValueBinding("onclickeffect"); 601 602 return vb != null ? (Effect) vb.getValue(getFacesContext()) : null; 603 } 604 605 private String autocomplete; 606 607 610 public void setAutocomplete(String autocomplete) { 611 this.autocomplete = autocomplete; 612 } 613 614 617 public String getAutocomplete() { 618 if (autocomplete != null) { 619 return autocomplete; 620 } 621 ValueBinding vb = getValueBinding("autocomplete"); 622 return vb != null ? (String ) vb.getValue(getFacesContext()) : null; 623 } 624 625 626 630 public Object saveState(FacesContext context) { 631 Object values[] = new Object [21]; 632 values[0] = super.saveState(context); 633 values[1] = partialSubmit; 634 values[2] = enabledOnUserRole; 635 values[3] = renderedOnUserRole; 636 values[4] = styleClass; 637 values[5] = effect; 638 values[13] = onchangeeffect; 639 values[19] = currentStyle; 640 values[20] = visible; 641 return ((Object ) (values)); 642 } 643 644 648 public void restoreState(FacesContext context, Object state) { 649 Object values[] = (Object []) state; 650 super.restoreState(context, values[0]); 651 partialSubmit = (Boolean ) values[1]; 652 enabledOnUserRole = (String ) values[2]; 653 renderedOnUserRole = (String ) values[3]; 654 styleClass = (String ) values[4]; 655 effect = (Effect) values[5]; 656 onchangeeffect = (Effect) values[13]; 657 currentStyle = (CurrentStyle) values[19]; 658 visible = (Boolean ) values[20]; 659 } 660 } 661 662 663 | Popular Tags |