Adding a beforefeatureselected event to the vector layer events. If a listener returns false, the feature is not selected. The modify feature control now listens for beforefeatureselected and triggers beforefeaturemodified. If a listener returns false, feature modification never begins. r=elemione,ahocevar (closes #1427)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@7616 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2008-07-30 22:03:40 +00:00
parent 61c528f3af
commit 6897c8ed4d
5 changed files with 103 additions and 42 deletions

View File

@@ -201,6 +201,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
layer, selectOptions
);
this.layer.events.on({
"beforefeatureselected": this.beforeSelectFeature,
"featureselected": this.selectFeature,
"featureunselected": this.unselectFeature,
scope: this
@@ -239,6 +240,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
*/
destroy: function() {
this.layer.events.un({
"beforefeatureselected": this.beforeSelectFeature,
"featureselected": this.selectFeature,
"featureunselected": this.unselectFeature,
scope: this
@@ -287,6 +289,20 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
}
return deactivated;
},
/**
* Method: beforeSelectFeature
* Called before a feature is selected.
*
* Parameters:
* object - {Object} Object with a feature property referencing the
* selected feature.
*/
beforeSelectFeature: function(object) {
return this.layer.events.triggerEvent(
"beforefeaturemodified", {feature: object.feature}
);
},
/**
* Method: selectFeature
@@ -301,8 +317,6 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
this.resetVertices();
this.dragControl.activate();
this.onModificationStart(this.feature);
this.layer.events.triggerEvent("beforefeaturemodified",
{feature: this.feature});
},
/**