OpenLayers OpenLayers

Changeset 7085

Show
Ignore:
Timestamp:
05/07/08 07:05:27 (4 months ago)
Author:
elemoine
Message:

add patches attached #1535 and #1536

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/camptocamp/unhcr/lib/OpenLayers/Layer/Vector.js

    r7052 r7085  
    4646     *      object passed to listeners will have a *features* property with a 
    4747     *      reference to an array of added features. 
     48     *  - *beforefeatureremoved* Triggered before a feature is removed. Listeners 
     49     *      wll receive an object with a *feature* property referencing the 
     50     *      feature to be removed. 
     51     *  - *featureremoved* Triggerd after a feature is removed. The event 
     52     *      object passed to listeners will have a *feature* property with a 
     53     *      reference to the removed feature. 
     54     *  - *featuresremoved* Triggered after features are removed. The event 
     55     *      object passed to listeners will have a *features* property with a 
     56     *      reference to an array of removed features. 
    4857     *  - *featureselected* Triggered after a feature is selected.  Listeners 
    4958     *      will receive an object with a *feature* property referencing the 
     
    6271     *      the modified feature. 
    6372     */ 
    64     EVENT_TYPES: ["beforefeatureadded", "featureadded", 
    65                   "featuresadded", "featureselected", "featureunselected",  
     73    EVENT_TYPES: ["beforefeatureadded", "featureadded", "featuresadded", 
     74                  "beforefeatureremoved", "featureremoved", "featuresremoved", 
     75                  "featureselected", "featureunselected",  
    6676                  "beforefeaturemodified", "featuremodified", "afterfeaturemodified"], 
    6777 
     
    192202     */ 
    193203    destroy: function() { 
    194         OpenLayers.Layer.prototype.destroy.apply(this, arguments);   
    195  
    196204        this.destroyFeatures(); 
    197205        this.features = null; 
     
    203211        this.geometryType = null; 
    204212        this.drawn = null; 
     213        OpenLayers.Layer.prototype.destroy.apply(this, arguments);   
    205214    }, 
    206215 
     
    368377     * Parameters: 
    369378     * features - {Array(<OpenLayers.Feature.Vector>)}  
    370      */ 
    371     removeFeatures: function(features) { 
     379     * options - {Object} 
     380     */ 
     381    removeFeatures: function(features, options) { 
    372382        if (!(features instanceof Array)) { 
    373383            features = [features]; 
    374384        } 
     385        if (features.length <= 0) { 
     386            return; 
     387        } 
     388 
     389        var notify = !options || !options.silent; 
    375390 
    376391        for (var i = features.length - 1; i >= 0; i--) { 
    377392            var feature = features[i]; 
     393 
     394            if (notify) { 
     395                this.events.triggerEvent("beforefeatureremoved", { 
     396                    feature: feature 
     397                }); 
     398            } 
     399 
    378400            this.features = OpenLayers.Util.removeItem(this.features, feature); 
    379401 
     
    387409                OpenLayers.Util.removeItem(this.selectedFeatures, feature); 
    388410            } 
     411 
     412            if (notify) { 
     413                this.events.triggerEvent("featureremoved", { 
     414                    feature: feature 
     415                }); 
     416            } 
     417        } 
     418 
     419        if (notify) { 
     420            this.events.triggerEvent("featuresremoved", {features: features}); 
    389421        } 
    390422    }, 
  • sandbox/camptocamp/unhcr/tests/Layer/Vector.html

    r7052 r7085  
    6868 
    6969    function test_Layer_Vector_removeFeatures(t) { 
    70         t.plan(3); 
     70        t.plan(6); 
    7171     
    7272        var layer = new OpenLayers.Layer.Vector(name); 
     
    7676        var point2 = new OpenLayers.Geometry.Point(-111.14, 45.78); 
    7777        var pointFeature2 = new OpenLayers.Feature.Vector(layer, point2); 
    78          
     78       
    7979        layer.addFeatures([pointFeature1, pointFeature2]); 
    8080        var features = layer.removeFeatures([pointFeature1]); 
     
    8989        t.ok(layer.features.length == 0, 
    9090             "OpenLayers.Layer.Vector.removeFeatures(layer.features) removes all feature from the features array"); 
    91     } 
     91 
     92        // 3 tests 
     93        layer.events.register('beforefeatureremoved', null, function(obj) { 
     94            t.ok(pointFeature1 == obj.feature, 
     95                 "OpenLayers.Layer.Vector.removeFeatures triggers beforefeatureremoved with correct feature passed to callback"); 
     96        }); 
     97        layer.events.register('featureremoved', null, function(obj) { 
     98            t.ok(pointFeature1 == obj.feature, 
     99                 "OpenLayers.Layer.Vector.removeFeatures triggers featureremoved with correct feature passed to callback"); 
     100        }); 
     101        layer.events.register('featuresremoved', null, function(obj) { 
     102            t.ok(pointFeature1 == obj.features[0], 
     103                 "OpenLayers.Layer.Vector.removeFeatures triggers featuresremoved with correct features passed to callback"); 
     104        }); 
     105        layer.addFeatures([pointFeature1]); 
     106        layer.removeFeatures([pointFeature1]); 
     107 
     108        // 0 test 
     109        layer.events.register('beforefeatureremoved', null, function(obj) { 
     110            t.fail("OpenLayers.Layer.Vector.removeFeatures triggers beforefeatureremoved while it must not"); 
     111        }); 
     112        layer.events.register('featureremoved', null, function(obj) { 
     113            t.fail("OpenLayers.Layer.Vector.removeFeatures triggers featureremoved while it must not"); 
     114        }); 
     115        layer.events.register('featuresremoved', null, function(obj) { 
     116            t.fail("OpenLayers.Layer.Vector.removeFeatures triggers featuresremoved while it must not"); 
     117        }); 
     118        layer.addFeatures([pointFeature1]); 
     119        layer.removeFeatures([pointFeature1], {silent: true}); 
     120     } 
    92121     
    93122    function test_Layer_Vector_drawFeature(t) {