Hi Ariel,
    Thanks for the quick reply.  Actually I intend to implement this just as 
you describe. I intend to create an Extension to add my own Menu and toolbar 
items. Also I will be adding some Macros (functions which appear in the 
functions wizard), to the extension. The intention to add these UI items, is to 
transfer the call to the external application, so that the data from the 
external application can be populated in the spreadsheet. The actual 
functionality lies in the external application, and I need to get the calls 
redirected to the external application as and when the user invokes the menu 
items/toolbar items/macros in the extension.

I have checked the link about the dispatch framework. However it is not clear 
to me, how it could be made to work with a C++ client. Could you direct me to 
some samples to illustrate the behavior.

Regards,
Mangesh

-----Original Message-----
From: Ariel Constenla-Haile [mailto:[email protected]] 
Sent: Tuesday, January 08, 2013 4:33 PM
To: [email protected]
Subject: Re: Registering EventListeners on Add-on Menu item

Hi Mangesh,

On Tue, Jan 08, 2013 at 10:31:47AM +0000, Shukla, Mangesh wrote:
> Hi Ariel, Thanks for your response. I am talking about a real client 
> application. When a Add-on button is clicked (or any other actions is 
> performed), I need the external client application to get a 
> notification ( or a callback) so that I can populate the spreadsheet 
> with information from the external application. I have read the 
> information about the Automation support (which is specific to 
> Windows), but I intend to have this working on Mac as well as Linux 
> OS. My preferred language is C++, as the client application uses C++.
> Please let me know if you need anything else.

The first thing that comes to my mind, is why aren't you implementing all this 
with an extension, it would be much simpler: 

- you define a menu/toolbar item on Addons.xcu with a custom URL

- you register a ProtocolHandler to handle this URL, the application
  framework will query your ProtocolHandler for an object that can
  dispatch this URL and provide feature updates: your Dispatch

- when the user executes the menu/toolbar item, your Dispatch will be
  invoked to dispatch the respective URL, that is, perform the action
  associated with the URL (here you will populate the spreadsheet)

Doing this with a client application is far more complex: you will have to 
intercept when the application framework queries for a Dispatch object, so that 
it is your client application the one that provides the Dispatch object, 
instead of the original ProtocolHandler.

You can achieve this with a "dispatch interceptor":
http://wiki.openoffice.org/wiki/Documentation/DevGuide/OfficeDev/Dispatch_Interception

Back to the original question: registering a menu/toolbar listener is 
impossible, this is as designed, it will be a huge performance issue; only the 
component in the application framework responsible for controlling the 
menu/tool bar is a menu/toolbar listener (it gets notified when the 
menu/toolbar item is selected/clicked, and dispatches the respective URL using 
the dispatch framework).


Regards
--
Ariel Constenla-Haile
La Plata, Argentina

Reply via email to