[Commits] r2246 - in core/trunk/geoext: lib/GeoExt/widgets tests/lib/GeoExt/widgets
commits at geoext.org
commits at geoext.org
Wed Jul 28 21:38:54 CEST 2010
Author: bartvde
Date: 2010-07-28 21:38:54 +0200 (Wed, 28 Jul 2010)
New Revision: 2246
Modified:
core/trunk/geoext/lib/GeoExt/widgets/LayerOpacitySlider.js
core/trunk/geoext/tests/lib/GeoExt/widgets/LayerOpacitySlider.html
Log:
LayerOpacitySlider should be able to change layer on the fly, r=fredj (closes #301)
Modified: core/trunk/geoext/lib/GeoExt/widgets/LayerOpacitySlider.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/LayerOpacitySlider.js 2010-07-27 07:20:50 UTC (rev 2245)
+++ core/trunk/geoext/lib/GeoExt/widgets/LayerOpacitySlider.js 2010-07-28 19:38:54 UTC (rev 2246)
@@ -133,34 +133,55 @@
*/
constructor: function(config) {
if (config.layer) {
- if (config.layer instanceof OpenLayers.Layer) {
- this.layer = config.layer;
- } else if (config.layer instanceof GeoExt.data.LayerRecord) {
- this.layer = config.layer.get('layer');
- }
-
- if (config.complementaryLayer instanceof OpenLayers.Layer) {
- this.complementaryLayer = config.complementaryLayer;
- } else if (config.complementaryLayer instanceof
- GeoExt.data.LayerRecord) {
- this.complementaryLayer =
- config.complementaryLayer.get('layer');
- }
-
- if (this.layer && this.layer.opacity !== null) {
- config.value = parseInt(
- this.layer.opacity * (this.maxValue - this.minValue)
- );
- } else if (config.value === undefined) {
- config.value = this.maxValue;
- }
-
+ this.layer = this.getLayer(config.layer);
+ this.complementaryLayer = this.getLayer(config.complementaryLayer);
+ config.value = (config.value !== undefined) ?
+ config.value : this.getOpacityValue(this.layer);
delete config.layer;
delete config.complementaryLayer;
}
GeoExt.LayerOpacitySlider.superclass.constructor.call(this, config);
},
+ /** api: method[setLayer]
+ * :param layer: ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
+ *
+ * Bind a new layer to the opacity slider.
+ */
+ setLayer: function(layer) {
+ this.layer = this.getLayer(layer);
+ this.setValue(this.getOpacityValue(layer));
+ },
+
+ /** private: method[getOpacityValue]
+ * :param layer: ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
+ * :return: ``Integer`` The opacity for the layer.
+ *
+ * Returns the opacity value for the layer.
+ */
+ getOpacityValue: function(layer) {
+ if (layer && layer.opacity !== null) {
+ return parseInt(layer.opacity * (this.maxValue - this.minValue));
+ } else {
+ return this.maxValue;
+ }
+ },
+
+ /** private: method[getLayer]
+ * :param layer: ``OpenLayers.Layer`` or :class:`GeoExt.data.LayerRecord`
+ * :return: ``OpenLayers.Layer`` The OpenLayers layer object
+ *
+ * Returns the OpenLayers layer object for a layer record or a plain layer
+ * object.
+ */
+ getLayer: function(layer) {
+ if (layer instanceof OpenLayers.Layer) {
+ return layer;
+ } else if (layer instanceof GeoExt.data.LayerRecord) {
+ return layer.get('layer');
+ }
+ },
+
/** private: method[initComponent]
* Initialize the component.
*/
Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/LayerOpacitySlider.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/LayerOpacitySlider.html 2010-07-27 07:20:50 UTC (rev 2245)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/LayerOpacitySlider.html 2010-07-28 19:38:54 UTC (rev 2246)
@@ -283,6 +283,24 @@
slider.destroy();
}
+
+ function test_setlayer(t) {
+ t.plan(2);
+ var layer1, layer2, slider;
+ layer1 = new OpenLayers.Layer("1");
+ layer1.setOpacity(0.3);
+ layer2 = new OpenLayers.Layer("2");
+ layer2.setOpacity(0.6);
+ slider = new GeoExt.LayerOpacitySlider({
+ renderTo: document.body,
+ value: 100
+ });
+ slider.setLayer(layer1);
+ t.eq(slider.getValue(), 30, "Opacity of first layer is used");
+ slider.setLayer(layer2);
+ t.eq(slider.getValue(), 60, "Opacity of second layer is used");
+ slider.destroy();
+ }
</script>
<body>
</body>
More information about the Commits
mailing list