Separate add listener from method that adds index

This commit is contained in:
ahocevar
2013-11-09 15:09:06 +01:00
parent 292b851a74
commit ff17eb53d4

View File

@@ -69,11 +69,11 @@ goog.inherits(ol.interaction.Modify, ol.interaction.Drag);
/**
* @param {ol.layer.VectorLayerEventObject} evt Event object.
* @param {ol.layer.Vector} layer The vector layer.
* @param {Array.<ol.Feature>} features Array of features.
* @private
*/
ol.interaction.Modify.prototype.addIndex = function(evt) {
var layer = evt.target;
var features = evt.features;
ol.interaction.Modify.prototype.addIndex_ = function(layer, features) {
for (var i = 0, ii = features.length; i < ii; ++i) {
var feature = features[i];
var geometry = feature.getGeometry();
@@ -89,6 +89,16 @@ ol.interaction.Modify.prototype.addIndex = function(evt) {
};
/**
* Listen for feature additions.
* @param {ol.layer.VectorLayerEventObject} evt Event object.
* @private
*/
ol.interaction.Modify.prototype.handleFeaturesAdded_ = function(evt) {
this.addIndex_(evt.target, evt.features);
};
/**
* @param {ol.layer.Layer} layer Layer.
*/
@@ -104,11 +114,11 @@ ol.interaction.Modify.prototype.addLayer = function(layer) {
selectionLayer.addFeatures([vertexFeature]);
editData.vertexFeature = vertexFeature;
}
this.addIndex(/** @type {ol.layer.VectorLayerEventObject} */
({target: selectionLayer, features: goog.object.getValues(
selectionData.selectedFeaturesByFeatureUid)}));
this.addIndex_(selectionLayer,
goog.object.getValues(selectionData.selectedFeaturesByFeatureUid));
goog.events.listen(selectionLayer, ol.layer.VectorLayerEventType.ADD,
this.addIndex, false, this);
this.handleFeaturesAdded_, false, this);
goog.events.listen(selectionLayer, ol.layer.VectorLayerEventType.REMOVE,
this.removeIndex, false, this);
};
@@ -270,8 +280,10 @@ ol.interaction.Modify.prototype.handleMouseMove_ = function(evt) {
var layer = layers[i];
var selectionLayer = layer.getSelectionData().layer;
if (!goog.isNull(selectionLayer)) {
if (goog.isNull(goog.events.getListener(selectionLayer,
ol.layer.VectorLayerEventType.ADD, this.addIndex, false, this))) {
var listener = goog.events.getListener(selectionLayer,
ol.layer.VectorLayerEventType.ADD,
this.handleFeaturesAdded_, false, this);
if (goog.isNull(listener)) {
this.addLayer(layer);
}
var editData = selectionLayer.getEditData();