From 3d68a3550ec26a1ccd4f6a259c1c11e603fc3c46 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 23 Jan 2014 18:30:36 +0100 Subject: [PATCH 1/7] Convert ol.CollectionEvent#getElement method into element property --- externs/oli.js | 9 +++++++++ src/ol/collection.exports | 2 -- src/ol/collection.js | 16 ++++------------ src/ol/layer/layergroup.js | 4 ++-- src/ol/render/featuresoverlay.js | 4 ++-- test/spec/ol/collection.test.js | 22 +++++++++++----------- 6 files changed, 28 insertions(+), 29 deletions(-) diff --git a/externs/oli.js b/externs/oli.js index 44b1006103..6d8c5eeeb4 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -9,6 +9,15 @@ var oli; + +/** @interface */ +oli.CollectionEvent = function() {}; + + +/** @type {*} */ +oli.CollectionEvent.prototype.element; + + /** * @interface */ diff --git a/src/ol/collection.exports b/src/ol/collection.exports index 5e00258f1b..afd0bd9b97 100644 --- a/src/ol/collection.exports +++ b/src/ol/collection.exports @@ -11,5 +11,3 @@ @exportProperty ol.Collection.prototype.remove @exportProperty ol.Collection.prototype.removeAt @exportProperty ol.Collection.prototype.setAt - -@exportProperty ol.CollectionEvent.prototype.getElement diff --git a/src/ol/collection.js b/src/ol/collection.js index 31f7259cef..4ef1849391 100644 --- a/src/ol/collection.js +++ b/src/ol/collection.js @@ -26,32 +26,24 @@ ol.CollectionEventType = { /** * @constructor * @extends {goog.events.Event} + * @implements {oli.CollectionEvent} * @param {ol.CollectionEventType} type Type. - * @param {*=} opt_elem Element. + * @param {*=} opt_element Element. * @param {Object=} opt_target Target. */ -ol.CollectionEvent = function(type, opt_elem, opt_target) { +ol.CollectionEvent = function(type, opt_element, opt_target) { goog.base(this, type, opt_target); /** - * @private * @type {*} */ - this.elem_ = opt_elem; + this.element = opt_element; }; goog.inherits(ol.CollectionEvent, goog.events.Event); -/** - * @return {*} The element to which this event pertains. - */ -ol.CollectionEvent.prototype.getElement = function() { - return this.elem_; -}; - - /** * @enum {string} */ diff --git a/src/ol/layer/layergroup.js b/src/ol/layer/layergroup.js index 0a0cf482e1..390cff2c0b 100644 --- a/src/ol/layer/layergroup.js +++ b/src/ol/layer/layergroup.js @@ -120,7 +120,7 @@ ol.layer.Group.prototype.handleLayersChanged_ = function(event) { * @private */ ol.layer.Group.prototype.handleLayersAdd_ = function(collectionEvent) { - var layer = /** @type {ol.layer.Base} */ (collectionEvent.getElement()); + var layer = /** @type {ol.layer.Base} */ (collectionEvent.element); this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen( layer, [ol.ObjectEventType.PROPERTYCHANGE, goog.events.EventType.CHANGE], this.handleLayerChange_, false, this); @@ -133,7 +133,7 @@ ol.layer.Group.prototype.handleLayersAdd_ = function(collectionEvent) { * @private */ ol.layer.Group.prototype.handleLayersRemove_ = function(collectionEvent) { - var layer = /** @type {ol.layer.Base} */ (collectionEvent.getElement()); + var layer = /** @type {ol.layer.Base} */ (collectionEvent.element); var key = goog.getUid(layer).toString(); goog.events.unlistenByKey(this.listenerKeys_[key]); delete this.listenerKeys_[key]; diff --git a/src/ol/render/featuresoverlay.js b/src/ol/render/featuresoverlay.js index 74e8fc058d..03bb17c95f 100644 --- a/src/ol/render/featuresoverlay.js +++ b/src/ol/render/featuresoverlay.js @@ -110,7 +110,7 @@ ol.render.FeaturesOverlay.prototype.handleFeatureChange_ = function() { ol.render.FeaturesOverlay.prototype.handleFeaturesAdd_ = function(collectionEvent) { goog.asserts.assert(!goog.isNull(this.featureChangeListenerKeys_)); - var feature = /** @type {ol.Feature} */ (collectionEvent.getElement()); + var feature = /** @type {ol.Feature} */ (collectionEvent.element); this.featureChangeListenerKeys_[goog.getUid(feature).toString()] = goog.events.listen(feature, goog.events.EventType.CHANGE, this.handleFeatureChange_, false, this); @@ -125,7 +125,7 @@ ol.render.FeaturesOverlay.prototype.handleFeaturesAdd_ = ol.render.FeaturesOverlay.prototype.handleFeaturesRemove_ = function(collectionEvent) { goog.asserts.assert(!goog.isNull(this.featureChangeListenerKeys_)); - var feature = /** @type {ol.Feature} */ (collectionEvent.getElement()); + var feature = /** @type {ol.Feature} */ (collectionEvent.element); var key = goog.getUid(feature).toString(); goog.events.unlistenByKey(this.featureChangeListenerKeys_[key]); delete this.featureChangeListenerKeys_[key]; diff --git a/test/spec/ol/collection.test.js b/test/spec/ol/collection.test.js index 82992d607f..a5d4922ff7 100644 --- a/test/spec/ol/collection.test.js +++ b/test/spec/ol/collection.test.js @@ -117,7 +117,7 @@ describe('ol.collection', function() { goog.events.listen(collection, ol.CollectionEventType.REMOVE, cb); expect(collection.remove(1)).to.eql(1); expect(cb).to.be.called(); - expect(cb.lastCall.args[0].getElement()).to.eql(1); + expect(cb.lastCall.args[0].element).to.eql(1); }); it('does not remove more than one matching element', function() { var collection = new ol.Collection([0, 1, 1, 2]); @@ -138,11 +138,11 @@ describe('ol.collection', function() { var collection = new ol.Collection(['a', 'b']); var added, removed; goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) { - added = e.getElement(); + added = e.element; }); goog.events.listen( collection, ol.CollectionEventType.REMOVE, function(e) { - removed = e.getElement(); + removed = e.element; }); collection.setAt(1, 1); expect(added).to.eql(1); @@ -156,7 +156,7 @@ describe('ol.collection', function() { var removed; goog.events.listen( collection, ol.CollectionEventType.REMOVE, function(e) { - removed = e.getElement(); + removed = e.element; }); collection.pop(); expect(removed).to.eql('a'); @@ -169,7 +169,7 @@ describe('ol.collection', function() { var added; goog.events.listen( collection, ol.CollectionEventType.ADD, function(e) { - added = e.getElement(); + added = e.element; }); collection.insertAt(1, 1); expect(added).to.eql(1); @@ -181,7 +181,7 @@ describe('ol.collection', function() { var added = []; goog.events.listen( collection, ol.CollectionEventType.ADD, function(e) { - added.push(e.getElement()); + added.push(e.element); }); collection.setAt(2, 0); expect(collection.getLength()).to.eql(3); @@ -230,7 +230,7 @@ describe('ol.collection', function() { var collection = new ol.Collection(); var elem; goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) { - elem = e.getElement(); + elem = e.element; }); collection.push(1); expect(elem).to.eql(1); @@ -249,15 +249,15 @@ describe('ol.collection', function() { goog.events.listen(collection, ol.CollectionEventType.ADD, cb1); goog.events.listen(collection, ol.CollectionEventType.REMOVE, cb2); collection.setAt(0, 2); - expect(cb2.lastCall.args[0].getElement()).to.eql(1); - expect(cb1.lastCall.args[0].getElement()).to.eql(2); + expect(cb2.lastCall.args[0].element).to.eql(1); + expect(cb1.lastCall.args[0].element).to.eql(2); }); }); describe('pop', function() { it('triggers remove', function() { goog.events.listen(collection, ol.CollectionEventType.REMOVE, cb1); collection.pop(); - expect(cb1.lastCall.args[0].getElement()).to.eql(1); + expect(cb1.lastCall.args[0].element).to.eql(1); }); }); }); @@ -274,7 +274,7 @@ describe('ol.collection', function() { var collection = new ol.Collection(); var elems = []; goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) { - elems.push(e.getElement()); + elems.push(e.element); }); collection.extend([1, 2]); expect(elems).to.eql([1, 2]); From 45350a34ed42251c698d0963dcbb11501ef9c2d1 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 23 Jan 2014 18:37:00 +0100 Subject: [PATCH 2/7] Convert ol.interaction.DragAndDropEvent#get* methods into properties --- examples/drag-and-drop-image-vector.js | 4 ++-- examples/drag-and-drop.js | 4 ++-- externs/oli.js | 13 +++++++++++ .../draganddropinteraction.exports | 3 --- src/ol/interaction/draganddropinteraction.js | 23 +++---------------- 5 files changed, 20 insertions(+), 27 deletions(-) diff --git a/examples/drag-and-drop-image-vector.js b/examples/drag-and-drop-image-vector.js index 9a6886af52..390771c1be 100644 --- a/examples/drag-and-drop-image-vector.js +++ b/examples/drag-and-drop-image-vector.js @@ -115,8 +115,8 @@ var map = new ol.Map({ dragAndDropInteraction.on('addfeatures', function(event) { var vectorSource = new ol.source.Vector({ - features: event.getFeatures(), - projection: event.getProjection() + features: event.features, + projection: event.projection }); map.getLayers().push(new ol.layer.Image({ source: new ol.source.ImageVector({ diff --git a/examples/drag-and-drop.js b/examples/drag-and-drop.js index 2c05bcee5d..b870d4efd7 100644 --- a/examples/drag-and-drop.js +++ b/examples/drag-and-drop.js @@ -114,8 +114,8 @@ var map = new ol.Map({ dragAndDropInteraction.on('addfeatures', function(event) { var vectorSource = new ol.source.Vector({ - features: event.getFeatures(), - projection: event.getProjection() + features: event.features, + projection: event.projection }); map.getLayers().push(new ol.layer.Vector({ source: vectorSource, diff --git a/externs/oli.js b/externs/oli.js index 6d8c5eeeb4..1e1b3ac78d 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -29,3 +29,16 @@ oli.control.Control = function() {}; * @return {undefined} Undefined. */ oli.control.Control.prototype.setMap = function(map) {}; + + + +/** @interface */ +oli.interaction.DragAndDropEvent = function() {}; + + +/** @type {Array.} */ +oli.interaction.DragAndDropEvent.prototype.features; + + +/** @type {ol.proj.Projection} */ +oli.interaction.DragAndDropEvent.prototype.projection; diff --git a/src/ol/interaction/draganddropinteraction.exports b/src/ol/interaction/draganddropinteraction.exports index 0e8bc5ea27..50e9fef9e3 100644 --- a/src/ol/interaction/draganddropinteraction.exports +++ b/src/ol/interaction/draganddropinteraction.exports @@ -1,4 +1 @@ @exportSymbol ol.interaction.DragAndDrop - -@exportProperty ol.interaction.DragAndDropEvent.prototype.getFeatures -@exportProperty ol.interaction.DragAndDropEvent.prototype.getProjection diff --git a/src/ol/interaction/draganddropinteraction.js b/src/ol/interaction/draganddropinteraction.js index c9cf155fee..77645850c8 100644 --- a/src/ol/interaction/draganddropinteraction.js +++ b/src/ol/interaction/draganddropinteraction.js @@ -183,6 +183,7 @@ ol.interaction.DragAndDropEventType = { /** * @constructor * @extends {goog.events.Event} + * @implements {oli.interaction.DragAndDropEvent} * @param {ol.interaction.DragAndDropEventType} type Type. * @param {Object=} opt_target Target. * @param {Array.=} opt_features Features. @@ -194,32 +195,14 @@ ol.interaction.DragAndDropEvent = goog.base(this, type, opt_target); /** - * @private * @type {Array.|undefined} */ - this.features_ = opt_features; + this.features = opt_features; /** - * @private * @type {ol.proj.Projection|undefined} */ - this.projection_ = opt_projection; + this.projection = opt_projection; }; goog.inherits(ol.interaction.DragAndDropEvent, goog.events.Event); - - -/** - * @return {Array.|undefined} Features. - */ -ol.interaction.DragAndDropEvent.prototype.getFeatures = function() { - return this.features_; -}; - - -/** - * @return {ol.proj.Projection|undefined} Projection. - */ -ol.interaction.DragAndDropEvent.prototype.getProjection = function() { - return this.projection_; -}; From 37351c530c5754fab56c720b34ab3777c43014b7 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 23 Jan 2014 20:03:39 +0100 Subject: [PATCH 3/7] Convert ol.ObjectEvent#getKey method into key property --- examples/device-orientation.js | 7 +++---- externs/oli.js | 9 +++++++++ src/ol/object.exports | 2 -- src/ol/object.js | 15 +++------------ test/spec/ol/object.test.js | 24 ++++++++++++------------ 5 files changed, 27 insertions(+), 30 deletions(-) diff --git a/examples/device-orientation.js b/examples/device-orientation.js index caf1f8cf98..657e9d041f 100644 --- a/examples/device-orientation.js +++ b/examples/device-orientation.js @@ -26,11 +26,10 @@ var track = new ol.dom.Input(document.getElementById('track')); track.bindTo('checked', deviceOrientation, 'tracking'); deviceOrientation.on('propertychange', function(event) { - // event.getKey() is the changed property name - var key = event.getKey(); - var element = document.getElementById(key); + // event.key is the changed property name + var element = document.getElementById(event.key); if (element) { - element.innerHTML = deviceOrientation.get(key); + element.innerHTML = deviceOrientation.get(event.key); } }); diff --git a/externs/oli.js b/externs/oli.js index 1e1b3ac78d..7b665ab63a 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -18,6 +18,15 @@ oli.CollectionEvent = function() {}; oli.CollectionEvent.prototype.element; +/** @interface */ +oli.ObjectEvent; + + +/** @type {string} */ +oli.ObjectEvent.prototype.key; + + + /** * @interface */ diff --git a/src/ol/object.exports b/src/ol/object.exports index dacc157656..89426170a5 100644 --- a/src/ol/object.exports +++ b/src/ol/object.exports @@ -7,5 +7,3 @@ @exportProperty ol.Object.prototype.setValues @exportProperty ol.Object.prototype.unbind @exportProperty ol.Object.prototype.unbindAll - -@exportProperty ol.ObjectEvent.prototype.getKey diff --git a/src/ol/object.js b/src/ol/object.js index 14edbb94c6..c8eacc40fb 100644 --- a/src/ol/object.js +++ b/src/ol/object.js @@ -33,6 +33,7 @@ ol.ObjectEventType = { * @param {string} type The event type. * @param {string} key The property name. * @extends {goog.events.Event} + * @implements {oli.ObjectEvent} * @constructor */ ol.ObjectEvent = function(type, key) { @@ -41,23 +42,13 @@ ol.ObjectEvent = function(type, key) { /** * The name of the property whose value is changing. * @type {string} - * @private */ - this.key_ = key; + this.key = key; }; goog.inherits(ol.ObjectEvent, goog.events.Event); -/** - * Get the name of the property associated with this event. - * @return {string} Object property name. - */ -ol.ObjectEvent.prototype.getKey = function() { - return this.key_; -}; - - /** * @constructor @@ -277,7 +268,7 @@ ol.Object.prototype.createBeforeChangeListener_ = function(key, targetKey) { * @this {ol.Object} */ return function(event) { - if (event.getKey() === targetKey) { + if (event.key === targetKey) { this.dispatchEvent( new ol.ObjectEvent(ol.ObjectEventType.BEFOREPROPERTYCHANGE, key)); } diff --git a/test/spec/ol/object.test.js b/test/spec/ol/object.test.js index f82bb37a9e..78938d8bbc 100644 --- a/test/spec/ol/object.test.js +++ b/test/spec/ol/object.test.js @@ -125,7 +125,7 @@ describe('ol.Object', function() { var args = listener2.firstCall.args; expect(args).to.have.length(1); var event = args[0]; - expect(event.getKey()).to.be('k'); + expect(event.key).to.be('k'); }); it('dispatches events to bound objects', function() { @@ -165,7 +165,7 @@ describe('ol.Object', function() { var args = listener2.firstCall.args; expect(args).to.have.length(1); var event = args[0]; - expect(event.getKey()).to.be('k'); + expect(event.key).to.be('k'); }); it('dispatches beforechange events to object', function() { @@ -173,7 +173,7 @@ describe('ol.Object', function() { var oldValue; var beforeListener = sinon.spy(function(event) { - oldValue = o2.get(event.getKey()); + oldValue = o2.get(event.key); }); o.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener); @@ -201,7 +201,7 @@ describe('ol.Object', function() { var args = listener2.firstCall.args; expect(args).to.have.length(1); var event = args[0]; - expect(event.getKey()).to.be('k'); + expect(event.key).to.be('k'); }); it('dispatches beforechange before changing bound objects', function() { @@ -209,7 +209,7 @@ describe('ol.Object', function() { var oldValue; var beforeListener = sinon.spy(function(event) { - oldValue = o2.get(event.getKey()); + oldValue = o2.get(event.key); }); o.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener); @@ -218,7 +218,7 @@ describe('ol.Object', function() { var args = beforeListener.firstCall.args; expect(args).to.have.length(1); var event = args[0]; - expect(event.getKey()).to.be('k'); + expect(event.key).to.be('k'); expect(oldValue).to.be(1); }); @@ -232,7 +232,7 @@ describe('ol.Object', function() { var oldValue; var beforeListener = sinon.spy(function(event) { - oldValue = object.get(event.getKey()); + oldValue = object.get(event.key); }); object.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener); @@ -241,7 +241,7 @@ describe('ol.Object', function() { var args = beforeListener.firstCall.args; expect(args).to.have.length(1); var event = args[0]; - expect(event.getKey()).to.be('foo'); + expect(event.key).to.be('foo'); expect(oldValue).to.be('original value'); expect(object.get('foo')).to.be('new value'); @@ -256,7 +256,7 @@ describe('ol.Object', function() { var oldValue; var beforeListener = sinon.spy(function(event) { - oldValue = object.get(event.getKey()); + oldValue = object.get(event.key); }); object.on(ol.ObjectEventType.BEFOREPROPERTYCHANGE, beforeListener); @@ -265,7 +265,7 @@ describe('ol.Object', function() { var args = beforeListener.firstCall.args; expect(args).to.have.length(1); var event = args[0]; - expect(event.getKey()).to.be('bar'); + expect(event.key).to.be('bar'); expect(oldValue).to.be('original value'); expect(object.get('bar')).to.be('new value'); @@ -365,7 +365,7 @@ describe('ol.Object', function() { expect(listener.calledOnce).to.be(true); var call = listener.firstCall; expect(call.args).to.have.length(1); - expect(call.args[0].getKey()).to.be('foo'); + expect(call.args[0].key).to.be('foo'); object.unbind('foo'); target.set('foo', 'another new value'); @@ -400,7 +400,7 @@ describe('ol.Object', function() { expect(listener.callCount).to.be(3); var lastCall = listener.getCall(2); expect(lastCall.args).to.have.length(1); - expect(lastCall.args[0].getKey()).to.be('bar'); + expect(lastCall.args[0].key).to.be('bar'); }); }); From df0912bdd3a9cbc562da9fd010c356ede165c436 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 23 Jan 2014 20:21:55 +0100 Subject: [PATCH 4/7] Convert ol.render.Event#get* methods into properties --- examples/dynamic-data.js | 4 +-- examples/export-map.js | 2 +- examples/igc.js | 2 +- examples/layer-clipping-webgl.js | 4 +-- examples/layer-clipping.js | 4 +-- examples/layer-spy.js | 4 +-- examples/layer-swipe.js | 4 +-- examples/synthetic-points.js | 2 +- externs/oli.js | 21 +++++++++++++++ src/ol/render/box.js | 2 +- src/ol/render/featuresoverlay.js | 4 +-- src/ol/render/renderevent.exports | 4 --- src/ol/render/renderevent.js | 45 ++++--------------------------- 13 files changed, 42 insertions(+), 60 deletions(-) delete mode 100644 src/ol/render/renderevent.exports diff --git a/examples/dynamic-data.js b/examples/dynamic-data.js index 31ec3cec8f..e66c23d3f4 100644 --- a/examples/dynamic-data.js +++ b/examples/dynamic-data.js @@ -35,8 +35,8 @@ var R = 7e6; var r = 2e6; var p = 2e6; map.on('postcompose', function(event) { - var render = event.getRender(); - var frameState = event.getFrameState(); + var render = event.render; + var frameState = event.frameState; var theta = 2 * Math.PI * frameState.time / omegaTheta; var coordinates = []; var i; diff --git a/examples/export-map.js b/examples/export-map.js index da7d50dc3f..21341fd7d6 100644 --- a/examples/export-map.js +++ b/examples/export-map.js @@ -24,7 +24,7 @@ var exportPNGElement = document.getElementById('export-png'); if ('download' in exportPNGElement) { exportPNGElement.addEventListener('click', function(e) { map.once('postcompose', function(event) { - var canvas = event.getContext().canvas; + var canvas = event.context.canvas; exportPNGElement.href = canvas.toDataURL('image/png'); }); map.render(); diff --git a/examples/igc.js b/examples/igc.js index 7811f693ef..e503cf2298 100644 --- a/examples/igc.js +++ b/examples/igc.js @@ -128,7 +128,7 @@ var strokeStyle = new ol.style.Stroke({ width: 1 }); map.on('postcompose', function(evt) { - var render = evt.getRender(); + var render = evt.render; if (point !== null) { render.setImageStyle(imageStyle); render.drawPointGeometry(point); diff --git a/examples/layer-clipping-webgl.js b/examples/layer-clipping-webgl.js index d493bfb644..bfea0b6932 100644 --- a/examples/layer-clipping-webgl.js +++ b/examples/layer-clipping-webgl.js @@ -41,7 +41,7 @@ if (!ol.BrowserFeature.HAS_WEBGL) { ].join(''); osm.on('precompose', function(event) { - var context = event.getGlContext(); + var context = event.glContext; var gl = context.getGL(); var program = gl.createProgram(); @@ -96,7 +96,7 @@ if (!ol.BrowserFeature.HAS_WEBGL) { }); osm.on('postcompose', function(event) { - var context = event.getGlContext(); + var context = event.glContext; var gl = context.getGL(); gl.disable(gl.STENCIL_TEST); }); diff --git a/examples/layer-clipping.js b/examples/layer-clipping.js index 237335be09..aeebe39437 100644 --- a/examples/layer-clipping.js +++ b/examples/layer-clipping.js @@ -19,7 +19,7 @@ var map = new ol.Map({ }); osm.on('precompose', function(event) { - var ctx = event.getContext(); + var ctx = event.context; ctx.save(); ctx.translate(ctx.canvas.width / 2, ctx.canvas.height / 2); ctx.scale(3, 3); @@ -37,6 +37,6 @@ osm.on('precompose', function(event) { }); osm.on('postcompose', function(event) { - var ctx = event.getContext(); + var ctx = event.context; ctx.restore(); }); diff --git a/examples/layer-spy.js b/examples/layer-spy.js index 7bc24dc4c6..fb282f7283 100644 --- a/examples/layer-spy.js +++ b/examples/layer-spy.js @@ -48,7 +48,7 @@ $(map.getViewport()).on('mousemove', function(evt) { // before rendering the layer, do some clipping imagery.on('precompose', function(event) { - var ctx = event.getContext(); + var ctx = event.context; ctx.save(); ctx.beginPath(); if (mousePosition) { @@ -63,6 +63,6 @@ imagery.on('precompose', function(event) { // after rendering the layer, restore the canvas context imagery.on('postcompose', function(event) { - var ctx = event.getContext(); + var ctx = event.context; ctx.restore(); }); diff --git a/examples/layer-swipe.js b/examples/layer-swipe.js index 87cce34fc7..821576afc5 100644 --- a/examples/layer-swipe.js +++ b/examples/layer-swipe.js @@ -28,7 +28,7 @@ var map = new ol.Map({ var swipe = document.getElementById('swipe'); bing.on('precompose', function(event) { - var ctx = event.getContext(); + var ctx = event.context; var width = ctx.canvas.width * (swipe.value / 100); ctx.save(); @@ -38,7 +38,7 @@ bing.on('precompose', function(event) { }); bing.on('postcompose', function(event) { - var ctx = event.getContext(); + var ctx = event.context; ctx.restore(); }); diff --git a/examples/synthetic-points.js b/examples/synthetic-points.js index 2ed6010a1d..671b5fa51a 100644 --- a/examples/synthetic-points.js +++ b/examples/synthetic-points.js @@ -114,7 +114,7 @@ var strokeStyle = new ol.style.Stroke({ width: 3 }); map.on('postcompose', function(evt) { - var render = evt.getRender(); + var render = evt.render; if (point !== null) { render.setImageStyle(imageStyle); render.drawPointGeometry(point); diff --git a/externs/oli.js b/externs/oli.js index 7b665ab63a..70ba0a7b0c 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -51,3 +51,24 @@ oli.interaction.DragAndDropEvent.prototype.features; /** @type {ol.proj.Projection} */ oli.interaction.DragAndDropEvent.prototype.projection; + + + +/** @interface */ +oli.render.Event = function() {}; + + +/** @type {CanvasRenderingContext2D|null|undefined} */ +oli.render.Event.prototype.context; + + +/** @type {ol.FrameState|undefined} */ +oli.render.Event.prototype.frameState; + + +/** @type {ol.webgl.Context|null|undefined} */ +oli.render.Event.prototype.glContext; + + +/** @type {ol.render.IRender|undefined} */ +oli.render.Event.prototype.render; diff --git a/src/ol/render/box.js b/src/ol/render/box.js index d21f4953b3..b0810c7c9e 100644 --- a/src/ol/render/box.js +++ b/src/ol/render/box.js @@ -100,7 +100,7 @@ ol.render.Box.prototype.handleMapPostCompose_ = function(event) { var style = this.style_; goog.asserts.assert(!goog.isNull(style)); // use drawAsync(Infinity) to draw above everything - event.getRender().drawAsync(Infinity, function(render) { + event.render.drawAsync(Infinity, function(render) { render.setFillStrokeStyle(style.getFill(), style.getStroke()); render.drawPolygonGeometry(geometry, null); }); diff --git a/src/ol/render/featuresoverlay.js b/src/ol/render/featuresoverlay.js index 03bb17c95f..727f242fb0 100644 --- a/src/ol/render/featuresoverlay.js +++ b/src/ol/render/featuresoverlay.js @@ -141,8 +141,8 @@ ol.render.FeaturesOverlay.prototype.handleMapPostCompose_ = function(event) { if (goog.isNull(this.features_) || !goog.isDef(this.styleFunction_)) { return; } - var resolution = event.getFrameState().view2DState.resolution; - var render = event.getRender(); + var resolution = event.frameState.view2DState.resolution; + var render = event.render; var i, ii, feature, styles; this.features_.forEach(function(feature) { styles = this.styleFunction_(feature, resolution); diff --git a/src/ol/render/renderevent.exports b/src/ol/render/renderevent.exports deleted file mode 100644 index bfb4403ea4..0000000000 --- a/src/ol/render/renderevent.exports +++ /dev/null @@ -1,4 +0,0 @@ -@exportProperty ol.render.Event.prototype.getContext -@exportProperty ol.render.Event.prototype.getFrameState -@exportProperty ol.render.Event.prototype.getGlContext -@exportProperty ol.render.Event.prototype.getRender diff --git a/src/ol/render/renderevent.js b/src/ol/render/renderevent.js index bfabfb1cae..7d95abf152 100644 --- a/src/ol/render/renderevent.js +++ b/src/ol/render/renderevent.js @@ -18,6 +18,7 @@ ol.render.EventType = { /** * @constructor * @extends {goog.events.Event} + * @implements {oli.render.Event} * @param {ol.render.EventType} type Type. * @param {Object=} opt_target Target. * @param {ol.render.IRender=} opt_render Render. @@ -33,59 +34,23 @@ ol.render.Event = function( /** * @type {ol.render.IRender|undefined} - * @private */ - this.render_ = opt_render; + this.render = opt_render; /** * @type {ol.FrameState|undefined} - * @private */ - this.frameState_ = opt_frameState; + this.frameState = opt_frameState; /** * @type {CanvasRenderingContext2D|null|undefined} - * @private */ - this.context_ = opt_context; + this.context = opt_context; /** * @type {ol.webgl.Context|null|undefined} - * @private */ - this.glContext_ = opt_glContext; + this.glContext = opt_glContext; }; goog.inherits(ol.render.Event, goog.events.Event); - - -/** - * @return {CanvasRenderingContext2D|null|undefined} Context. - */ -ol.render.Event.prototype.getContext = function() { - return this.context_; -}; - - -/** - * @return {ol.FrameState|undefined} Frame state. - */ -ol.render.Event.prototype.getFrameState = function() { - return this.frameState_; -}; - - -/** - * @return {ol.webgl.Context|null|undefined} GL context. - */ -ol.render.Event.prototype.getGlContext = function() { - return this.glContext_; -}; - - -/** - * @return {ol.render.IRender|undefined} Render. - */ -ol.render.Event.prototype.getRender = function() { - return this.render_; -}; From ec81a77cdb516f68b3f66311b1216965deac697d Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 23 Jan 2014 20:27:51 +0100 Subject: [PATCH 5/7] Convert ol.source.VectorEvent#getFeature method into feature property --- externs/oli.js | 9 +++++++++ src/ol/source/vectorsource.exports | 2 -- src/ol/source/vectorsource.js | 12 ++---------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/externs/oli.js b/externs/oli.js index 70ba0a7b0c..81bc3cd27a 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -72,3 +72,12 @@ oli.render.Event.prototype.glContext; /** @type {ol.render.IRender|undefined} */ oli.render.Event.prototype.render; + + + +/** @interface */ +oli.source.VectorEvent; + + +/** @type {ol.Feature} */ +oli.source.VectorEvent.prototype.feature; diff --git a/src/ol/source/vectorsource.exports b/src/ol/source/vectorsource.exports index a0aef2893b..6117cb3ec8 100644 --- a/src/ol/source/vectorsource.exports +++ b/src/ol/source/vectorsource.exports @@ -8,5 +8,3 @@ @exportProperty ol.source.Vector.prototype.getAllFeatures @exportProperty ol.source.Vector.prototype.getAllFeaturesAtCoordinate @exportProperty ol.source.Vector.prototype.removeFeature - -@exportProperty ol.source.VectorEvent.prototype.getFeature diff --git a/src/ol/source/vectorsource.js b/src/ol/source/vectorsource.js index b08834df8a..91b5b869a7 100644 --- a/src/ol/source/vectorsource.js +++ b/src/ol/source/vectorsource.js @@ -342,6 +342,7 @@ ol.source.Vector.prototype.removeFeatureInternal = function(feature) { /** * @constructor * @extends {goog.events.Event} + * @implements {oli.source.VectorEvent} * @param {string} type Type. * @param {ol.Feature=} opt_feature Feature. */ @@ -350,18 +351,9 @@ ol.source.VectorEvent = function(type, opt_feature) { goog.base(this, type); /** - * @private * @type {ol.Feature|undefined} */ - this.feature_ = opt_feature; + this.feature = opt_feature; }; goog.inherits(ol.source.VectorEvent, goog.events.Event); - - -/** - * @return {ol.Feature|undefined} Feature. - */ -ol.source.VectorEvent.prototype.getFeature = function() { - return this.feature_; -}; From 390b61762eabe2a93bc88e8ebd25bc62bfe92da5 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 23 Jan 2014 20:31:18 +0100 Subject: [PATCH 6/7] Convert ol.DrawEvent#getFeature method into feature property --- externs/oli.js | 9 +++++++++ src/ol/interaction/drawinteraction.exports | 2 -- src/ol/interaction/drawinteraction.js | 12 ++---------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/externs/oli.js b/externs/oli.js index 81bc3cd27a..a88d2f913a 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -18,6 +18,15 @@ oli.CollectionEvent = function() {}; oli.CollectionEvent.prototype.element; +/** @interface */ +oli.DrawEvent; + + +/** @type {ol.Feature} */ +oli.DrawEvent.prototype.feature; + + + /** @interface */ oli.ObjectEvent; diff --git a/src/ol/interaction/drawinteraction.exports b/src/ol/interaction/drawinteraction.exports index 5ebae98a99..890ae0f515 100644 --- a/src/ol/interaction/drawinteraction.exports +++ b/src/ol/interaction/drawinteraction.exports @@ -1,3 +1 @@ @exportSymbol ol.interaction.Draw - -@exportProperty ol.DrawEvent.prototype.getFeature diff --git a/src/ol/interaction/drawinteraction.js b/src/ol/interaction/drawinteraction.js index e0594c9d49..7702487b94 100644 --- a/src/ol/interaction/drawinteraction.js +++ b/src/ol/interaction/drawinteraction.js @@ -38,6 +38,7 @@ ol.DrawEventType = { /** * @constructor * @extends {goog.events.Event} + * @implements {oli.DrawEvent} * @param {ol.DrawEventType} type Type. * @param {ol.Feature} feature The feature drawn. */ @@ -46,23 +47,14 @@ ol.DrawEvent = function(type, feature) { goog.base(this, type); /** - * @private * @type {ol.Feature} */ - this.feature_ = feature; + this.feature = feature; }; goog.inherits(ol.DrawEvent, goog.events.Event); -/** - * @return {ol.Feature} The feature drawn to which this event pertains. - */ -ol.DrawEvent.prototype.getFeature = function() { - return this.feature_; -}; - - /** * Interaction that allows drawing geometries From 318fc6815901380bdc7c9d1921cb5a9cc1e6e2ff Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Mon, 27 Jan 2014 16:07:34 +0100 Subject: [PATCH 7/7] Convert ol.MapBrowserEvent#get* methods into properties --- examples/drag-and-drop-image-vector.js | 3 +- examples/drag-and-drop.js | 3 +- examples/gpx.js | 3 +- examples/icon.js | 2 +- examples/igc.js | 3 +- examples/image-vector-layer.js | 3 +- examples/kml-earthquakes.js | 2 +- examples/kml-timezones.js | 2 +- examples/kml.js | 3 +- examples/overlay.js | 2 +- examples/popup.js | 2 +- examples/synthetic-points.js | 3 +- examples/vector-layer.js | 3 +- externs/oli.js | 17 +++++++ .../interaction/doubleclickzoominteraction.js | 2 +- src/ol/interaction/dragboxinteraction.js | 8 +-- src/ol/interaction/draginteraction.js | 3 +- .../dragrotateandzoominteraction.js | 2 +- src/ol/interaction/dragrotateinteraction.js | 2 +- src/ol/interaction/drawinteraction.js | 10 ++-- .../interaction/mousewheelzoominteraction.js | 5 +- src/ol/interaction/touchinteraction.js | 2 +- src/ol/map.js | 2 +- src/ol/mapbrowserevent.exports | 3 -- src/ol/mapbrowserevent.js | 49 ++++--------------- test/spec/ol/mapbrowserevent.test.js | 37 ++++++++++++-- 26 files changed, 89 insertions(+), 87 deletions(-) diff --git a/examples/drag-and-drop-image-vector.js b/examples/drag-and-drop-image-vector.js index 390771c1be..be3d6833d5 100644 --- a/examples/drag-and-drop-image-vector.js +++ b/examples/drag-and-drop-image-vector.js @@ -151,6 +151,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var pixel = evt.getPixel(); - displayFeatureInfo(pixel); + displayFeatureInfo(evt.pixel); }); diff --git a/examples/drag-and-drop.js b/examples/drag-and-drop.js index b870d4efd7..5b123f0e82 100644 --- a/examples/drag-and-drop.js +++ b/examples/drag-and-drop.js @@ -148,6 +148,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var pixel = evt.getPixel(); - displayFeatureInfo(pixel); + displayFeatureInfo(evt.pixel); }); diff --git a/examples/gpx.js b/examples/gpx.js index 181f5b56a7..6e31964e30 100644 --- a/examples/gpx.js +++ b/examples/gpx.js @@ -89,6 +89,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var pixel = evt.getPixel(); - displayFeatureInfo(pixel); + displayFeatureInfo(evt.pixel); }); diff --git a/examples/icon.js b/examples/icon.js index 35b4da967f..7d1b3b4dfb 100644 --- a/examples/icon.js +++ b/examples/icon.js @@ -70,7 +70,7 @@ map.addOverlay(popup); // display popup on click map.on('singleclick', function(evt) { - var feature = map.forEachFeatureAtPixel(evt.getPixel(), + var feature = map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) { return feature; }); diff --git a/examples/igc.js b/examples/igc.js index e503cf2298..e8a2b049dd 100644 --- a/examples/igc.js +++ b/examples/igc.js @@ -111,8 +111,7 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var coordinate = evt.getCoordinate(); - displaySnap(coordinate); + displaySnap(evt.coordinate); }); var imageStyle = new ol.style.Circle({ diff --git a/examples/image-vector-layer.js b/examples/image-vector-layer.js index fbba2eb416..28bb6f2d32 100644 --- a/examples/image-vector-layer.js +++ b/examples/image-vector-layer.js @@ -95,6 +95,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var pixel = evt.getPixel(); - displayFeatureInfo(pixel); + displayFeatureInfo(evt.pixel); }); diff --git a/examples/kml-earthquakes.js b/examples/kml-earthquakes.js index 4098cc6de5..93668e6494 100644 --- a/examples/kml-earthquakes.js +++ b/examples/kml-earthquakes.js @@ -91,5 +91,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - displayFeatureInfo(evt.getPixel()); + displayFeatureInfo(evt.pixel); }); diff --git a/examples/kml-timezones.js b/examples/kml-timezones.js index 6ce3ad4228..d6e81dd025 100644 --- a/examples/kml-timezones.js +++ b/examples/kml-timezones.js @@ -97,5 +97,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - displayFeatureInfo(evt.getPixel()); + displayFeatureInfo(evt.pixel); }); diff --git a/examples/kml.js b/examples/kml.js index 0afc19cb22..3c43704bb0 100644 --- a/examples/kml.js +++ b/examples/kml.js @@ -55,6 +55,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var pixel = evt.getPixel(); - displayFeatureInfo(pixel); + displayFeatureInfo(evt.pixel); }); diff --git a/examples/overlay.js b/examples/overlay.js index fb62b58a55..17ccba9035 100644 --- a/examples/overlay.js +++ b/examples/overlay.js @@ -49,7 +49,7 @@ map.addOverlay(popup); map.on('singleclick', function(evt) { var element = popup.getElement(); - var coordinate = evt.getCoordinate(); + var coordinate = evt.coordinate; var hdms = ol.coordinate.toStringHDMS(ol.proj.transform( coordinate, 'EPSG:3857', 'EPSG:4326')); diff --git a/examples/popup.js b/examples/popup.js index 0c6a362153..050c679bcf 100644 --- a/examples/popup.js +++ b/examples/popup.js @@ -62,7 +62,7 @@ var map = new ol.Map({ * Add a click handler to the map to render the popup. */ map.on('singleclick', function(evt) { - var coordinate = evt.getCoordinate(); + var coordinate = evt.coordinate; var hdms = ol.coordinate.toStringHDMS(ol.proj.transform( coordinate, 'EPSG:3857', 'EPSG:4326')); diff --git a/examples/synthetic-points.js b/examples/synthetic-points.js index 671b5fa51a..ca199b1e18 100644 --- a/examples/synthetic-points.js +++ b/examples/synthetic-points.js @@ -97,8 +97,7 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var coordinate = evt.getCoordinate(); - displaySnap(coordinate); + displaySnap(evt.coordinate); }); var imageStyle = new ol.style.Circle({ diff --git a/examples/vector-layer.js b/examples/vector-layer.js index 3631e34c5a..737b37f3be 100644 --- a/examples/vector-layer.js +++ b/examples/vector-layer.js @@ -94,6 +94,5 @@ $(map.getViewport()).on('mousemove', function(evt) { }); map.on('singleclick', function(evt) { - var pixel = evt.getPixel(); - displayFeatureInfo(pixel); + displayFeatureInfo(evt.pixel); }); diff --git a/externs/oli.js b/externs/oli.js index a88d2f913a..0b2cda2bb8 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -36,6 +36,23 @@ oli.ObjectEvent.prototype.key; +/** @interface */ +oli.MapBrowserEvent; + + +/** @type {ol.Coordinate} */ +oli.MapBrowserEvent.prototype.coordinate; + + +/** @type {Event} */ +oli.MapBrowserEvent.prototype.originalEvent; + + +/** @type {ol.Pixel} */ +oli.MapBrowserEvent.prototype.pixel; + + + /** * @interface */ diff --git a/src/ol/interaction/doubleclickzoominteraction.js b/src/ol/interaction/doubleclickzoominteraction.js index ac4f7c9668..e5b019de33 100644 --- a/src/ol/interaction/doubleclickzoominteraction.js +++ b/src/ol/interaction/doubleclickzoominteraction.js @@ -48,7 +48,7 @@ ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent = var browserEvent = mapBrowserEvent.browserEvent; if (mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DBLCLICK) { var map = mapBrowserEvent.map; - var anchor = mapBrowserEvent.getCoordinate(); + var anchor = mapBrowserEvent.coordinate; var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_; // FIXME works for View2D only var view = map.getView().getView2D(); diff --git a/src/ol/interaction/dragboxinteraction.js b/src/ol/interaction/dragboxinteraction.js index e83e240867..44cdf04267 100644 --- a/src/ol/interaction/dragboxinteraction.js +++ b/src/ol/interaction/dragboxinteraction.js @@ -114,7 +114,7 @@ goog.inherits(ol.interaction.DragBox, ol.interaction.Drag); * @inheritDoc */ ol.interaction.DragBox.prototype.handleDrag = function(mapBrowserEvent) { - this.box_.setPixels(this.startPixel_, mapBrowserEvent.getPixel()); + this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel); }; @@ -144,7 +144,7 @@ ol.interaction.DragBox.prototype.handleDragEnd = ol.DRAG_BOX_HYSTERESIS_PIXELS_SQUARED) { this.onBoxEnd(mapBrowserEvent); this.dispatchEvent(new ol.DragBoxEvent(ol.DragBoxEventType.BOXEND, - mapBrowserEvent.getCoordinate())); + mapBrowserEvent.coordinate)); } }; @@ -156,11 +156,11 @@ ol.interaction.DragBox.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; if (browserEvent.isMouseActionButton() && this.condition_(mapBrowserEvent)) { - this.startPixel_ = mapBrowserEvent.getPixel(); + this.startPixel_ = mapBrowserEvent.pixel; this.box_.setMap(mapBrowserEvent.map); this.box_.setPixels(this.startPixel_, this.startPixel_); this.dispatchEvent(new ol.DragBoxEvent(ol.DragBoxEventType.BOXSTART, - mapBrowserEvent.getCoordinate())); + mapBrowserEvent.coordinate)); return true; } else { return false; diff --git a/src/ol/interaction/draginteraction.js b/src/ol/interaction/draginteraction.js index d78fde2b8d..1ed4480374 100644 --- a/src/ol/interaction/draginteraction.js +++ b/src/ol/interaction/draginteraction.js @@ -133,8 +133,7 @@ ol.interaction.Drag.prototype.handleMapBrowserEvent = this.deltaX = 0; this.deltaY = 0; this.startCenter = view2DState.center; - this.startCoordinate = /** @type {ol.Coordinate} */ - (mapBrowserEvent.getCoordinate()); + this.startCoordinate = mapBrowserEvent.coordinate; var handled = this.handleDragStart(mapBrowserEvent); if (handled) { this.dragging_ = true; diff --git a/src/ol/interaction/dragrotateandzoominteraction.js b/src/ol/interaction/dragrotateandzoominteraction.js index fdef314122..1607d84ea3 100644 --- a/src/ol/interaction/dragrotateandzoominteraction.js +++ b/src/ol/interaction/dragrotateandzoominteraction.js @@ -71,7 +71,7 @@ ol.interaction.DragRotateAndZoom.prototype.handleDrag = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var size = map.getSize(); - var offset = mapBrowserEvent.getPixel(); + var offset = mapBrowserEvent.pixel; var delta = new goog.math.Vec2( offset[0] - size[0] / 2, size[1] / 2 - offset[1]); diff --git a/src/ol/interaction/dragrotateinteraction.js b/src/ol/interaction/dragrotateinteraction.js index eceed9dfc6..218eddbf5b 100644 --- a/src/ol/interaction/dragrotateinteraction.js +++ b/src/ol/interaction/dragrotateinteraction.js @@ -52,7 +52,7 @@ goog.inherits(ol.interaction.DragRotate, ol.interaction.Drag); ol.interaction.DragRotate.prototype.handleDrag = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var size = map.getSize(); - var offset = mapBrowserEvent.getPixel(); + var offset = mapBrowserEvent.pixel; var theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2); if (goog.isDef(this.lastAngle_)) { diff --git a/src/ol/interaction/drawinteraction.js b/src/ol/interaction/drawinteraction.js index 7702487b94..89519b9227 100644 --- a/src/ol/interaction/drawinteraction.js +++ b/src/ol/interaction/drawinteraction.js @@ -253,7 +253,7 @@ ol.interaction.Draw.prototype.handleMapBrowserEvent = function(event) { */ ol.interaction.Draw.prototype.handleClick_ = function(event) { var downPx = event.map.getEventPixel(event.target.getDown()); - var clickPx = event.getPixel(); + var clickPx = event.pixel; var dx = downPx[0] - clickPx[0]; var dy = downPx[1] - clickPx[1]; var squaredDistance = dx * dx + dy * dy; @@ -316,7 +316,7 @@ ol.interaction.Draw.prototype.atFinish_ = function(event) { for (var i = 0, ii = potentiallyFinishCoordinates.length; i < ii; i++) { var finishCoordinate = potentiallyFinishCoordinates[i]; var finishPixel = map.getPixelFromCoordinate(finishCoordinate); - var pixel = event.getPixel(); + var pixel = event.pixel; var dx = pixel[0] - finishPixel[0]; var dy = pixel[1] - finishPixel[1]; at = Math.sqrt(dx * dx + dy * dy) <= this.snapTolerance_; @@ -337,7 +337,7 @@ ol.interaction.Draw.prototype.atFinish_ = function(event) { * @private */ ol.interaction.Draw.prototype.startDrawing_ = function(event) { - var start = event.getCoordinate(); + var start = event.coordinate; this.finishCoordinate_ = start; var geometry; if (this.mode_ === ol.interaction.DrawMode.POINT) { @@ -368,7 +368,7 @@ ol.interaction.Draw.prototype.startDrawing_ = function(event) { * @private */ ol.interaction.Draw.prototype.modifyDrawing_ = function(event) { - var coordinate = event.getCoordinate(); + var coordinate = event.coordinate; var geometry = this.sketchFeature_.getGeometry(); var coordinates, last; if (this.mode_ === ol.interaction.DrawMode.POINT) { @@ -416,7 +416,7 @@ ol.interaction.Draw.prototype.modifyDrawing_ = function(event) { * @private */ ol.interaction.Draw.prototype.addToDrawing_ = function(event) { - var coordinate = event.getCoordinate(); + var coordinate = event.coordinate; var geometry = this.sketchFeature_.getGeometry(); var coordinates, last; if (this.mode_ === ol.interaction.DrawMode.LINE_STRING) { diff --git a/src/ol/interaction/mousewheelzoominteraction.js b/src/ol/interaction/mousewheelzoominteraction.js index fb1c229ceb..034ca2a810 100644 --- a/src/ol/interaction/mousewheelzoominteraction.js +++ b/src/ol/interaction/mousewheelzoominteraction.js @@ -79,11 +79,10 @@ ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent = if (mapBrowserEvent.type == goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) { var map = mapBrowserEvent.map; - var mouseWheelEvent = /** @type {goog.events.MouseWheelEvent} */ - (mapBrowserEvent.browserEvent); + var mouseWheelEvent = mapBrowserEvent.browserEvent; goog.asserts.assertInstanceof(mouseWheelEvent, goog.events.MouseWheelEvent); - this.lastAnchor_ = mapBrowserEvent.getCoordinate(); + this.lastAnchor_ = mapBrowserEvent.coordinate; this.delta_ += mouseWheelEvent.deltaY / 3; if (!goog.isDef(this.startTime_)) { diff --git a/src/ol/interaction/touchinteraction.js b/src/ol/interaction/touchinteraction.js index 5ea3efab7f..3ad7d93fae 100644 --- a/src/ol/interaction/touchinteraction.js +++ b/src/ol/interaction/touchinteraction.js @@ -81,7 +81,7 @@ ol.interaction.Touch.isTouchEvent_ = function(mapBrowserEvent) { ol.interaction.Touch.prototype.updateTrackedTouches_ = function(mapBrowserEvent) { if (ol.interaction.Touch.isTouchEvent_(mapBrowserEvent)) { - var event = mapBrowserEvent.browserEvent.getBrowserEvent(); + var event = mapBrowserEvent.browserEvent; if (goog.isDef(event.targetTouches)) { // W3C touch events this.targetTouches = event.targetTouches; diff --git a/src/ol/map.js b/src/ol/map.js index dabfc3acf0..89f874014e 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -777,7 +777,7 @@ ol.Map.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { // coordinates so interactions cannot be used. return; } - this.focus_ = mapBrowserEvent.getCoordinate(); + this.focus_ = mapBrowserEvent.coordinate; mapBrowserEvent.frameState = this.frameState_; var interactions = this.getInteractions(); var interactionsArray = /** @type {Array.} */ diff --git a/src/ol/mapbrowserevent.exports b/src/ol/mapbrowserevent.exports index 500ecb1985..0ad1d2a276 100644 --- a/src/ol/mapbrowserevent.exports +++ b/src/ol/mapbrowserevent.exports @@ -1,5 +1,2 @@ -@exportProperty ol.MapBrowserEvent.prototype.getBrowserEvent -@exportProperty ol.MapBrowserEvent.prototype.getCoordinate -@exportProperty ol.MapBrowserEvent.prototype.getPixel @exportProperty ol.MapBrowserEvent.prototype.preventDefault @exportProperty ol.MapBrowserEvent.prototype.stopPropagation diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index e27ca0e9a8..bfd7088cd3 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -18,6 +18,7 @@ goog.require('ol.Pixel'); /** * @constructor * @extends {ol.MapEvent} + * @implements {oli.MapBrowserEvent} * @param {string} type Event type. * @param {ol.Map} map Map. * @param {goog.events.BrowserEvent} browserEvent Browser event. @@ -35,55 +36,25 @@ ol.MapBrowserEvent = function(type, map, browserEvent, opt_frameState) { this.browserEvent = browserEvent; /** - * @private - * @type {ol.Coordinate} + * @const + * @type {Event} */ - this.coordinate_ = null; + this.originalEvent = browserEvent.getBrowserEvent(); + + /** + * @type {ol.Coordinate} + */ + this.coordinate = map.getEventCoordinate(this.originalEvent); /** - * @private * @type {ol.Pixel} */ - this.pixel_ = null; + this.pixel = map.getEventPixel(this.originalEvent); }; goog.inherits(ol.MapBrowserEvent, ol.MapEvent); -/** - * @return {Event} The underlying browser event object. - */ -ol.MapBrowserEvent.prototype.getBrowserEvent = function() { - return this.browserEvent.getBrowserEvent(); -}; - - -/** - * @return {ol.Coordinate} Coordinate. - * @todo stability experimental - */ -ol.MapBrowserEvent.prototype.getCoordinate = function() { - if (goog.isNull(this.coordinate_)) { - this.coordinate_ = this.map.getEventCoordinate( - this.browserEvent.getBrowserEvent()); - } - return this.coordinate_; -}; - - -/** - * Get pixel offset of the event from the top-left corner of the map viewport. - * @return {ol.Pixel} Pixel offset. - * @todo stability experimental - */ -ol.MapBrowserEvent.prototype.getPixel = function() { - if (goog.isNull(this.pixel_)) { - this.pixel_ = this.map.getEventPixel(this.browserEvent.getBrowserEvent()); - } - return this.pixel_; -}; - - /** * Prevents the default browser action. * @see https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault diff --git a/test/spec/ol/mapbrowserevent.test.js b/test/spec/ol/mapbrowserevent.test.js index 6dde480390..67c13b5872 100644 --- a/test/spec/ol/mapbrowserevent.test.js +++ b/test/spec/ol/mapbrowserevent.test.js @@ -6,16 +6,21 @@ describe('ol.MapBrowserEventHandler', function() { var handler; var singleclickSpy; var dblclickSpy; + var target; beforeEach(function() { clock = sinon.useFakeTimers(); - handler = new ol.MapBrowserEventHandler(new ol.Map({})); + target = goog.dom.createElement(goog.dom.TagName.DIV); + handler = new ol.MapBrowserEventHandler(new ol.Map({ + target: target + })); singleclickSpy = sinon.spy(); goog.events.listen(handler, 'singleclick', singleclickSpy); dblclickSpy = sinon.spy(); goog.events.listen(handler, 'dblclick', dblclickSpy); + }); afterEach(function() { @@ -23,7 +28,12 @@ describe('ol.MapBrowserEventHandler', function() { }); it('emulates click', function() { - handler.emulateClick_(); + handler.emulateClick_(new goog.events.BrowserEvent({ + type: 'mousedown', + target: target, + clientX: 0, + clientY: 0 + })); expect(singleclickSpy.called).to.not.be.ok(); expect(dblclickSpy.called).to.not.be.ok(); @@ -31,17 +41,32 @@ describe('ol.MapBrowserEventHandler', function() { expect(singleclickSpy.calledOnce).to.be.ok(); expect(dblclickSpy.called).to.not.be.ok(); - handler.emulateClick_(); + handler.emulateClick_(new goog.events.BrowserEvent({ + type: 'mousedown', + target: target, + clientX: 0, + clientY: 0 + })); expect(singleclickSpy.calledOnce).to.be.ok(); expect(dblclickSpy.called).to.not.be.ok(); }); it('emulates dblclick', function() { - handler.emulateClick_(); + handler.emulateClick_({ + type: 'mousedown', + target: target, + clientX: 0, + clientY: 0 + }); expect(singleclickSpy.called).to.not.be.ok(); expect(dblclickSpy.called).to.not.be.ok(); - handler.emulateClick_(); + handler.emulateClick_(new goog.events.BrowserEvent({ + type: 'mousedown', + target: target, + clientX: 0, + clientY: 0 + })); expect(singleclickSpy.called).to.not.be.ok(); expect(dblclickSpy.calledOnce).to.be.ok(); @@ -84,6 +109,8 @@ describe('ol.MapBrowserEventHandler', function() { }); }); +goog.require('goog.dom'); +goog.require('goog.dom.TagName'); goog.require('goog.events'); goog.require('goog.events.BrowserEvent'); goog.require('ol.Map');