New eventListeners APIProperty for OpenLayers.Tile.

Same behavior as Map.eventListeners or Layer.eventListeners.
New listeners can be registered using the options parameter:

new OpenLayers.Tile.Image(layer, position, bounds, null, size, {
  eventListeners: {
    loadstart: function(evt) {
      // ...
    },
    loadend: function(evt) {
      // ...
    }
  }
});
This commit is contained in:
fredj
2012-02-01 11:47:12 +01:00
parent 742ada16bf
commit fc0152ea1e
2 changed files with 27 additions and 5 deletions

View File

@@ -38,6 +38,15 @@ OpenLayers.Tile = OpenLayers.Class({
*/
events: null,
/**
* APIProperty: eventListeners
* {Object} If set as an option at construction, the eventListeners
* object will be registered with <OpenLayers.Events.on>. Object
* structure must be a listeners object as shown in the example for
* the events.on method.
*/
eventListeners: null,
/**
* Property: id
* {String} null
@@ -109,10 +118,13 @@ OpenLayers.Tile = OpenLayers.Class({
//give the tile a unique id based on its BBOX.
this.id = OpenLayers.Util.createUniqueID("Tile_");
this.events = new OpenLayers.Events(this);
OpenLayers.Util.extend(this, options);
this.events = new OpenLayers.Events(this);
if (this.eventListeners instanceof Object) {
this.events.on(this.eventListeners);
}
},
/**
@@ -139,7 +151,11 @@ OpenLayers.Tile = OpenLayers.Class({
this.size = null;
this.position = null;
if (this.eventListeners) {
this.events.un(this.eventListeners);
}
this.events.destroy();
this.eventListeners = null;
this.events = null;
},

View File

@@ -22,7 +22,7 @@
function test_Tile_constructor (t) {
t.plan( 12 );
t.plan( 13 );
setUp();
@@ -33,7 +33,11 @@
var url = "bobob";
var size = new OpenLayers.Size(5,6);
tile = new OpenLayers.Tile(layer, position, bounds, url, size);
tile = new OpenLayers.Tile(layer, position, bounds, url, size, {
eventListeners: {
loadstart: OpenLayers.Function.False
}
});
t.ok(tile instanceof OpenLayers.Tile, "new OpenLayers.Tile returns Tile object");
t.ok(tile.layer === layer, "tile.layer set correctly");
@@ -48,7 +52,9 @@
t.ok(tile.id != null, "tile is given an id");
t.ok(OpenLayers.String.startsWith(tile.id, "Tile_"),
"tile's id starts correctly");
t.ok(tile.events != null, "tile's events intitialized");
t.ok(tile.events != null, "tile's events initialized");
t.ok(tile.events.listeners.loadstart.length == 1,
"tile's events initialized from eventListeners option");
tearDown();