trigger an event when the layer's opacity change. r=elemoine (closes #2112)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@9616 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Frédéric Junod
2009-08-10 06:10:29 +00:00
parent c1a0d405e4
commit 2b9bd25530
3 changed files with 41 additions and 6 deletions

View File

@@ -1109,6 +1109,12 @@ OpenLayers.Layer = OpenLayers.Class({
OpenLayers.Util.modifyDOMElement(element, null, null, null,
null, null, null, opacity);
}
if (this.map != null) {
this.map.events.triggerEvent("changelayer", {
layer: this,
property: "opacity"
});
}
}
},

View File

@@ -61,12 +61,12 @@ OpenLayers.Map = OpenLayers.Class({
* - *removelayer* triggered after a layer has been removed. The event
* object will include a *layer* property that references the removed
* layer.
* - *changelayer* triggered after a layer name change, order change, or
* visibility change (due to resolution thresholds). Listeners will
* receive an event object with *layer* and *property* properties. The
* *layer* property will be a reference to the changed layer. The
* *property* property will be a key to the changed property (name,
* visibility, or order).
* - *changelayer* triggered after a layer name change, order change,
* opacity change or visibility change (due to resolution thresholds).
* Listeners will receive an event object with *layer* and *property*
* properties. The *layer* property will be a reference to the
* changed layer. The *property* property will be a key to the
* changed property (name, order, opacity or visibility).
* - *movestart* triggered after the start of a drag, pan, or zoom
* - *move* triggered after each drag, pan, or zoom
* - *moveend* triggered after a drag, pan, or zoom completes

View File

@@ -469,7 +469,36 @@
t.eq(hasBase, true, "when afterAdd is called, map has a base layer");
}
function test_setOpacity(t) {
t.plan(5);
var map, layer, log;
map = new OpenLayers.Map("map");
layer = new OpenLayers.Layer("");
map.addLayer(layer);
log = [];
map.events.register('changelayer', t, function(event) {
log.push({layer: event.layer, property: event.property});
});
layer.setOpacity(0.42);
t.eq(layer.opacity, 0.42,
"setOpacity() set layer.opacity to correct value");
t.eq(log.length, 1,
"setOpacity() triggers changelayer once");
t.ok(log[0].layer == layer,
"changelayer listener called with expected layer");
t.eq(log[0].property, "opacity",
"changelayer listener called with expected property");
// This call must not trig the event because the opacity value is the same.
log = [];
layer.setOpacity(0.42);
t.eq(log.length, 0,
"setOpacity() does not trigger changelayer if the opacity value is the same");
}
/******