[OpenLayers-Commits] r12384 - in trunk/openlayers: lib/OpenLayers
lib/OpenLayers/Control lib/OpenLayers/Layer
lib/OpenLayers/Marker lib/OpenLayers/Strategy tests
tests/Control tests/Layer
commits-20090109 at openlayers.org
commits-20090109 at openlayers.org
Sat Sep 17 15:09:42 EDT 2011
Author: fredj
Date: 2011-09-17 12:09:40 -0700 (Sat, 17 Sep 2011)
New Revision: 12384
Modified:
trunk/openlayers/lib/OpenLayers/Control.js
trunk/openlayers/lib/OpenLayers/Control/DrawFeature.js
trunk/openlayers/lib/OpenLayers/Control/Geolocate.js
trunk/openlayers/lib/OpenLayers/Control/GetFeature.js
trunk/openlayers/lib/OpenLayers/Control/Measure.js
trunk/openlayers/lib/OpenLayers/Control/SLDSelect.js
trunk/openlayers/lib/OpenLayers/Control/SelectFeature.js
trunk/openlayers/lib/OpenLayers/Control/Snapping.js
trunk/openlayers/lib/OpenLayers/Control/Split.js
trunk/openlayers/lib/OpenLayers/Control/TransformFeature.js
trunk/openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js
trunk/openlayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js
trunk/openlayers/lib/OpenLayers/Events.js
trunk/openlayers/lib/OpenLayers/Layer.js
trunk/openlayers/lib/OpenLayers/Layer/Vector.js
trunk/openlayers/lib/OpenLayers/Map.js
trunk/openlayers/lib/OpenLayers/Marker.js
trunk/openlayers/lib/OpenLayers/Marker/Box.js
trunk/openlayers/lib/OpenLayers/Request.js
trunk/openlayers/lib/OpenLayers/Strategy/Save.js
trunk/openlayers/lib/OpenLayers/Tile.js
trunk/openlayers/tests/Control/DrawFeature.html
trunk/openlayers/tests/Events.html
trunk/openlayers/tests/Layer/Grid.html
trunk/openlayers/tests/Layer/Text.html
Log:
remove event type list from Events (lazy listener initialization) p=tschaub,me r=erilem (closes #2555)
Modified: trunk/openlayers/lib/OpenLayers/Control/DrawFeature.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/DrawFeature.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/DrawFeature.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -32,12 +32,9 @@
callbacks: null,
/**
- * Constant: EVENT_TYPES
- *
* Supported event types:
* featureadded - Triggered when a feature is added
*/
- EVENT_TYPES: ["featureadded"],
/**
* APIProperty: multi
@@ -67,13 +64,6 @@
* options - {Object}
*/
initialize: function(layer, handler, options) {
-
- // concatenate events specific to vector with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.DrawFeature.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
-
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.callbacks = OpenLayers.Util.extend(
{
Modified: trunk/openlayers/lib/OpenLayers/Control/Geolocate.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/Geolocate.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/Geolocate.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -23,14 +23,12 @@
OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
/**
- * Constant: EVENT_TYPES
* Supported event types:
* - *locationupdated* Triggered when browser return a new position
* - *locationfailed* Triggered when geolocation has failed
* - *locationuncapable* Triggered when control is activated on a browser
* which doesn't support geolocation
*/
- EVENT_TYPES: ["locationupdated", "locationfailed", "locationuncapable"],
/**
* Property: geolocation
@@ -63,15 +61,6 @@
* Create a new control to deal with browser geolocation API
*
*/
- initialize: function(options) {
- // concatenate events specific to this control with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.Geolocate.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
- this.geolocationOptions = {};
- OpenLayers.Control.prototype.initialize.apply(this, [options]);
- },
/**
* Method: destroy
Modified: trunk/openlayers/lib/OpenLayers/Control/GetFeature.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/GetFeature.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/GetFeature.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -170,8 +170,6 @@
filterType: OpenLayers.Filter.Spatial.BBOX,
/**
- * Constant: EVENT_TYPES
- *
* Supported event types:
* beforefeatureselected - Triggered when <click> is true before a
* feature is selected. The event object has a feature property with
@@ -197,9 +195,6 @@
* outfeature - Triggered when <hover> is true and the mouse moves
* moved away from a hover-selected feature
*/
- EVENT_TYPES: ["featureselected", "featuresselected", "featureunselected",
- "clickout", "beforefeatureselected", "beforefeaturesselected",
- "hoverfeature", "outfeature"],
/**
* Constructor: OpenLayers.Control.GetFeature
@@ -211,12 +206,6 @@
* made)
*/
initialize: function(options) {
- // concatenate events specific to vector with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.GetFeature.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
-
options.handlerOptions = options.handlerOptions || {};
OpenLayers.Control.prototype.initialize.apply(this, [options]);
Modified: trunk/openlayers/lib/OpenLayers/Control/Measure.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/Measure.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/Measure.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -18,9 +18,7 @@
OpenLayers.Control.Measure = OpenLayers.Class(OpenLayers.Control, {
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* control.events.register(type, obj, listener);
* (end)
@@ -37,7 +35,6 @@
* measurement sketch is modified. Listeners receive an event with measure,
* units, order, and geometry.
*/
- EVENT_TYPES: ['measure', 'measurepartial'],
/**
* APIProperty: handlerOptions
@@ -120,11 +117,6 @@
* options - {Object}
*/
initialize: function(handler, options) {
- // concatenate events specific to measure with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.Measure.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
OpenLayers.Control.prototype.initialize.apply(this, [options]);
var callbacks = {done: this.measureComplete,
point: this.measurePartial};
Modified: trunk/openlayers/lib/OpenLayers/Control/SLDSelect.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/SLDSelect.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/SLDSelect.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -24,9 +24,7 @@
OpenLayers.Control.SLDSelect = OpenLayers.Class(OpenLayers.Control, {
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* control.events.register(type, obj, listener);
* (end)
@@ -41,7 +39,6 @@
* array of OpenLayers.Filter objects created in order to perform
* the particular selection.
*/
- EVENT_TYPES: ["selected"],
/**
* APIProperty: clearOnDeactivate
@@ -148,11 +145,6 @@
* selection on.
*/
initialize: function(handler, options) {
- // concatenate events specific to this control with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.SLDSelect.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.callbacks = OpenLayers.Util.extend({done: this.select,
Modified: trunk/openlayers/lib/OpenLayers/Control/SelectFeature.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/SelectFeature.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/SelectFeature.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -22,14 +22,11 @@
OpenLayers.Control.SelectFeature = OpenLayers.Class(OpenLayers.Control, {
/**
- * Constant: EVENT_TYPES
- *
* Supported event types:
* - *beforefeaturehighlighted* Triggered before a feature is highlighted
* - *featurehighlighted* Triggered when a feature is highlighted
* - *featureunhighlighted* Triggered when a feature is unhighlighted
*/
- EVENT_TYPES: ["beforefeaturehighlighted", "featurehighlighted", "featureunhighlighted"],
/**
* Property: multipleKey
@@ -173,11 +170,6 @@
* options - {Object}
*/
initialize: function(layers, options) {
- // concatenate events specific to this control with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.SelectFeature.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
OpenLayers.Control.prototype.initialize.apply(this, [options]);
if(this.scope === null) {
Modified: trunk/openlayers/lib/OpenLayers/Control/Snapping.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/Snapping.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/Snapping.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -18,9 +18,7 @@
OpenLayers.Control.Snapping = OpenLayers.Class(OpenLayers.Control, {
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* control.events.register(type, obj, listener);
* (end)
@@ -45,7 +43,6 @@
* unsnap - Triggered when a vertex is unsnapped. Listeners receive an
* event with a *point* property.
*/
- EVENT_TYPES: ["beforesnap", "snap", "unsnap"],
/**
* CONSTANT: DEFAULTS
@@ -175,10 +172,6 @@
* no maximum resolution limit.
*/
initialize: function(options) {
- // concatenate events specific to measure with those from the base
- Array.prototype.push.apply(
- this.EVENT_TYPES, OpenLayers.Control.prototype.EVENT_TYPES
- );
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.options = options || {}; // TODO: this could be done by the super
Modified: trunk/openlayers/lib/OpenLayers/Control/Split.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/Split.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/Split.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -19,9 +19,7 @@
OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, {
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* control.events.register(type, obj, listener);
* (end)
@@ -47,7 +45,6 @@
* sketch or modified feature used as a splitter. The features
* property is a list of all resulting features.
*/
- EVENT_TYPES: ["beforesplit", "split", "aftersplit"],
/**
* APIProperty: layer
@@ -169,10 +166,6 @@
* splitting.
*/
initialize: function(options) {
- // concatenate events specific to measure with those from the base
- Array.prototype.push.apply(
- this.EVENT_TYPES, OpenLayers.Control.prototype.EVENT_TYPES
- );
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.options = options || {}; // TODO: this could be done by the super
Modified: trunk/openlayers/lib/OpenLayers/Control/TransformFeature.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/TransformFeature.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/TransformFeature.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -22,8 +22,6 @@
OpenLayers.Control.TransformFeature = OpenLayers.Class(OpenLayers.Control, {
/**
- * Constant: EVENT_TYPES
- *
* Supported event types:
* - *beforesetfeature* Triggered before a feature is set for
* tranformation. The feature will not be set if a listener returns
@@ -51,8 +49,6 @@
* - *transformcomplete* Triggered after dragging. Listeners receive
* an event object with the transformed *feature*.
*/
- EVENT_TYPES: ["beforesetfeature", "setfeature", "beforetransform",
- "transform", "transformcomplete"],
/**
* APIProperty: geometryTypes
@@ -181,11 +177,6 @@
* control.
*/
initialize: function(layer, options) {
- // concatenate events specific to this control with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.TransformFeature.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
OpenLayers.Control.prototype.initialize.apply(this, [options]);
this.layer = layer;
Modified: trunk/openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -155,8 +155,6 @@
hoverRequest: null,
/**
- * Constant: EVENT_TYPES
- *
* Supported event types (in addition to those from <OpenLayers.Control>):
* beforegetfeatureinfo - Triggered before the request is sent.
* The event object has an *xy* property with the position of the
@@ -172,7 +170,6 @@
* layers, *text* and *request* will only contain the response body
* and request object of the last request.
*/
- EVENT_TYPES: ["beforegetfeatureinfo", "nogetfeatureinfo", "getfeatureinfo"],
/**
* Constructor: <OpenLayers.Control.WMSGetFeatureInfo>
@@ -181,12 +178,6 @@
* options - {Object}
*/
initialize: function(options) {
- // concatenate events specific to vector with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.WMSGetFeatureInfo.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
-
options = options || {};
options.handlerOptions = options.handlerOptions || {};
Modified: trunk/openlayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -136,8 +136,6 @@
hoverRequest: null,
/**
- * Constant: EVENT_TYPES
- *
* Supported event types (in addition to those from <OpenLayers.Control>):
* beforegetfeatureinfo - Triggered before each request is sent.
* The event object has an *xy* property with the position of the
@@ -157,7 +155,6 @@
* an event with *request*, *xy*, and *layer* properties. In the case
* of a parsing error, the event will also contain an *error* property.
*/
- EVENT_TYPES: ["beforegetfeatureinfo", "getfeatureinfo", "exception"],
/**
* Property: pending
@@ -172,12 +169,6 @@
* options - {Object}
*/
initialize: function(options) {
- // concatenate events specific to vector with those from the base
- this.EVENT_TYPES =
- OpenLayers.Control.WMTSGetFeatureInfo.prototype.EVENT_TYPES.concat(
- OpenLayers.Control.prototype.EVENT_TYPES
- );
-
options = options || {};
options.handlerOptions = options.handlerOptions || {};
Modified: trunk/openlayers/lib/OpenLayers/Control.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Control.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Control.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -145,9 +145,7 @@
events: null,
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* control.events.register(type, obj, listener);
* (end)
@@ -165,7 +163,6 @@
* activate - Triggered when activated.
* deactivate - Triggered when deactivated.
*/
- EVENT_TYPES: ["activate", "deactivate"],
/**
* Constructor: OpenLayers.Control
@@ -187,7 +184,7 @@
OpenLayers.Util.extend(this, options);
- this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES);
+ this.events = new OpenLayers.Events(this);
if(this.eventListeners instanceof Object) {
this.events.on(this.eventListeners);
}
Modified: trunk/openlayers/lib/OpenLayers/Events.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Events.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Events.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -420,12 +420,6 @@
element: null,
/**
- * Property: eventTypes
- * {Array(String)} list of support application events
- */
- eventTypes: null,
-
- /**
* Property: eventHandler
* {Function} bound event handler attached to elements
*/
@@ -480,7 +474,9 @@
* Parameters:
* object - {Object} The js object to which this Events object is being added
* element - {DOMElement} A dom element to respond to browser events
- * eventTypes - {Array(String)} Array of custom application events
+ * eventTypes - {Array(String)} Deprecated. Array of custom application
+ * events. A listener may be registered for any named event, regardless
+ * of the values provided here.
* fallThrough - {Boolean} Allow events to fall through after these have
* been handled?
* options - {Object} Options for the events object.
@@ -490,30 +486,20 @@
this.object = object;
this.fallThrough = fallThrough;
this.listeners = {};
-
- // keep a bound copy of handleBrowserEvent() so that we can
- // pass the same function to both Event.observe() and .stopObserving()
- this.eventHandler = OpenLayers.Function.bindAsEventListener(
- this.handleBrowserEvent, this
- );
- // to be used with observe and stopObserving
- this.clearMouseListener = OpenLayers.Function.bind(
- this.clearMouseCache, this
- );
-
- // if eventTypes is specified, create a listeners list for each
- // custom application event.
- this.eventTypes = [];
- if (eventTypes != null) {
- for (var i=0, len=eventTypes.length; i<len; i++) {
- this.addEventType(eventTypes[i]);
- }
- }
-
// if a dom element is specified, add a listeners list
// for browser events on the element and register them
if (element != null) {
+ // keep a bound copy of handleBrowserEvent() so that we can
+ // pass the same function to both Event.observe() and .stopObserving()
+ this.eventHandler = OpenLayers.Function.bindAsEventListener(
+ this.handleBrowserEvent, this
+ );
+
+ // to be used with observe and stopObserving
+ this.clearMouseListener = OpenLayers.Function.bind(
+ this.clearMouseCache, this
+ );
this.attachToElement(element);
}
},
@@ -534,24 +520,18 @@
this.listeners = null;
this.object = null;
- this.eventTypes = null;
this.fallThrough = null;
this.eventHandler = null;
},
/**
* APIMethod: addEventType
- * Add a new event type to this events object.
- * If the event type has already been added, do nothing.
+ * Deprecated. Any event can be triggered without adding it first.
*
* Parameters:
* eventName - {String}
*/
addEventType: function(eventName) {
- if (!this.listeners[eventName]) {
- this.eventTypes.push(eventName);
- this.listeners[eventName] = [];
- }
},
/**
@@ -565,15 +545,11 @@
OpenLayers.Event.stopObservingElement(this.element);
}
this.element = element;
- for (var i=0, len=this.BROWSER_EVENTS.length; i<len; i++) {
- var eventType = this.BROWSER_EVENTS[i];
-
- // every browser event has a corresponding application event
- // (whether it's listened for or not).
- this.addEventType(eventType);
-
- // use Prototype to register the event cross-browser
- OpenLayers.Event.observe(element, eventType, this.eventHandler);
+ for (var i = 0, len = this.BROWSER_EVENTS.length; i < len; i++) {
+ // register the event cross-browser
+ OpenLayers.Event.observe(
+ element, this.BROWSER_EVENTS[i], this.eventHandler
+ );
}
// disable dragstart in IE so that mousedown/move/up works normally
OpenLayers.Event.observe(element, "dragstart", OpenLayers.Event.stop);
@@ -610,7 +586,7 @@
*/
on: function(object) {
for(var type in object) {
- if(type != "scope") {
+ if(type != "scope" && object.hasOwnProperty(type)) {
this.register(type, object.scope, object[type]);
}
}
@@ -640,19 +616,24 @@
* 'object' property.
* func - {Function} The callback function. If no callback is
* specified, this function does nothing.
- *
- *
+ * priority - {Boolean} If true, adds the new listener to the *front* of
+ * the events queue instead of to the end.
*/
- register: function (type, obj, func) {
-
- if ( (func != null) &&
- (OpenLayers.Util.indexOf(this.eventTypes, type) != -1) ) {
-
+ register: function (type, obj, func, priority) {
+ if (func != null) {
if (obj == null) {
obj = this.object;
}
var listeners = this.listeners[type];
- listeners.push( {obj: obj, func: func} );
+ if (!listeners) {
+ listeners = [];
+ this.listeners[type] = listeners;
+ }
+ if (priority) {
+ listeners.unshift({obj: obj, func: func});
+ } else {
+ listeners.push({obj: obj, func: func});
+ }
}
},
@@ -674,16 +655,7 @@
* specified, this function does nothing.
*/
registerPriority: function (type, obj, func) {
-
- if (func != null) {
- if (obj == null) {
- obj = this.object;
- }
- var listeners = this.listeners[type];
- if (listeners != null) {
- listeners.unshift( {obj: obj, func: func} );
- }
- }
+ this.register(type, obj, func, true);
},
/**
@@ -714,7 +686,7 @@
*/
un: function(object) {
for(var type in object) {
- if(type != "scope") {
+ if(type != "scope" && object.hasOwnProperty(type)) {
this.unregister(type, object.scope, object[type]);
}
}
Modified: trunk/openlayers/lib/OpenLayers/Layer/Vector.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Layer/Vector.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Layer/Vector.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -24,9 +24,7 @@
OpenLayers.Layer.Vector = OpenLayers.Class(OpenLayers.Layer, {
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* layer.events.register(type, obj, listener);
* (end)
@@ -111,13 +109,6 @@
* refresh - Triggered when something wants a strategy to ask the protocol
* for a new set of features.
*/
- EVENT_TYPES: ["beforefeatureadded", "beforefeaturesadded",
- "featureadded", "featuresadded", "beforefeatureremoved",
- "beforefeaturesremoved", "featureremoved", "featuresremoved",
- "beforefeatureselected", "featureselected", "featureunselected",
- "beforefeaturemodified", "featuremodified", "afterfeaturemodified",
- "vertexmodified", "vertexremoved", "sketchstarted",
- "sketchmodified", "sketchcomplete", "refresh"],
/**
* APIProperty: isBaseLayer
@@ -240,13 +231,6 @@
* {<OpenLayers.Layer.Vector>} A new vector layer
*/
initialize: function(name, options) {
-
- // concatenate events specific to vector with those from the base
- this.EVENT_TYPES =
- OpenLayers.Layer.Vector.prototype.EVENT_TYPES.concat(
- OpenLayers.Layer.prototype.EVENT_TYPES
- );
-
OpenLayers.Layer.prototype.initialize.apply(this, arguments);
// allow user-set renderer, otherwise assign one
Modified: trunk/openlayers/lib/OpenLayers/Layer.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Layer.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Layer.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -58,9 +58,7 @@
alwaysInRange: null,
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* layer.events.register(type, obj, listener);
* (end)
@@ -89,8 +87,6 @@
* will receive an object with a *map* property referencing the map and
* a *layer* property referencing the layer.
*/
- EVENT_TYPES: ["loadstart", "loadend", "loadcancel", "visibilitychanged",
- "move", "moveend", "added", "removed"],
/**
* Constant: RESOLUTION_PROPERTIES
@@ -351,8 +347,7 @@
this.div.style.height = "100%";
this.div.dir = "ltr";
- this.events = new OpenLayers.Events(this, this.div,
- this.EVENT_TYPES);
+ this.events = new OpenLayers.Events(this, this.div);
if(this.eventListeners instanceof Object) {
this.events.on(this.eventListeners);
}
Modified: trunk/openlayers/lib/OpenLayers/Map.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Map.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Map.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -36,9 +36,7 @@
},
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* map.events.register(type, obj, listener);
* (end)
@@ -85,13 +83,6 @@
* - *mousemove* triggered after mousemove the map
* - *changebaselayer* triggered after the base layer changes
*/
- EVENT_TYPES: [
- "preaddlayer", "addlayer","preremovelayer", "removelayer",
- "changelayer", "movestart",
- "move", "moveend", "zoomend", "popupopen", "popupclose",
- "addmarker", "removemarker", "clearmarkers", "mouseover",
- "mouseout", "mousemove", "dragstart", "drag", "dragend",
- "changebaselayer"],
/**
* Property: id
@@ -538,7 +529,7 @@
this.viewPortDiv.appendChild(eventsDiv);
this.eventsDiv = eventsDiv;
this.events = new OpenLayers.Events(
- this, this.eventsDiv, this.EVENT_TYPES, this.fallThrough,
+ this, this.eventsDiv, null, this.fallThrough,
{includeXY: true}
);
Modified: trunk/openlayers/lib/OpenLayers/Marker/Box.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Marker/Box.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Marker/Box.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -40,7 +40,7 @@
this.bounds = bounds;
this.div = OpenLayers.Util.createDiv();
this.div.style.overflow = 'hidden';
- this.events = new OpenLayers.Events(this, this.div, null);
+ this.events = new OpenLayers.Events(this, this.div);
this.setBorder(borderColor, borderWidth);
},
Modified: trunk/openlayers/lib/OpenLayers/Marker.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Marker.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Marker.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -80,7 +80,7 @@
this.icon.offset = newIcon.offset;
this.icon.calculateOffset = newIcon.calculateOffset;
}
- this.events = new OpenLayers.Events(this, this.icon.imageDiv, null);
+ this.events = new OpenLayers.Events(this, this.icon.imageDiv);
},
/**
Modified: trunk/openlayers/lib/OpenLayers/Request.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Request.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Request.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -57,7 +57,7 @@
* success - Triggered when the HTTP response has a success code (200-299).
* failure - Triggered when the HTTP response does not have a success code.
*/
- events: new OpenLayers.Events(this, null, ["complete", "success", "failure"]),
+ events: new OpenLayers.Events(this),
/**
* APIMethod: issue
Modified: trunk/openlayers/lib/OpenLayers/Strategy/Save.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Strategy/Save.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Strategy/Save.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -20,19 +20,17 @@
OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types. Register a listener
- * for a particular event with the following syntax:
+ * Register a listener for a particular event with the following syntax:
* (code)
* strategy.events.register(type, obj, listener);
* (end)
*
+ * Supported event types:
* - *start* Triggered before saving
* - *success* Triggered after a successful transaction
* - *fail* Triggered after a failed transaction
*
*/
- EVENT_TYPES: ["start", "success", "fail"],
/**
* Property: events
@@ -66,7 +64,7 @@
*/
initialize: function(options) {
OpenLayers.Strategy.prototype.initialize.apply(this, [options]);
- this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES);
+ this.events = new OpenLayers.Events(this);
},
/**
Modified: trunk/openlayers/lib/OpenLayers/Tile.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Tile.js 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/lib/OpenLayers/Tile.js 2011-09-17 19:09:40 UTC (rev 12384)
@@ -26,10 +26,12 @@
OpenLayers.Tile = OpenLayers.Class({
/**
- * Constant: EVENT_TYPES
- * {Array(String)} Supported application event types
+ * Supported event types:
+ * - *loadstart* Triggered when tile loading starts.
+ * - *loadend* Triggered when tile loading ends.
+ * - *reload* Triggered when an already loading tile is reloaded.
+ * - *unload* Triggered before a tile is unloaded.
*/
- EVENT_TYPES: [ "loadstart", "loadend", "reload", "unload"],
/**
* APIProperty: events
@@ -110,7 +112,7 @@
//give the tile a unique id based on its BBOX.
this.id = OpenLayers.Util.createUniqueID("Tile_");
- this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES);
+ this.events = new OpenLayers.Events(this);
OpenLayers.Util.extend(this, options);
},
Modified: trunk/openlayers/tests/Control/DrawFeature.html
===================================================================
--- trunk/openlayers/tests/Control/DrawFeature.html 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/tests/Control/DrawFeature.html 2011-09-17 19:09:40 UTC (rev 12384)
@@ -4,12 +4,10 @@
<script type="text/javascript">
function test_initialize(t) {
- t.plan(2);
+ t.plan(1);
var control = new OpenLayers.Control.DrawFeature("foo", function() {});
t.ok(control instanceof OpenLayers.Control.DrawFeature,
"constructor returns an instance");
- t.ok(OpenLayers.Util.indexOf(control.EVENT_TYPES, "featureadded") > -1,
- "featureadded event in EVENT_TYPES");
}
function test_multi(t) {
Modified: trunk/openlayers/tests/Events.html
===================================================================
--- trunk/openlayers/tests/Events.html 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/tests/Events.html 2011-09-17 19:09:40 UTC (rev 12384)
@@ -7,38 +7,22 @@
var a;
function test_Events_constructor (t) {
+ t.plan(4);
+
var mapDiv = OpenLayers.Util.getElement('map');
var obj = {result: 0};
- var eventTypes = ["doThingA", "doThingB", "doThingC"];
- var browserTypes = OpenLayers.Events.prototype.BROWSER_EVENTS;
- var totalTests = 4 + 2*eventTypes.length + 2*browserTypes.length;
-
- t.plan( totalTests );
-
- events = new OpenLayers.Events(obj, mapDiv, eventTypes);
-
+ events = new OpenLayers.Events(obj, mapDiv);
t.ok( events instanceof OpenLayers.Events, "new OpenLayers.Control returns object" );
-
t.ok(events.object ==obj, " 'object' property correctly set");
t.ok(events.element == mapDiv, " 'element' property correctly set");
+ events.destroy();
-
- for (var i = 0; i < browserTypes.length; i++) {
- var type = browserTypes[i];
- t.ok( events.listeners[type] instanceof Array, "browser event: " + type + " correctly registered" );
- t.ok( OpenLayers.Util.indexOf(events.eventTypes, type) != -1, "browser type " + type + "' correctly added to eventTypes array");
- }
- for (var i = 0; i < eventTypes.length; i++) {
- var type = eventTypes[i];
- t.ok( events.listeners[type] instanceof Array, "custom event: " + type + " correctly registered");
- t.ok( OpenLayers.Util.indexOf(events.eventTypes, type) != -1, "eventType " + type + "' correctly added to eventTypes array");
- }
-
// default/nulls
events = new OpenLayers.Events(null, null, null);
t.ok( events.listeners != null,
"init of Events with null object/element/eventTypes still creates listeners array" );
+ events.destroy();
}
function test_Events_register(t){
@@ -59,8 +43,7 @@
gFuncB = options.func;
}
}
- },
- 'eventTypes': ['listenerA', 'listenerB']
+ }
};
var type = null;
@@ -99,13 +82,12 @@
function test_Events_register_unregister(t) {
- t.plan( 18 );
+ t.plan(19);
var mapDiv = OpenLayers.Util.getElement('map');
var obj = {result: 0};
- var eventTypes = ["doThingA", "doThingB", "doThingC"];
- events = new OpenLayers.Events(obj, mapDiv, eventTypes);
+ events = new OpenLayers.Events(obj, mapDiv);
var func = function () { this.result++ }
events.register( "doThingA", obj, func );
@@ -136,9 +118,12 @@
var listenerList = events.listeners["doThingA"];
t.eq( listenerList.length, 3, "register correctly does not append null callback to event.listeners[doThingA] even when obj passed in is null" );
- events.register( "chicken", obj, func);
- t.ok( events.listeners["chicken"] == null, "register() does nothing on attempt to register un-enabled event");
+ events.register("chicken", obj, func);
+ t.eq(events.listeners["chicken"].length, 1, "register() allows listeners for any named event");
+ events.unregister("chicken", obj, func);
+ t.eq(events.listeners["chicken"].length, 0, "unregistering an event that is not in eventTypes list works")
+
events.unregister("doThingA", obj, null);
var listenerList = events.listeners["doThingA"];
t.eq( listenerList.length, 3, "trying to unregister a null callback does nothing -- but doesnt crash :-)" );
@@ -174,10 +159,13 @@
events.unregister("doThingA", obj, null);
t.ok( (listenerList.length == 1), "unregister does not bomb if you try to remove a null callback" );
- events.unregister("chicken", null, func3);
- t.ok( events.listeners["chicken"] == null, "unregistering an event that is not enabled does not wierdly enable it -- or cause a script error")
+ try {
+ events.unregister("asdf", obj, func);
+ t.ok("unregistering for an event with no registered listeners works");
+ } catch (err) {
+ t.fail("unregistering for an event with no registered listeners causes trouble: " + err);
+ }
-
}
function test_Events_remove(t) {
@@ -186,9 +174,8 @@
var mapDiv = OpenLayers.Util.getElement('map');
var obj = {result: 0};
- var eventTypes = ["doThingA", "doThingB", "doThingC"];
- events = new OpenLayers.Events(obj, mapDiv, eventTypes);
+ events = new OpenLayers.Events(obj, mapDiv);
var func = function () { this.result++ }
var func2 = function () { this.result-- }
@@ -213,9 +200,8 @@
var mapDiv = OpenLayers.Util.getElement('map');
var obj = {result: 0};
- var eventTypes = ["doThingA", "doThingB", "doThingC"];
- events = new OpenLayers.Events(obj, mapDiv, eventTypes);
+ events = new OpenLayers.Events(obj, mapDiv);
var func = function () { this.result++ }
@@ -248,7 +234,7 @@
//no specific t.ok for this one, but if it breaks, you will know it.
events.triggerEvent("chicken");
- events = new OpenLayers.Events(null, mapDiv, eventTypes);
+ events = new OpenLayers.Events(null, mapDiv);
// a is global variable (context-irrelevant)
a = 0;
@@ -259,8 +245,7 @@
t.eq(a, 5, "if Events has no object set and an event is registered also with no object, triggerEvent() calls it without trying to set the context to null");
// trigger events with additional arguments
- eventTypes = ["something"];
- events = new OpenLayers.Events(null, null, eventTypes);
+ events = new OpenLayers.Events();
var instance = {id: Math.random()};
var listener = function(obj) {
t.eq(this.id, instance.id,
@@ -309,7 +294,7 @@
function test_Events_handleBrowserEvent(t) {
t.plan(2);
- var events = new OpenLayers.Events({}, null, ['sometouchevent']);
+ var events = new OpenLayers.Events({}, null);
events.on({'sometouchevent': function() {}});
// this test verifies that when handling a touch event we correctly
@@ -424,36 +409,6 @@
}
- function test_Events_addEventType(t) {
-
- t.plan( 8 );
-
- var mapDiv = OpenLayers.Util.getElement('map');
- var obj = {result: 0};
- var eventTypes = ["doThingA", "doThingB"];
-
- events = new OpenLayers.Events(obj, mapDiv, eventTypes);
-
-
- t.eq( events.listeners["doThingA"].length, 0, "event type passed as passed as param to OpenLayers.Events constructor correctly set up" );
- t.eq( events.listeners["doThingB"].length, 0, "event type passed as passed as param to OpenLayers.Events constructor correctly set up" );
-
- var newEventType = "onFoo";
- t.ok( events.listeners[newEventType] == null, "event type not yet registered has null entry in listeners array");
- t.ok( OpenLayers.Util.indexOf(events.eventTypes, newEventType) == -1, "event type not yet registered not in eventTypes array");
-
- events.addEventType(newEventType);
- t.eq( events.listeners[newEventType].length, 0, "event type passed to addEventType correctly set up" );
- t.ok( OpenLayers.Util.indexOf(events.eventTypes, newEventType) != -1, "event type passed to addEventType in eventTypes array");
-
- var func = function () {};
- events.register( "doThingA", obj, func );
- t.eq( events.listeners["doThingA"].length, 1, "listener correctly registered" );
-
- events.addEventType("doThingsA");
- t.eq( events.listeners["doThingA"].length, 1, "event type passed to addEventType correctly does nothing if clashes with already defined event type" );
- }
-
/** HACK HACK HACK Deprecated This test should be removed in 3.0 **/
function test_Events_globalEventObject(t) {
t.plan(1);
Modified: trunk/openlayers/tests/Layer/Grid.html
===================================================================
--- trunk/openlayers/tests/Layer/Grid.html 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/tests/Layer/Grid.html 2011-09-17 19:09:40 UTC (rev 12384)
@@ -21,19 +21,14 @@
function test_Layer_Grid_constructor (t) {
- t.plan( 8 );
+ t.plan( 5 );
layer = new OpenLayers.Layer.Grid(name, url, params, null);
t.ok( layer instanceof OpenLayers.Layer.Grid, "returns OpenLayers.Layer.Grid object" );
t.eq( layer.buffer, 0, "buffer default is 0");
t.eq( layer.ratio, 1.5, "ratio default is 1.5");
t.eq( layer.numLoadingTiles, 0, "numLoadingTiles starts at 0");
- t.ok( layer.events.listeners["tileloaded"] != null, "'tileloaded' event added to layer's event types");
- t.ok( OpenLayers.Util.indexOf(layer.events.eventTypes, 'tileloaded') != -1 ,"'tileloaded' event added to layer's event types");
- //regression testing for #1502
- t.ok( layer.events.listeners['tileloaded'].length == 0, "no listeners for tileloaded preregister");
-
var obj = {};
var func = function() {};
layer.events.register('tileloaded', obj, func);
Modified: trunk/openlayers/tests/Layer/Text.html
===================================================================
--- trunk/openlayers/tests/Layer/Text.html 2011-09-17 18:41:53 UTC (rev 12383)
+++ trunk/openlayers/tests/Layer/Text.html 2011-09-17 19:09:40 UTC (rev 12384)
@@ -173,7 +173,7 @@
var event = {};
t.delay_call( 1, function() {
t.ok(layer.markers[0].events, "First marker has an events object");
- t.eq(layer.markers[0].events.listeners['click'].length, 0, "Marker events has one object");
+ t.eq(layer.markers[0].events.listeners['click'], undefined, "Marker events has no object");
layer.markers[0].events.triggerEvent('click', event);
t.eq(map.popups.length, 0, "no popup on first marker");
layer.markers[1].events.triggerEvent('click', event);
More information about the Commits
mailing list