From 76983744da0d0ac52a0520128141e591cfde5fbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Fri, 19 Mar 2010 09:35:53 +0000 Subject: [PATCH] changes to WMSGetFeatureInfo so requests can be sent on click, rightclick, and dblclick, r=bartvde (closes #2528) git-svn-id: http://svn.openlayers.org/trunk/openlayers@10117 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Control/WMSGetFeatureInfo.js | 15 +++++-- tests/Control/WMSGetFeatureInfo.html | 44 +++++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/lib/OpenLayers/Control/WMSGetFeatureInfo.js b/lib/OpenLayers/Control/WMSGetFeatureInfo.js index 98707b41d7..8510886d6c 100644 --- a/lib/OpenLayers/Control/WMSGetFeatureInfo.js +++ b/lib/OpenLayers/Control/WMSGetFeatureInfo.js @@ -23,7 +23,7 @@ * - */ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, { - + /** * APIProperty: hover * {Boolean} Send GetFeatureInfo requests when mouse stops moving. @@ -46,6 +46,13 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, { * requests. */ maxFeatures: 10, + + /** APIProperty: clickCallback + * {String} The click callback to register in the + * {} object created when the hover + * option is set to false. Default is "click". + */ + clickCallback: "click", /** * Property: layers @@ -192,8 +199,10 @@ OpenLayers.Control.WMSGetFeatureInfo = OpenLayers.Class(OpenLayers.Control, { 'delay': 250 })); } else { - this.handler = new OpenLayers.Handler.Click(this, - {click: this.getInfoForClick}, this.handlerOptions.click || {}); + var callbacks = {}; + callbacks[this.clickCallback] = this.getInfoForClick; + this.handler = new OpenLayers.Handler.Click( + this, callbacks, this.handlerOptions.click || {}); } }, diff --git a/tests/Control/WMSGetFeatureInfo.html b/tests/Control/WMSGetFeatureInfo.html index 7d78be898b..769b45905a 100644 --- a/tests/Control/WMSGetFeatureInfo.html +++ b/tests/Control/WMSGetFeatureInfo.html @@ -25,6 +25,50 @@ t.eq(control.format.foo, "bar", "format options used") } + function test_clickCallBack_option(t) { + t.plan(9); + + var control; + + control = new OpenLayers.Control.WMSGetFeatureInfo({ + hover: true + }); + t.ok(control.handler instanceof OpenLayers.Handler.Hover, + 'constructor creates hover handler'); + t.ok(control.handler.callbacks["move"] === control.cancelHover, + 'constructor registers proper "move" callback in handler'); + t.ok(control.handler.callbacks["pause"] === control.getInfoForHover, + 'constructor registers proper "pause" callback in handler'); + + control = new OpenLayers.Control.WMSGetFeatureInfo(); + t.ok(control.handler instanceof OpenLayers.Handler.Click, + 'constructor creates click handler'); + t.ok(control.handler.callbacks["click"] === control.getInfoForClick, + 'constructor registers proper "click" callback in handler'); + + control = new OpenLayers.Control.WMSGetFeatureInfo({ + clickCallback: "rightclick" + }); + t.ok(control.handler.callbacks["rightclick"] === control.getInfoForClick, + 'constructor registers proper "rightclick" callback in handler'); + + control = new OpenLayers.Control.WMSGetFeatureInfo({ + clickCallback: "dblclick", + handlerOptions: { + click: { + "single": false, + "double": true + } + } + }); + t.ok(control.handler.callbacks["dblclick"] === control.getInfoForClick, + 'constructor registers proper "dblclick" callback in handler'); + t.eq(control.handler["single"], false, + 'constructor sets "single" to false in handler'); + t.eq(control.handler["double"], true, + 'constructor sets "double" to true in handler'); + } + function test_destroy(t) { t.plan(2); var map = new OpenLayers.Map("map");