123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- if (!dojo._hasResource["dijit.form.CheckBox"]) { // _hasResource checks added
- // by build. Do not use
- // _hasResource directly in
- // your code.
- dojo._hasResource["dijit.form.CheckBox"] = true;
- dojo.provide("dijit.form.CheckBox");
- dojo.require("dijit.form.Button");
- dojo.declare("dijit.form.CheckBox", dijit.form.ToggleButton, {
- // summary:
- // Same as an HTML checkbox, but with fancy styling.
- //
- // description:
- // User interacts with real html inputs.
- // On onclick (which occurs by mouse click, space-bar, or
- // using the arrow keys to switch the selected radio button),
- // we update the state of the checkbox/radio.
- //
- // There are two modes:
- // 1. High contrast mode
- // 2. Normal mode
- // In case 1, the regular html inputs are shown and used by the user.
- // In case 2, the regular html inputs are invisible but still used by
- // the user. They are turned quasi-invisible and overlay the
- // background-image.
- templateString : "<fieldset class=\"dijitReset dijitInline\" waiRole=\"presentation\"\n\t><input\n\t \ttype=\"${type}\" name=\"${name}\"\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdojoAttachPoint=\"inputNode,focusNode\"\n\t \tdojoAttachEvent=\"onmouseover:_onMouse,onmouseout:_onMouse,onclick:_onClick\"\n/></fieldset>\n",
- baseClass : "dijitCheckBox",
- // Value of "type" attribute for <input>
- type : "checkbox",
- // value: Value
- // equivalent to value field on normal checkbox (if checked, the value
- // is passed as
- // the value when form is submitted)
- value : "on",
- postCreate : function() {
- dojo.setSelectable(this.inputNode, false);
- this.setChecked(this.checked);
- this.inherited(arguments);
- },
- setChecked : function(/* Boolean */checked) {
- if (dojo.isIE) {
- if (checked) {
- this.inputNode.setAttribute('checked', 'checked');
- } else {
- this.inputNode.removeAttribute('checked');
- }
- } else {
- this.inputNode.checked = checked;
- }
- this.inherited(arguments);
- },
- setValue : function(/* String */value) {
- if (value == null) {
- value = "";
- }
- this.inputNode.value = value;
- dijit.form.CheckBox.superclass.setValue.call(this, value);
- }
- });
- dojo.declare("dijit.form.RadioButton", dijit.form.CheckBox, {
- // summary:
- // Same as an HTML radio, but with fancy styling.
- //
- // description:
- // Implementation details
- //
- // Specialization:
- // We keep track of dijit radio groups so that we can update the
- // state
- // of all the siblings (the "context") in a group based on input
- // events. We don't rely on browser radio grouping.
- type : "radio",
- baseClass : "dijitRadio",
- // This shared object keeps track of all widgets, grouped by
- // name
- _groups : {},
- postCreate : function() {
- // add this widget to _groups
- (this._groups[this.name] = this._groups[this.name] || [])
- .push(this);
- this.inherited(arguments);
- },
- uninitialize : function() {
- // remove this widget from _groups
- dojo.forEach(this._groups[this.name], function(widget, i,
- arr) {
- if (widget === this) {
- arr.splice(i, 1);
- return;
- }
- }, this);
- },
- setChecked : function(/* Boolean */checked) {
- // If I am being checked then have to deselect currently
- // checked radio button
- if (checked) {
- dojo.forEach(this._groups[this.name], function(widget) {
- if (widget != this && widget.checked) {
- widget.setChecked(false);
- }
- }, this);
- }
- this.inherited(arguments);
- },
- _clicked : function(/* Event */e) {
- if (!this.checked) {
- this.setChecked(true);
- }
- }
- });
- }
|