Make interaction "active" an ol.Object property

This commit is contained in:
Éric Lemoine
2014-09-29 17:09:45 +02:00
parent 1a4d841a26
commit dede4f379f
2 changed files with 36 additions and 11 deletions
+27 -10
View File
@@ -1,14 +1,23 @@
// FIXME factor out key precondition (shift et. al) // FIXME factor out key precondition (shift et. al)
goog.provide('ol.interaction.Interaction'); goog.provide('ol.interaction.Interaction');
goog.provide('ol.interaction.InteractionProperty');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('ol.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol.Observable'); goog.require('ol.Object');
goog.require('ol.animation'); goog.require('ol.animation');
goog.require('ol.easing'); goog.require('ol.easing');
/**
* @enum {string}
*/
ol.interaction.InteractionProperty = {
ACTIVE: 'active'
};
/** /**
* @classdesc * @classdesc
@@ -23,9 +32,10 @@ goog.require('ol.easing');
* vectors and so are visible on the screen. * vectors and so are visible on the screen.
* *
* @constructor * @constructor
* @extends {ol.Observable} * @extends {ol.Object}
*/ */
ol.interaction.Interaction = function() { ol.interaction.Interaction = function() {
goog.base(this); goog.base(this);
/** /**
@@ -34,23 +44,25 @@ ol.interaction.Interaction = function() {
*/ */
this.map_ = null; this.map_ = null;
/** this.setActive(true);
* @private
* @type {boolean}
*/
this.active_ = true;
}; };
goog.inherits(ol.interaction.Interaction, ol.Observable); goog.inherits(ol.interaction.Interaction, ol.Object);
/** /**
* @return {boolean} `true` if the interaction is active, `false` otherwise. * @return {boolean} `true` if the interaction is active, `false` otherwise.
* @observable
* @api * @api
*/ */
ol.interaction.Interaction.prototype.getActive = function() { ol.interaction.Interaction.prototype.getActive = function() {
return this.active_; return /** @type {boolean} */ (
this.get(ol.interaction.InteractionProperty.ACTIVE));
}; };
goog.exportProperty(
ol.interaction.Interaction.prototype,
'getActive',
ol.interaction.Interaction.prototype.getActive);
/** /**
@@ -75,11 +87,16 @@ ol.interaction.Interaction.prototype.handleMapBrowserEvent =
/** /**
* Activate or deactivate the interaction. * Activate or deactivate the interaction.
* @param {boolean} active Active. * @param {boolean} active Active.
* @observable
* @api * @api
*/ */
ol.interaction.Interaction.prototype.setActive = function(active) { ol.interaction.Interaction.prototype.setActive = function(active) {
this.active_ = active; this.set(ol.interaction.InteractionProperty.ACTIVE, active);
}; };
goog.exportProperty(
ol.interaction.Interaction.prototype,
'setActive',
ol.interaction.Interaction.prototype.setActive);
/** /**
+9 -1
View File
@@ -3,13 +3,21 @@ goog.provide('ol.test.interaction.Interaction');
describe('ol.interaction.Interaction', function() { describe('ol.interaction.Interaction', function() {
describe('constructor', function() { describe('constructor', function() {
var interaction;
beforeEach(function() {
interaction = new ol.interaction.Interaction();
});
it('creates a new interaction', function() { it('creates a new interaction', function() {
var interaction = new ol.interaction.Interaction();
expect(interaction).to.be.a(ol.interaction.Interaction); expect(interaction).to.be.a(ol.interaction.Interaction);
expect(interaction).to.be.a(goog.events.EventTarget); expect(interaction).to.be.a(goog.events.EventTarget);
}); });
it('creates an active interaction', function() {
expect(interaction.getActive()).to.be(true);
});
}); });
describe('#getMap()', function() { describe('#getMap()', function() {