[Users] How to add register to Action

Matt Priour mpriour at kestrelcomputer.com
Fri Jan 7 15:13:55 CET 2011


You don't to implement your own mousedown event listener or toggleHandler 
when using a GeoExt.Action in a toolbar.
GeoExt.Action will default to a button and already has handlers for 
activating/decativating controls.

You really want to use a real control not the OpenLayers.Control base class. 
If you need to build your own control then you should subclass the 
OpenLayers.Control class and then use your own subclass. Because of the way 
you have written the code below, it is highly doubtful that 'this' refers to 
what you want and there is probably no handleMousedown function in the 
object 'this' refers to. Other than that, this section looks ok:
        action = new GeoExt.Action({
            control: new OpenLayers.Control({eventListeners: {"mousedown": 
this.handleMousedown}}),
            tooltip: 'Info',
            map: map,
            iconCls: 'drawpolygon',
            toggleGroup: 'map'
        });

You don't need to re-add the 'mousedown' event listener, so this section is 
not needed:
        action.control.events.on({
           "mousedown": handleMousedown
        });

Next, I don't know what you are doing with the 'actions' array that you are 
pushing the newly created 'action' into. I'm going to assume that you are 
using the 'actions' array as a value for the map panel's tbar config 
property:
        actions.push(action);

Hope that helps

Matt Priour
Kestrel Computer Consulting


--------------------------------------------------
From: "Oscar Fonts" <oscar.fonts at gmail.com>
Sent: Friday, January 07, 2011 6:53 AM
To: "Vidal, Antoni" <antoni.vidal at icc.cat>
Cc: <users at geoext.org>
Subject: Re: [Users] How to add register to Action

> Toni, why not let Ext.Button handle the event?
> Something like
>
>        var infoButton = new Ext.Button({
>            tooltip: 'Informació',
>            iconCls: "icon-getfeatureinfo",
>            enableToggle: true,
>            toggleHandler: function(button, pressed) {
>                pressed ? InfoControl.activate() : InfoControl.deactivate()
>        }
>
> Where InfoControl would be the OpenLayers control to be 
> activated/deactivated.
>
> Best regards,
>
> Oscar.
>
>
>
> 2011/1/7 Vidal, Antoni <antoni.vidal at icc.cat>:
>> Hello list,
>>
>>
>>
>> I trying to register a “mousedown” event to an action button but it doesn’t
>> work with the following code:
>>
>>
>>
>>         action = new GeoExt.Action({
>>
>>             control: new OpenLayers.Control({eventListeners: 
>> {"mousedown":
>> this.handleMousedown}}),
>>
>>             tooltip: 'Info',
>>
>>             map: map,
>>
>>             iconCls: 'drawpolygon',
>>
>>             toggleGroup: 'map'
>>
>>         });
>>
>>
>>
>>         action.control.events.on({
>>
>>            "mousedown": handleMousedown
>>
>>         });
>>
>>
>>
>>         actions.push(action);
>>
>>
>>
>> Any help would be appreciatte.
>>
>>
>>
>> Thanks
>>
>>
>>
>> Antoni Vidal
>>
>> Unitat d'Aplicacions SIG-WEB
>> Institut Cartogràfic de Catalunya
>> Parc de Montjuïc, E-08038 Barcelona
>> Tel. (+34) 93 567 15 00 (ext. 3228)
>> www.icc.cat
>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at geoext.org
>> http://www.geoext.org/cgi-bin/mailman/listinfo/users
>>
>>
> _______________________________________________
> Users mailing list
> Users at geoext.org
> http://www.geoext.org/cgi-bin/mailman/listinfo/users
> 


More information about the Users mailing list