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

View File

@@ -1,14 +1,23 @@
// FIXME factor out key precondition (shift et. al)
goog.provide('ol.interaction.Interaction');
goog.provide('ol.interaction.InteractionProperty');
goog.require('goog.asserts');
goog.require('ol.MapBrowserEvent');
goog.require('ol.Observable');
goog.require('ol.Object');
goog.require('ol.animation');
goog.require('ol.easing');
/**
* @enum {string}
*/
ol.interaction.InteractionProperty = {
ACTIVE: 'active'
};
/**
* @classdesc
@@ -23,9 +32,10 @@ goog.require('ol.easing');
* vectors and so are visible on the screen.
*
* @constructor
* @extends {ol.Observable}
* @extends {ol.Object}
*/
ol.interaction.Interaction = function() {
goog.base(this);
/**
@@ -34,23 +44,25 @@ ol.interaction.Interaction = function() {
*/
this.map_ = null;
/**
* @private
* @type {boolean}
*/
this.active_ = true;
this.setActive(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.
* @observable
* @api
*/
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.
* @param {boolean} active Active.
* @observable
* @api
*/
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);
/**

View File

@@ -3,13 +3,21 @@ goog.provide('ol.test.interaction.Interaction');
describe('ol.interaction.Interaction', function() {
describe('constructor', function() {
var interaction;
beforeEach(function() {
interaction = new ol.interaction.Interaction();
});
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(goog.events.EventTarget);
});
it('creates an active interaction', function() {
expect(interaction.getActive()).to.be(true);
});
});
describe('#getMap()', function() {