Hi,

On 2/10/10, Mathias Bauer <mathias.ba...@sun.com> wrote:
> Carsten Driesner wrote:
>
>> Yan Wu wrote:
>>> Hi Carsten,
>>>
>>> For the findbar feature, a shortcut key(e.g.: Ctrl+G) is defined to
>>> set the current cursor to the EditControl of the findbar, here are two
>>> methods to dispatch the command(e.g.: .uno:SearchText, which can be
>>> got by the Accelerators configuration):
>>
>> Hi Yan,
>>>
>>> 1)Define the command 'SearchText' and the corresponding slotID in sdi
>>> files and handle them via shells in swriter/scalc/simpress.
>> This is not an option as we need to support this command in the future
>> for all application modules (e.g. database).
>>
>>>
>>> 2)Implement a DispatchProvider for command .uno:SearchText, here are
>>> the ideas how to implement this:
>>> - add a new unocommandsdispatcher.hxx/cxx in
>>> framework/source/dispatch/, implement a new UNO component
>>> UnoCommandsDispatcher, which implements interfaces XDispatchProvider
>>> and XDispatch. In the dispatch call we can set the cursor to the
>>> EditControl of the findbar by such way:
>>> getLayoutManager(m_xFrame)->getElement("private:resource/toolbar/findbar")->GetWindow()->GetItemWindow(nId)->GrabFocus().
>> I am sorry, but I don't like this idea either. This is clearly a hack as
>> we add special code in a generic implementation. Best way would be to
>> implement a ProtocolHandler in svx for the find bar. That's something we
>> can extend as we like and we don't need to change generic code. You can
>> find more information about ProtocolHandler in the Developer's Guide.
>> It's also possible to use the skeleton-maker from the OpenOfficr.org SDK.
>
> Maybe a ProtocolHandler is a little bit too much for that? I agree that
> special functionality shouldn't be implemented in a generic
> implementation, but forwarding calls to a dispatcher for generic
> commands isn't what I would call a "hack".
>
> The sfx2 based dispatch mechanism solved that problem with
> implementation inheritance, our UNO based mechanism can't (and
> shouldn't) do that. But what about this: our sfx based documents don't
> implement the UNO Dispatch API themselves, the sfx provides a generic
> implementation that maps the API to the old sfx dispatching (using
> slots). We could add the said generic UnoCommandsDispatcher here and
> Base could do the same in its own implementation of the UNO dispatch
> API. Thus we replace implementation inheritance by containment.
>

Currently we have to implement a new ProtocolHandler for a new
functionality. Yes, I also think the said generic
UnoCommandsDispatcher could be used to handle those commands which
can't be mapped to the old sfx dispatching.
And DispatchProvider::implts_queryFrameDispatch(...) should be the
right place to forward such commands,
e.g.:'.uno:SearchText'/'.uno:FocusToFindbar'/..., to the
UnoCommandsDispatcher, which will be implemented in
framework/source/dispatch/unocommandsdispatcher. Right?

> Regards,
> Mathias
>
>
Regards,
Yan

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@framework.openoffice.org
For additional commands, e-mail: dev-h...@framework.openoffice.org

Reply via email to