Changeset 336


Ignore:
Timestamp:
04/02/09 23:36:19 (9 years ago)
Author:
tschaub
Message:

Respect layer order when adding to the container. (see #22)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/opengeo/geoexplorer/lib/GeoExt/widgets/tree/LayerContainer.js

    r333 r336  
    5858            this.layerStore.each(function(record) {
    5959                this.addLayerNode(record);
    60             }, this)
     60            }, this);
    6161            this.layerStore.on({
    62                 "add": function(store, records, index){
     62                "add": function(store, records, index) {
     63                    var nodeIndex = this.recordIndexToNodeIndex(index);
     64                    console.log(index, nodeIndex);
    6365                    for(var i=0; i<records.length; ++i) {
    64                         this.addLayerNode(records[i]);
     66                        this.addLayerNode(records[i], nodeIndex);
    6567                    }
    6668                },
     
    7577   
    7678    /**
     79     * Method: recordIndexToNodeIndex
     80     * Convert a record index into a child node index.
     81     *
     82     * Parameters:
     83     * index - {Number} The record index in the layer store.
     84     *
     85     * Returns:
     86     * {Number} The appropriate child node index for the record.
     87     */
     88    recordIndexToNodeIndex: function(index) {
     89        var store = this.layerStore;
     90        var count = store.getCount();
     91        var nodeIndex = -1;
     92        for(var i=count-1; i>=0; --i) {
     93            if(store.getAt(i).get("layer").displayInLayerSwitcher) {
     94                ++nodeIndex;
     95                if(index === i) {
     96                    break;
     97                }
     98            }
     99        };
     100        return nodeIndex;
     101    },
     102   
     103    /**
    77104     * Method: addLayerNode
    78105     * Adds a child node representing a layer of the map
     
    80107     * Parameters:
    81108     * layerRecord - {Ext.data.Record} the layer record to add the layer for
     109     * index - {Number} Optional index for the new layer.  Default is 0.
    82110     */
    83     addLayerNode: function(layerRecord) {
     111    addLayerNode: function(layerRecord, index) {
     112        index = index || 0;
    84113        var layer = layerRecord.get("layer");
    85114        if (layer.displayInLayerSwitcher == true) {
     
    89118                layerStore: this.layerStore
    90119            }, this.defaults));
    91             this.appendChild(node);
     120            var sibling = this.item(index);
     121            if(sibling) {
     122                this.insertBefore(node, sibling);
     123            } else {
     124                this.appendChild(node);
     125            }
    92126        }
    93127    },
Note: See TracChangeset for help on using the changeset viewer.