Skip to content

Commit 91641f9

Browse files
committed
Merge pull request #242 from bartvde/layertree
checkedGroup only seems to work with baseLayers
2 parents 20a14b4 + 1701fcb commit 91641f9

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/GeoExt/tree/LayerNode.js

+28
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ Ext.define('GeoExt.tree.LayerNode', {
5757
"visibilitychanged": this.onLayerVisibilityChanged,
5858
scope: this
5959
});
60+
this.enforceOneVisible();
6061
},
6162

6263
/**
@@ -109,6 +110,33 @@ Ext.define('GeoExt.tree.LayerNode', {
109110
}
110111
delete node._visibilityChanging;
111112
}
113+
this.enforceOneVisible();
114+
},
115+
116+
enforceOneVisible: function() {
117+
var attributes = this.target.data;
118+
var group = attributes.checkedGroup;
119+
// If we are in the baselayer group, the map will take care of
120+
// enforcing visibility.
121+
if(group && group !== "gx_baselayer") {
122+
var layer = this.target.get('layer');
123+
var checkedNodes = this.target.getOwnerTree().getChecked();
124+
var checkedCount = 0;
125+
// enforce "not more than one visible"
126+
Ext.each(checkedNodes, function(n){
127+
var l = n.data.layer;
128+
if(!n.data.hidden && n.data.checkedGroup === group) {
129+
checkedCount++;
130+
if(l != layer && attributes.checked) {
131+
l.setVisibility(false);
132+
}
133+
}
134+
});
135+
// enforce "at least one visible"
136+
if(checkedCount === 0 && attributes.checked == false) {
137+
layer.setVisibility(true);
138+
}
139+
}
112140
}
113141

114142
});

0 commit comments

Comments
 (0)