From 9970eaff161bbdd8713d95e348bfd0a9b390225a Mon Sep 17 00:00:00 2001 From: crschmidt Date: Tue, 8 Sep 2009 13:06:15 +0000 Subject: [PATCH] add events to strategy.save: start, success, fail. r=elemoine, (Closes #1902) (It is possible Save may need extension for additional events; this should be a new ticket.) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9645 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Strategy/Save.js | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/OpenLayers/Strategy/Save.js b/lib/OpenLayers/Strategy/Save.js index 13664c39fa..5ca2b60fa1 100644 --- a/lib/OpenLayers/Strategy/Save.js +++ b/lib/OpenLayers/Strategy/Save.js @@ -18,6 +18,28 @@ */ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, { + /** + * Constant: EVENT_TYPES + * {Array(String)} Supported application event types. Register a listener + * for a particular event with the following syntax: + * (code) + * protocol.events.register(type, obj, listener); + * (end) + * + * - *start* Triggered before saving + * - *success* Triggered after a successful transaction + * - *fail* Triggered after a failed transaction + * + */ + EVENT_TYPES: ["start", "success", "fail"], + + /** + * Property: events + * {} Events instance for triggering this protocol + * events. + */ + events: null, + /** * APIProperty: auto * {Boolean | Number} Auto-save. Default is false. If true, features will be @@ -43,6 +65,7 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, { */ initialize: function(options) { OpenLayers.Strategy.prototype.initialize.apply(this, [options]); + this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES); }, /** @@ -131,6 +154,7 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, { if(!features) { features = this.layer.features; } + this.events.triggerEvent("start", {features:features}); var remote = this.layer.projection; var local = this.layer.map.getProjectionObject(); if(!local.equals(remote)) { @@ -162,6 +186,7 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, { * response - {} A response object. */ onCommit: function(response) { + var evt = {"response": response}; if(response.success()) { var features = response.reqFeatures; // deal with inserts, updates, and deletes @@ -184,11 +209,17 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, { feature.state = null; } } + if(destroys.length > 0) { this.layer.destroyFeatures(destroys); } + + this.events.triggerEvent("success", evt); + + } else { + this.events.triggerEvent("fail", evt); } - }, + }, CLASS_NAME: "OpenLayers.Strategy.Save" });