Files
openlayers/src/ol/dom/input.js
Bart van den Eijnden 8dc97790bc Add more content for the API doc
Involves additions to (there will be subsequent pull requests for other
classes):
- ol.Attribution
- ol.Collection
- ol.Expression
- ol.Feature
- ol.Geolocation
- ol.Map
- ol.Object
- ol.Overlay
- ol.Projection
- ol.View2D
- ol.control.Attribution
- ol.control.Control
- ol.control.FullScreen
- ol.control.Logo
- ol.control.MousePosition
- ol.control.ScaleLine
- ol.control.Zoom
- ol.control.ZoomSlider
- ol.dom.Input
- ol.filter.Filter
- ol.filter.Geometry
- ol.filter.Logical
2013-06-11 20:56:04 +02:00

132 lines
2.9 KiB
JavaScript

goog.provide('ol.dom.Input');
goog.provide('ol.dom.InputProperty');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('ol.Object');
/**
* @enum {string}
*/
ol.dom.InputProperty = {
VALUE: 'value',
CHECKED: 'checked'
};
/**
* Helper class for binding HTML input to an ol.Object
*
* Example:
*
* // bind a checkbox with id 'visible' to a layer's visibility
* var visible = new ol.dom.Input(document.getElementById('visible'));
* visible.bindTo('checked', layer, 'visible');
*
* @constructor
* @extends {ol.Object}
* @param {Element} target Target element.
*/
ol.dom.Input = function(target) {
goog.base(this);
/**
* @private
* @type {Element}
*/
this.target_ = target;
goog.events.listen(this.target_, goog.events.EventType.CHANGE,
this.handleInputChanged_, false, this);
goog.events.listen(this,
ol.Object.getChangeEventType(ol.dom.InputProperty.VALUE),
this.handleValueChanged_, false, this);
goog.events.listen(this,
ol.Object.getChangeEventType(ol.dom.InputProperty.CHECKED),
this.handleCheckedChanged_, false, this);
};
goog.inherits(ol.dom.Input, ol.Object);
/**
* If the input is a checkbox, return whether or not the checbox is checked.
* @return {boolean|undefined} checked.
*/
ol.dom.Input.prototype.getChecked = function() {
return /** @type {boolean} */ (this.get(ol.dom.InputProperty.CHECKED));
};
goog.exportProperty(
ol.dom.Input.prototype,
'getChecked',
ol.dom.Input.prototype.getChecked);
/**
* Get the value of the input.
* @return {string|undefined} input value.
*/
ol.dom.Input.prototype.getValue = function() {
return /** @type {string} */ (this.get(ol.dom.InputProperty.VALUE));
};
goog.exportProperty(
ol.dom.Input.prototype,
'getValue',
ol.dom.Input.prototype.getValue);
/**
* Sets the value of the input.
* @param {string} value Value.
*/
ol.dom.Input.prototype.setValue = function(value) {
this.set(ol.dom.InputProperty.VALUE, value);
};
goog.exportProperty(
ol.dom.Input.prototype,
'setValue',
ol.dom.Input.prototype.setValue);
/**
* Set whether or not a checkbox is checked.
* @param {boolean} checked Checked.
*/
ol.dom.Input.prototype.setChecked = function(checked) {
this.set(ol.dom.InputProperty.CHECKED, checked);
};
goog.exportProperty(
ol.dom.Input.prototype,
'setChecked',
ol.dom.Input.prototype.setChecked);
/**
* @private
*/
ol.dom.Input.prototype.handleInputChanged_ = function() {
if (this.target_.type === 'checkbox' || this.target_.type === 'radio') {
this.setChecked(this.target_.checked);
} else {
this.setValue(this.target_.value);
}
};
/**
* @private
*/
ol.dom.Input.prototype.handleCheckedChanged_ = function() {
this.target_.checked = this.getChecked() ? 'checked' : undefined;
};
/**
* @private
*/
ol.dom.Input.prototype.handleValueChanged_ = function() {
this.target_.value = this.getValue();
};