[Commits] r946 - in apps/opengeo/geoexplorer/trunk/lib: . GeoExplorer

commits at geoext.org commits at geoext.org
Tue Jun 2 20:23:27 CEST 2009


Author: sbenthall
Date: 2009-06-02 20:23:27 +0200 (Tue, 02 Jun 2009)
New Revision: 946

Modified:
   apps/opengeo/geoexplorer/trunk/lib/GeoExplorer.js
   apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/GroupContainer.js
Log:
more background layer support--moving it from layer container to layer store event handlers in GeoExplorer


Modified: apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/GroupContainer.js
===================================================================
--- apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/GroupContainer.js	2009-06-02 16:58:11 UTC (rev 945)
+++ apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/GroupContainer.js	2009-06-02 18:23:27 UTC (rev 946)
@@ -29,35 +29,11 @@
      */
     addLayerNode: function(layerRecord) {
         if (layerRecord.get("background") == this.background) {
-            if(layerRecord.get("background")){
-                layer = layerRecord.get("layer");
-                
-                layer.events.on({
-                    "visibilitychanged" : this.backgroundChanged,
-                    scope: this
-                });
-            }
-            
             GeoExplorer.GroupContainer.superclass.addLayerNode.call(this,
                                                                     layerRecord);
         }
     },
     
-    backgroundChanged : function(evt){
-        var changedLayer = evt.object;
-
-        if(changedLayer.getVisibility()){
-            nodes = this.childNodes;
-
-            for(var i = 0; i < nodes.length; i++){
-                var layer = nodes[i].layer;
-                if(layer != changedLayer){
-                    layer.setVisibility(false);                    
-                }
-            }
-        }
-    },
-    
     /**
      * Method: removeLayerNode
      * Removes a child node representing an overlay layer of the map

Modified: apps/opengeo/geoexplorer/trunk/lib/GeoExplorer.js
===================================================================
--- apps/opengeo/geoexplorer/trunk/lib/GeoExplorer.js	2009-06-02 16:58:11 UTC (rev 945)
+++ apps/opengeo/geoexplorer/trunk/lib/GeoExplorer.js	2009-06-02 18:23:27 UTC (rev 946)
@@ -287,6 +287,51 @@
         // create layer store
         this.layers = this.mapPanel.layers;
 
+        var prepareBackground = function(store, records, index){
+ 
+           var backgroundChanged = function(evt){
+               var changedLayer = evt.object;
+                
+                if(changedLayer.getVisibility()){                    
+                    store.each(function(record){
+                        if(record.get("background") 
+                           && (record.get("layer") 
+                               != changedLayer)){
+                            record.get("layer").setVisibility(false);
+                        }
+                    });
+                } else {
+                    var visibleLayerIndex = store.findBy(function(record){
+                        return record.get("layer").getVisibility() 
+                            && record.get("background");
+                    })
+
+                    if(-1 == visibleLayerIndex){
+                        changedLayer.setVisibility(true);
+                    }
+                }
+            }
+            
+            var layer;
+            for(var i = 0; i < records.length; i++){
+                if(records[i].get("background")){
+                    layer = records[i].get("layer");
+                   
+                    layer.events.on({
+                        "visibilitychanged" : backgroundChanged
+                    });
+
+                    //to make sure only one visible background layer is set
+                    layer.events.triggerEvent("visibilitychanged");
+                }
+            }
+        };
+
+        this.layers.on({
+            "add" : prepareBackground,
+            scope: this
+        });
+                       
         var addLayerButton = new Ext.Button({
             tooltip : "Add Layers",
             disabled: true,
@@ -489,6 +534,7 @@
                 var id = store.find("name", conf.name);
                 
                 var record;
+                var base;
                 if (id >= 0) {
                     record = store.getAt(id).copy();
 
@@ -531,7 +577,7 @@
             }
             
             this.layers.add(records);
-            
+
             // set map center
             if(this.mapPanel.center) {
                 // zoom does not have to be defined



More information about the Commits mailing list