Changeset 4162

Show
Ignore:
Timestamp:
05/23/06 19:48:06 (3 years ago)
Author:
bill
Message:

add setDisabled() and setCaption() methods to button
(fixes #582)

Location:
trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/widget/Button.js

    r4050 r4162  
    4040                        } 
    4141                        dojo.html.disableSelection(this.containerNode); 
    42                         if ( this.disabled ) { 
    43                                 dojo.html.prependClass(this.domNode, "dojoButtonDisabled"); 
    44                         } 
    4542                         
    4643                        // after the browser has had a little time to calculate the size needed 
     
    6158                        this.centerImage.style.left=endWidth+"px"; 
    6259                        this._setImage(this.disabled ? this.disabledImg : this.inactiveImg); 
     60 
     61                        if ( this.disabled ) { 
     62                                dojo.html.prependClass(this.domNode, "dojoButtonDisabled"); 
     63                        } else { 
     64                                dojo.html.removeClass(this.domNode, "dojoButtonDisabled"); 
     65                        } 
    6366                                 
    6467                        this.domNode.style.height=this.height + "px"; 
     
    120123                        // Not sure why this is necessary; but if button is inside a hidden floating 
    121124                        // pane (see Mail.html demo).  Revisit when buttons are redesigned 
     125                        this.sizeMyself(); 
     126                }, 
     127                 
     128                setCaption: function(content){ 
     129                        this.caption=content; 
     130                        this.containerNode.innerHTML=content; 
     131                        this.sizeMyself(); 
     132                }, 
     133                 
     134                setDisabled: function(disabled){ 
     135                        this.disabled=disabled; 
    122136                        this.sizeMyself(); 
    123137                } 
  • trunk/tests/widget/test_Button.html

    r4058 r4162  
    1212        dojo.require("dojo.widget.Button"); 
    1313        dojo.require("dojo.widget.Menu2"); 
     14        dojo.require("dojo.widget.Manager"); 
    1415        dojo.hostenv.writeIncludes(); 
    1516</script> 
     
    99100</div> 
    100101<br clear=both> 
    101 And disabled: 
    102 <div class="box"> 
    103         <button dojoType="Button" disabled="true" onclick='dojo.debug("clicked simple")'> 
    104                 <img src="images/plus.gif"> Create 
    105         </button> 
    106         <button dojoType="Button" disabled="true" onclick='dojo.debug("clicked simple")'> 
    107                 <img src="images/plus.gif"><br>Create 
    108         </button> 
    109         <button dojoType="dropdownButton" menuId='editMenu' disabled="true"> 
    110                 <img src="images/note.gif"> Edit 
    111         </button> 
    112         <button dojoType="dropdownButton" menuId='editMenu' disabled="true"> 
    113                 <img src="images/note.gif"><br>Edit 
    114         </button> 
    115         <button dojoType="comboButton" menuId='saveMenu' onClick='dojo.debug("clicked combo save");' disabled="true"> 
    116                 <img src="images/save.gif"> Save 
    117         </button> 
    118         <button dojoType="comboButton" menuId='saveMenu' onClick='dojo.debug("clicked combo save");' disabled="true"> 
    119                 <img src="images/save.gif"><br>Save 
    120         </button> 
    121         <div style="clear: both;"></div> 
    122 </div> 
    123102 
    124103<h2>Sizing</h2> 
     
    146125        <div style="clear: both;"></div> 
    147126</div> 
    148 <p>Disabled:</p> 
    149 <div class="box"> 
    150         <button dojoType="Button" onclick='dojo.debug("big");' disabled="true"> 
    151                 <img src="images/flatScreen.gif"> 
    152                 <span style="font-size:xx-large">big</span> 
    153         </button> 
    154         <button id="smallButton1dis" dojoType="Button" onclick='dojo.debug("small");' disabled="true"> 
    155                 <img src="images/arrowSmall.gif"> 
    156                 <span style="font-size:x-small">small</span> 
    157         </button> 
    158         <button dojoType="Button" onclick='dojo.debug("long");' disabled="true"> 
    159                 <img src="images/tube.gif" height=16> 
    160                 long 
    161         </button> 
    162         <button dojoType="Button" onclick='dojo.debug("tall");' width2height="0.1" disabled="true"> 
    163            <div> 
    164                 <img src="images/tubeTall.gif" height=75px width=35px><br> 
    165                 <span style="font-size:medium">tall</span> 
    166            </div> 
    167         </button> 
    168         <div style="clear: both;"></div> 
    169 </div> 
    170  
    171  
     127<br clear=both> 
    172128 
    173129<h2>User defined button</h2> 
     
    194150</div> 
    195151 
     152<h2>Programatically changing buttons</h2> 
     153<p>clicking the buttons below will change the buttons above</p> 
     154<script> 
     155        function forEachButton(func){ 
     156                dojo.lang.forEach( 
     157                        dojo.lang.unnest( 
     158                                dojo.widget.manager.getWidgetsByType("Button"), 
     159                                dojo.widget.manager.getWidgetsByType("DropDownButton"), 
     160                                dojo.widget.manager.getWidgetsByType("ComboButton"), 
     161                                dojo.widget.manager.getWidgetsByType("UserButton") 
     162                        ), 
     163                        func 
     164                ); 
     165        } 
     166 
     167        var disabled=false; 
     168        function toggleDisabled(){       
     169                disabled=!disabled; 
     170                forEachButton(function(widget){ widget.setDisabled(disabled); }); 
     171                dojo.byId("toggle").innerHTML= disabled ? "Enable all" : "Disable all"; 
     172        } 
     173        var captions=["<img src='images/note.gif'>All", "<i>work</i>", "and", "no", "<h1>play</h1>", 
     174                                 "<span style='color: red'>makes</span>", "Jack", "<h3>a</h3>", "dull", 
     175                                 "<img src='images/plus.gif'>boy"]; 
     176        var idx=0; 
     177        function changeCaptions(){       
     178                forEachButton(function(widget){ widget.setCaption( captions[idx++ % captions.length]); }); 
     179        } 
     180</script> 
     181<div> 
     182        <button id="toggle" onclick='toggleDisabled()'>Disable all</button> 
     183        <button onclick='changeCaptions()'>Change caption</button> 
     184        <button onclick='location.reload()'>Revert</button> 
     185</div> 
     186 
    196187<div dojoType="PopupMenu2" id="editMenu" toggle="wipe"> 
    197188        <div dojoType="MenuItem2" iconSrc="images/cut.gif" caption="Cut" accelKey="Ctrl+C"