[Commits] r336 - sandbox/opengeo/geoexplorer/lib/GeoExt/widgets/tree
commits at geoext.org
commits at geoext.org
Thu Apr 2 23:36:19 CEST 2009
Author: tschaub
Date: 2009-04-02 23:36:19 +0200 (Thu, 02 Apr 2009)
New Revision: 336
Modified:
sandbox/opengeo/geoexplorer/lib/GeoExt/widgets/tree/LayerContainer.js
Log:
Respect layer order when adding to the container. (see #22)
Modified: sandbox/opengeo/geoexplorer/lib/GeoExt/widgets/tree/LayerContainer.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt/widgets/tree/LayerContainer.js 2009-04-02 20:53:30 UTC (rev 335)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt/widgets/tree/LayerContainer.js 2009-04-02 21:36:19 UTC (rev 336)
@@ -57,11 +57,13 @@
}
this.layerStore.each(function(record) {
this.addLayerNode(record);
- }, this)
+ }, this);
this.layerStore.on({
- "add": function(store, records, index){
+ "add": function(store, records, index) {
+ var nodeIndex = this.recordIndexToNodeIndex(index);
+ console.log(index, nodeIndex);
for(var i=0; i<records.length; ++i) {
- this.addLayerNode(records[i]);
+ this.addLayerNode(records[i], nodeIndex);
}
},
"remove": function(store, record, index) {
@@ -74,13 +76,40 @@
},
/**
+ * Method: recordIndexToNodeIndex
+ * Convert a record index into a child node index.
+ *
+ * Parameters:
+ * index - {Number} The record index in the layer store.
+ *
+ * Returns:
+ * {Number} The appropriate child node index for the record.
+ */
+ recordIndexToNodeIndex: function(index) {
+ var store = this.layerStore;
+ var count = store.getCount();
+ var nodeIndex = -1;
+ for(var i=count-1; i>=0; --i) {
+ if(store.getAt(i).get("layer").displayInLayerSwitcher) {
+ ++nodeIndex;
+ if(index === i) {
+ break;
+ }
+ }
+ };
+ return nodeIndex;
+ },
+
+ /**
* Method: addLayerNode
* Adds a child node representing a layer of the map
*
* Parameters:
* layerRecord - {Ext.data.Record} the layer record to add the layer for
+ * index - {Number} Optional index for the new layer. Default is 0.
*/
- addLayerNode: function(layerRecord) {
+ addLayerNode: function(layerRecord, index) {
+ index = index || 0;
var layer = layerRecord.get("layer");
if (layer.displayInLayerSwitcher == true) {
var node = new GeoExt.tree.LayerNode(Ext.applyIf({
@@ -88,7 +117,12 @@
layer: layer,
layerStore: this.layerStore
}, this.defaults));
- this.appendChild(node);
+ var sibling = this.item(index);
+ if(sibling) {
+ this.insertBefore(node, sibling);
+ } else {
+ this.appendChild(node);
+ }
}
},
More information about the Commits
mailing list