ToolBarButton.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. define("dojox/mobile/ToolBarButton", [
  2. "dojo/_base/declare",
  3. "dojo/_base/window",
  4. "dojo/dom-class",
  5. "dojo/dom-construct",
  6. "dojo/dom-style",
  7. "./common",
  8. "./_ItemBase"
  9. ], function(declare, win, domClass, domConstruct, domStyle, common, ItemBase){
  10. /*=====
  11. var ItemBase = dojox.mobile._ItemBase;
  12. =====*/
  13. // module:
  14. // dojox/mobile/ToolBarButton
  15. // summary:
  16. // A button widget that is placed in the Heading widget.
  17. return declare("dojox.mobile.ToolBarButton", ItemBase, {
  18. // summary:
  19. // A button widget that is placed in the Heading widget.
  20. // description:
  21. // ToolBarButton is a button that is placed in the Heading
  22. // widget. It is a subclass of dojox.mobile._ItemBase just like
  23. // ListItem or IconItem. So, unlike Button, it has basically the
  24. // same capability as ListItem or IconItem, such as icon support,
  25. // transition, etc.
  26. // selected: Boolean
  27. // If true, the button is in the selected status.
  28. selected: false,
  29. // btnClass: String
  30. // Deprecated.
  31. btnClass: "",
  32. /* internal properties */
  33. _defaultColor: "mblColorDefault",
  34. _selColor: "mblColorDefaultSel",
  35. buildRendering: function(){
  36. this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("div");
  37. this.inheritParams();
  38. domClass.add(this.domNode, "mblToolBarButton mblArrowButtonText");
  39. var color;
  40. if(this.selected){
  41. color = this._selColor;
  42. }else if(this.domNode.className.indexOf("mblColor") == -1){
  43. color = this._defaultColor;
  44. }
  45. domClass.add(this.domNode, color);
  46. if(!this.label){
  47. this.label = this.domNode.innerHTML;
  48. }
  49. if(this.icon && this.icon != "none"){
  50. this.iconNode = domConstruct.create("div", {className:"mblToolBarButtonIcon"}, this.domNode);
  51. common.createIcon(this.icon, this.iconPos, null, this.alt, this.iconNode);
  52. if(this.iconPos){
  53. domClass.add(this.iconNode.firstChild, "mblToolBarButtonSpriteIcon");
  54. }
  55. }else{
  56. if(common.createDomButton(this.domNode)){
  57. domClass.add(this.domNode, "mblToolBarButtonDomButton");
  58. }else{
  59. domClass.add(this.domNode, "mblToolBarButtonText");
  60. }
  61. }
  62. this.connect(this.domNode, "onclick", "onClick");
  63. },
  64. select: function(){
  65. // summary:
  66. // Makes this widget in the selected state.
  67. domClass.toggle(this.domNode, this._selColor, !arguments[0]);
  68. this.selected = !arguments[0];
  69. },
  70. deselect: function(){
  71. // summary:
  72. // Makes this widget in the deselected state.
  73. this.select(true);
  74. },
  75. onClick: function(e){
  76. this.setTransitionPos(e);
  77. this.defaultClickAction();
  78. },
  79. _setBtnClassAttr: function(/*String*/btnClass){
  80. var node = this.domNode;
  81. if(node.className.match(/(mblDomButton\w+)/)){
  82. domClass.remove(node, RegExp.$1);
  83. }
  84. domClass.add(node, btnClass);
  85. if(common.createDomButton(this.domNode)){
  86. domClass.add(this.domNode, "mblToolBarButtonDomButton");
  87. }
  88. },
  89. _setLabelAttr: function(/*String*/text){
  90. this.label = text;
  91. this.domNode.innerHTML = this._cv ? this._cv(text) : text;
  92. }
  93. });
  94. });