/**
@module "montage/ui/input-radio.reel"
*/
var CheckControl = require("ui/check-control").CheckControl,
PressComposer = require("../../composer/press-composer").PressComposer,
KeyComposer = require("../../composer/key-composer").KeyComposer;
/**
* Wraps the a <input type="radio"> element with binding support for the element's standard attributes.
@class module:"montage/ui/native/input-radio.reel".InputRadio
@extends module:montage/ui/check-input.CheckInput
*/
exports.Radio = CheckControl.specialize({
// constructor: {
// value: function InputRadio() {
// this.super();
// return this;
// }
// },
drawsFocusOnPointerActivation: {
value: true
},
hasTemplate: {
value: false
},
_keyComposer: {
value: null
},
_radioButtonController: {
value: null
},
enterDocument: {
value: function (firstTime) {
if (firstTime) {
this.element.setAttribute("role", "radio");
}
}
},
prepareForActivationEvents: {
value: function() {
this.super();
this._keyComposer = new KeyComposer();
this._keyComposer.component = this;
this._keyComposer.keys = "space";
this.addComposer(this._keyComposer);
this._keyComposer.addEventListener("keyPress", this, false);
this._keyComposer.addEventListener("keyRelease", this, false);
}
},
handleKeyPress: {
value: function () {
this.active = true;
}
},
handleKeyRelease: {
value: function () {
this.active = false;
this.check();
}
},
/**
* The radio button controller that ensures that only one radio button in
* its `content` is `checked` at any time.
* @type {RadioButtonController}
*/
radioButtonController: {
set: function (value) {
if (this._radioButtonController) {
this._radioButtonController.unregisterRadioButton(this);
}
this._radioButtonController = value;
if (value) {
value.registerRadioButton(this);
}
},
get: function () {
return this._radioButtonController;
}
}
});