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. Regards, Mathias --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@framework.openoffice.org For additional commands, e-mail: dev-h...@framework.openoffice.org