diff --git a/externs/oli.js b/externs/oli.js index 3fd705bc78..7a951c1a2c 100644 --- a/externs/oli.js +++ b/externs/oli.js @@ -195,6 +195,9 @@ oli.interaction.DragAndDropEvent.prototype.features; oli.interaction.DragAndDropEvent.prototype.projection; +/** @type {File} */ +oli.interaction.DragAndDropEvent.prototype.file; + /** @interface */ oli.render.Event; diff --git a/src/ol/interaction/draganddropinteraction.js b/src/ol/interaction/draganddropinteraction.js index 3a8c5a911d..f2a62ba773 100644 --- a/src/ol/interaction/draganddropinteraction.js +++ b/src/ol/interaction/draganddropinteraction.js @@ -76,21 +76,23 @@ ol.interaction.DragAndDrop.prototype.disposeInternal = function() { */ ol.interaction.DragAndDrop.prototype.handleDrop_ = function(event) { var files = event.getBrowserEvent().dataTransfer.files; - var i, ii; + var i, ii, file; for (i = 0, ii = files.length; i < ii; ++i) { + file = files[i]; // The empty string param is a workaround for // https://code.google.com/p/closure-library/issues/detail?id=524 - var reader = goog.fs.FileReader.readAsText(files[i], ''); - reader.addCallback(this.handleResult_, this); + var reader = goog.fs.FileReader.readAsText(file, ''); + reader.addCallback(goog.partial(this.handleResult_, file), this); } }; /** + * @param {File} file File. * @param {string} result Result. * @private */ -ol.interaction.DragAndDrop.prototype.handleResult_ = function(result) { +ol.interaction.DragAndDrop.prototype.handleResult_ = function(file, result) { var map = this.getMap(); goog.asserts.assert(!goog.isNull(map)); var projection = this.reprojectTo_; @@ -123,8 +125,8 @@ ol.interaction.DragAndDrop.prototype.handleResult_ = function(result) { } this.dispatchEvent( new ol.interaction.DragAndDropEvent( - ol.interaction.DragAndDropEventType.ADD_FEATURES, this, features, - projection)); + ol.interaction.DragAndDropEventType.ADD_FEATURES, this, file, + features, projection)); }; @@ -192,14 +194,15 @@ ol.interaction.DragAndDropEventType = { * @extends {goog.events.Event} * @implements {oli.interaction.DragAndDropEvent} * @param {ol.interaction.DragAndDropEventType} type Type. - * @param {Object=} opt_target Target. + * @param {Object} target Target. + * @param {File} file File. * @param {Array.