Changeset 292


Ignore:
Timestamp:
03/30/09 12:58:37 (8 years ago)
Author:
elemoine
Message:

LayerStore: use bind/unbind to enable/disable synchronization, r=tschaub (closes #30)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • core/trunk/geoext/lib/GeoExt/data/LayerStore.js

    r276 r292  
    6666        config.reader = config.reader ||
    6767                        new GeoExt.data.LayerReader({}, config.recordType);
     68        var map = config.map instanceof GeoExt.MapPanel ?
     69                  config.map.map : config.map;
     70        delete config.map;
    6871        arguments.callee.superclass.constructor.call(this, config);
    69         var map = config.map instanceof GeoExt.MapPanel ?
    70             config.map.map : config.map;
    7172        if(map) {
    7273            // create a snapshop of the map's layers
     
    7980            }
    8081
    81             this.setMap(map);
     82            this.bind(map);
    8283            config.layers && map.addLayers(config.layers);
    8384        }
    8485    },
    85    
    86     /**
    87      * APIMethod: setMap
    88      *
    89      * Parameters:
    90      * map - {OpenLayers.Map}
    91      */
    92     setMap: function(map) {
    93         this.map = map;
    94         map.events.on({
    95             "addlayer": this.onAddLayer,
    96             "removelayer": this.onRemoveLayer,
    97             scope: this
    98         });
    99         this.on({
    100             "add": this.onAdd,
    101             "remove": this.onRemove,
    102             scope: this
    103         });
    104     },
    105    
     86
     87    /**
     88     * APIMethod: bind
     89     * Bind this store to a map instance, once bound the store
     90     * is synchronized with the map and vice-versa.
     91     *
     92     * Parameters:
     93     * map - {OpenLayers.Map} The map instance.
     94     */
     95    bind: function(map) {
     96        if(!this.map) {
     97            this.map = map;
     98            map.events.on({
     99                "addlayer": this.onAddLayer,
     100                "removelayer": this.onRemoveLayer,
     101                scope: this
     102            });
     103            this.on({
     104                "add": this.onAdd,
     105                "remove": this.onRemove,
     106                scope: this
     107            });
     108        }
     109    },
     110
     111    /**
     112     * APIMethod: unbind
     113     * Unbind this store from the map it is currently bound.
     114     */
     115    unbind: function() {
     116        if(this.map) {
     117            this.map.events.un({
     118                "addlayer": this.onAddLayer,
     119                "removelayer": this.onRemoveLayer,
     120                scope: this
     121            });
     122            this.un({
     123                "add": this.onAdd,
     124                "remove": this.onRemove,
     125                scope: this
     126            });
     127            this.map = null;
     128        }
     129    },
     130   
    106131    /**
    107132     * Method: onAddLayer
Note: See TracChangeset for help on using the changeset viewer.