[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