1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef DBAUI_GENERICCONTROLLER_HXX 25*b1cdbd2cSJim Jagielski #define DBAUI_GENERICCONTROLLER_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include "AsyncronousLink.hxx" 28*b1cdbd2cSJim Jagielski #include "controllerframe.hxx" 29*b1cdbd2cSJim Jagielski #include "dbaccessdllapi.h" 30*b1cdbd2cSJim Jagielski #include "IController.hxx" 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/ 33*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/CommandGroup.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XController2.hpp> 36*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatch.hpp> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatchInformationProvider.hpp> 38*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XDispatchProviderInterceptor.hpp> 39*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrameActionListener.hpp> 40*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XTitle.hpp> 41*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XTitleChangeBroadcaster.hpp> 42*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XLayoutManager.hpp> 43*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XInitialization.hpp> 44*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp> 45*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XConnection.hpp> 46*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XDataSource.hpp> 47*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp> 48*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XModifyListener.hpp> 49*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XURLTransformer.hpp> 50*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp> 51*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/XUserInputInterception.hpp> 52*b1cdbd2cSJim Jagielski /** === end UNO includes === **/ 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski #include <comphelper/broadcasthelper.hxx> 55*b1cdbd2cSJim Jagielski #include <comphelper/sharedmutex.hxx> 56*b1cdbd2cSJim Jagielski #include <comphelper/namedvaluecollection.hxx> 57*b1cdbd2cSJim Jagielski #include <comphelper/stl_types.hxx> 58*b1cdbd2cSJim Jagielski #include <connectivity/dbexception.hxx> 59*b1cdbd2cSJim Jagielski #include <cppuhelper/compbase11.hxx> 60*b1cdbd2cSJim Jagielski #include <cppuhelper/interfacecontainer.h> 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski #include <boost/optional.hpp> 63*b1cdbd2cSJim Jagielski #include <sfx2/userinputinterception.hxx> 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski namespace dbtools 66*b1cdbd2cSJim Jagielski { 67*b1cdbd2cSJim Jagielski class SQLExceptionInfo; 68*b1cdbd2cSJim Jagielski } 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski class Window; 71*b1cdbd2cSJim Jagielski class VCLXWindow; 72*b1cdbd2cSJim Jagielski namespace dbaui 73*b1cdbd2cSJim Jagielski { 74*b1cdbd2cSJim Jagielski class ODataView; 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski // ==================================================================== 77*b1cdbd2cSJim Jagielski // = optional 78*b1cdbd2cSJim Jagielski // ==================================================================== 79*b1cdbd2cSJim Jagielski /** convenience wrapper around boost::optional, allowing typed assignments 80*b1cdbd2cSJim Jagielski */ 81*b1cdbd2cSJim Jagielski template < typename T > 82*b1cdbd2cSJim Jagielski class optional : public ::boost::optional< T > 83*b1cdbd2cSJim Jagielski { 84*b1cdbd2cSJim Jagielski typedef ::boost::optional< T > base_type; 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski public: optional()87*b1cdbd2cSJim Jagielski optional ( ) : base_type( ) { } optional(T const & val)88*b1cdbd2cSJim Jagielski explicit optional ( T const& val ) : base_type( val ) { } optional(optional const & rhs)89*b1cdbd2cSJim Jagielski optional ( optional const& rhs ) : base_type( (base_type const&)rhs ) { } 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski public: operator =(T const & rhs)92*b1cdbd2cSJim Jagielski optional& operator= ( T const& rhs ) 93*b1cdbd2cSJim Jagielski { 94*b1cdbd2cSJim Jagielski base_type::reset( rhs ); 95*b1cdbd2cSJim Jagielski return *this; 96*b1cdbd2cSJim Jagielski } operator =(optional<T> const & rhs)97*b1cdbd2cSJim Jagielski optional& operator= ( optional< T > const& rhs ) 98*b1cdbd2cSJim Jagielski { 99*b1cdbd2cSJim Jagielski if ( rhs.is_initialized() ) 100*b1cdbd2cSJim Jagielski base_type::reset( rhs.get() ); 101*b1cdbd2cSJim Jagielski else 102*b1cdbd2cSJim Jagielski base_type::reset(); 103*b1cdbd2cSJim Jagielski return *this; 104*b1cdbd2cSJim Jagielski } 105*b1cdbd2cSJim Jagielski }; 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski template< typename T > operator >>=(const::com::sun::star::uno::Any & _any,optional<T> & _value)108*b1cdbd2cSJim Jagielski inline bool SAL_CALL operator >>= ( const ::com::sun::star::uno::Any & _any, optional< T >& _value ) 109*b1cdbd2cSJim Jagielski { 110*b1cdbd2cSJim Jagielski _value.reset(); // de-init the optional value 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski T directValue = T(); 113*b1cdbd2cSJim Jagielski if ( _any >>= directValue ) 114*b1cdbd2cSJim Jagielski _value.reset( directValue ); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski return !!_value; 117*b1cdbd2cSJim Jagielski } 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski // ==================================================================== 120*b1cdbd2cSJim Jagielski // = FeatureState 121*b1cdbd2cSJim Jagielski // ==================================================================== 122*b1cdbd2cSJim Jagielski /** describes the state of a feature 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski In opposite to the FeatureStateEvent in css.frame, this one allows for multiple states to be specified at once. 125*b1cdbd2cSJim Jagielski With this, you can for instance specify that a toolbox item is checked, and has a certain title, at the same 126*b1cdbd2cSJim Jagielski time. 127*b1cdbd2cSJim Jagielski */ 128*b1cdbd2cSJim Jagielski struct FeatureState 129*b1cdbd2cSJim Jagielski { 130*b1cdbd2cSJim Jagielski sal_Bool bEnabled; 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski optional< bool > bChecked; 133*b1cdbd2cSJim Jagielski optional< bool > bInvisible; 134*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Any aValue; 135*b1cdbd2cSJim Jagielski optional< ::rtl::OUString > sTitle; 136*b1cdbd2cSJim Jagielski FeatureStatedbaui::FeatureState137*b1cdbd2cSJim Jagielski FeatureState() : bEnabled(sal_False) { } 138*b1cdbd2cSJim Jagielski }; 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski // ==================================================================== 141*b1cdbd2cSJim Jagielski // = helper 142*b1cdbd2cSJim Jagielski // ==================================================================== 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski // .................................................................... 145*b1cdbd2cSJim Jagielski struct ControllerFeature : public ::com::sun::star::frame::DispatchInformation 146*b1cdbd2cSJim Jagielski { 147*b1cdbd2cSJim Jagielski sal_uInt16 nFeatureId; 148*b1cdbd2cSJim Jagielski }; 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski // .................................................................... 151*b1cdbd2cSJim Jagielski typedef ::std::map < ::rtl::OUString 152*b1cdbd2cSJim Jagielski , ControllerFeature 153*b1cdbd2cSJim Jagielski , ::std::less< ::rtl::OUString > 154*b1cdbd2cSJim Jagielski > SupportedFeatures; 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski // .................................................................... 157*b1cdbd2cSJim Jagielski struct CompareFeatureById : ::std::binary_function< SupportedFeatures::value_type, sal_Int32, bool > 158*b1cdbd2cSJim Jagielski { 159*b1cdbd2cSJim Jagielski // ................................................................ operator ()dbaui::CompareFeatureById160*b1cdbd2cSJim Jagielski inline bool operator()( const SupportedFeatures::value_type& _aType, const sal_Int32& _nId ) const 161*b1cdbd2cSJim Jagielski { 162*b1cdbd2cSJim Jagielski return !!( _nId == _aType.second.nFeatureId ); 163*b1cdbd2cSJim Jagielski } 164*b1cdbd2cSJim Jagielski }; 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski // .................................................................... 167*b1cdbd2cSJim Jagielski struct FeatureListener 168*b1cdbd2cSJim Jagielski { 169*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > 170*b1cdbd2cSJim Jagielski xListener; 171*b1cdbd2cSJim Jagielski sal_Int32 nId; 172*b1cdbd2cSJim Jagielski sal_Bool bForceBroadcast; 173*b1cdbd2cSJim Jagielski }; 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski // .................................................................... 176*b1cdbd2cSJim Jagielski typedef ::std::deque< FeatureListener > FeatureListeners; 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski // .................................................................... 179*b1cdbd2cSJim Jagielski struct FindFeatureListener : ::std::binary_function< FeatureListener, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener >, bool > 180*b1cdbd2cSJim Jagielski { 181*b1cdbd2cSJim Jagielski // ................................................................ operator ()dbaui::FindFeatureListener182*b1cdbd2cSJim Jagielski inline bool operator()( const FeatureListener& lhs, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener >& rhs ) const 183*b1cdbd2cSJim Jagielski { 184*b1cdbd2cSJim Jagielski return !!( lhs.xListener == rhs ); 185*b1cdbd2cSJim Jagielski } 186*b1cdbd2cSJim Jagielski }; 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski // .................................................................... 189*b1cdbd2cSJim Jagielski typedef ::comphelper::SharedMutexBase OGenericUnoController_MBASE; 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper11 < ::com::sun::star::frame::XDispatch 192*b1cdbd2cSJim Jagielski , ::com::sun::star::frame::XDispatchProviderInterceptor 193*b1cdbd2cSJim Jagielski , ::com::sun::star::util::XModifyListener 194*b1cdbd2cSJim Jagielski , ::com::sun::star::frame::XFrameActionListener 195*b1cdbd2cSJim Jagielski , ::com::sun::star::lang::XInitialization 196*b1cdbd2cSJim Jagielski , ::com::sun::star::lang::XServiceInfo 197*b1cdbd2cSJim Jagielski , ::com::sun::star::frame::XDispatchInformationProvider 198*b1cdbd2cSJim Jagielski , ::com::sun::star::frame::XController2 199*b1cdbd2cSJim Jagielski , ::com::sun::star::frame::XTitle 200*b1cdbd2cSJim Jagielski , ::com::sun::star::frame::XTitleChangeBroadcaster 201*b1cdbd2cSJim Jagielski , ::com::sun::star::awt::XUserInputInterception 202*b1cdbd2cSJim Jagielski > OGenericUnoController_Base; 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski struct OGenericUnoController_Data; 205*b1cdbd2cSJim Jagielski // ==================================================================== 206*b1cdbd2cSJim Jagielski class DBACCESS_DLLPUBLIC OGenericUnoController 207*b1cdbd2cSJim Jagielski :public OGenericUnoController_MBASE 208*b1cdbd2cSJim Jagielski ,public OGenericUnoController_Base 209*b1cdbd2cSJim Jagielski ,public IController 210*b1cdbd2cSJim Jagielski { 211*b1cdbd2cSJim Jagielski private: 212*b1cdbd2cSJim Jagielski SupportedFeatures m_aSupportedFeatures; 213*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection 214*b1cdbd2cSJim Jagielski m_aInitParameters; 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski ::std::auto_ptr< OGenericUnoController_Data > 217*b1cdbd2cSJim Jagielski m_pData; 218*b1cdbd2cSJim Jagielski ODataView* m_pView; // our (VCL) "main window" 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL 221*b1cdbd2cSJim Jagielski bool m_bDescribingSupportedFeatures; 222*b1cdbd2cSJim Jagielski #endif 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski protected: 225*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 226*b1cdbd2cSJim Jagielski // attributes 227*b1cdbd2cSJim Jagielski struct DispatchTarget 228*b1cdbd2cSJim Jagielski { 229*b1cdbd2cSJim Jagielski ::com::sun::star::util::URL aURL; 230*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > xListener; 231*b1cdbd2cSJim Jagielski DispatchTargetdbaui::OGenericUnoController::DispatchTarget232*b1cdbd2cSJim Jagielski DispatchTarget() { } DispatchTargetdbaui::OGenericUnoController::DispatchTarget233*b1cdbd2cSJim Jagielski DispatchTarget(const ::com::sun::star::util::URL& rURL, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > xRef) : aURL(rURL), xListener(xRef) { } 234*b1cdbd2cSJim Jagielski }; 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski DECLARE_STL_MAP( sal_uInt16, FeatureState, ::std::less< sal_uInt16 >, StateCache ); 237*b1cdbd2cSJim Jagielski DECLARE_STL_VECTOR( DispatchTarget, Dispatch); 238*b1cdbd2cSJim Jagielski 239*b1cdbd2cSJim Jagielski FeatureListeners m_aFeaturesToInvalidate; 240*b1cdbd2cSJim Jagielski 241*b1cdbd2cSJim Jagielski ::osl::Mutex m_aFeatureMutex; // locked when features are append to or remove from deque 242*b1cdbd2cSJim Jagielski StateCache m_aStateCache; // save the current status of feature state 243*b1cdbd2cSJim Jagielski Dispatch m_arrStatusListener; // all our listeners where we dispatch status changes 244*b1cdbd2cSJim Jagielski OAsyncronousLink m_aAsyncInvalidateAll; 245*b1cdbd2cSJim Jagielski OAsyncronousLink m_aAsyncCloseTask; // called when a task shoud be closed 246*b1cdbd2cSJim Jagielski 247*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::util::XURLTransformer > m_xUrlTransformer; // needed sometimes 248*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceFactory; 249*b1cdbd2cSJim Jagielski ControllerFrame m_aCurrentFrame; 250*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xSlaveDispatcher; // for intercepting dispatches 251*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xMasterDispatcher; // dito 252*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xDatabaseContext; 253*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitle > m_xTitleHelper; 254*b1cdbd2cSJim Jagielski 255*b1cdbd2cSJim Jagielski sal_Bool m_bPreview; 256*b1cdbd2cSJim Jagielski sal_Bool m_bReadOnly; 257*b1cdbd2cSJim Jagielski 258*b1cdbd2cSJim Jagielski sal_Bool m_bCurrentlyModified : 1; 259*b1cdbd2cSJim Jagielski sal_Bool m_bExternalTitle : 1; 260*b1cdbd2cSJim Jagielski 261*b1cdbd2cSJim Jagielski 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 264*b1cdbd2cSJim Jagielski // attribute access getMutex() const265*b1cdbd2cSJim Jagielski ::osl::Mutex& getMutex() const { return OGenericUnoController_MBASE::getMutex(); } getBroadcastHelper()266*b1cdbd2cSJim Jagielski ::cppu::OBroadcastHelper& getBroadcastHelper() { return OGenericUnoController_Base::rBHelper; } 267*b1cdbd2cSJim Jagielski 268*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 269*b1cdbd2cSJim Jagielski // methods 270*b1cdbd2cSJim Jagielski OGenericUnoController( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM ); 271*b1cdbd2cSJim Jagielski const ::comphelper::NamedValueCollection& getInitParams() const272*b1cdbd2cSJim Jagielski getInitParams() const { return m_aInitParameters; } 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski 275*b1cdbd2cSJim Jagielski /** open the help agent for the given help id. 276*b1cdbd2cSJim Jagielski @param _nHelpId 277*b1cdbd2cSJim Jagielski The help id to dispatch. 278*b1cdbd2cSJim Jagielski */ 279*b1cdbd2cSJim Jagielski void openHelpAgent( const rtl::OString& _sHelpId ); 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski /** open the help agent for the given help url. 282*b1cdbd2cSJim Jagielski @param _pHelpStringURL 283*b1cdbd2cSJim Jagielski The help url to dispatch. 284*b1cdbd2cSJim Jagielski */ 285*b1cdbd2cSJim Jagielski void openHelpAgent( const rtl::OUString& _suHelpStringURL ); 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski /** opens the given Help URL in the help agent 288*b1cdbd2cSJim Jagielski 289*b1cdbd2cSJim Jagielski The URL does not need to be parsed already, it is passed through 290*b1cdbd2cSJim Jagielski XURLTransformer::parseStrict before it is used. 291*b1cdbd2cSJim Jagielski */ 292*b1cdbd2cSJim Jagielski void openHelpAgent( const ::com::sun::star::util::URL& _rURL ); 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski // closes the task when possible 295*b1cdbd2cSJim Jagielski void closeTask(); 296*b1cdbd2cSJim Jagielski 297*b1cdbd2cSJim Jagielski // if getMenu returns a non empty string than this will be dispatched at the frame 298*b1cdbd2cSJim Jagielski virtual void loadMenu(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _xFrame); 299*b1cdbd2cSJim Jagielski 300*b1cdbd2cSJim Jagielski /** called when our menu has been loaded into our frame, can be used to load sub toolbars 301*b1cdbd2cSJim Jagielski 302*b1cdbd2cSJim Jagielski @param _xLayoutManager 303*b1cdbd2cSJim Jagielski The layout manager. 304*b1cdbd2cSJim Jagielski */ 305*b1cdbd2cSJim Jagielski virtual void onLoadedMenu(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager >& _xLayoutManager); 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski // all the features which should be handled by this class 308*b1cdbd2cSJim Jagielski virtual void describeSupportedFeatures(); 309*b1cdbd2cSJim Jagielski 310*b1cdbd2cSJim Jagielski // state of a feature. 'feature' may be the handle of a ::com::sun::star::util::URL somebody requested a dispatch interface for OR a toolbar slot. 311*b1cdbd2cSJim Jagielski virtual FeatureState GetState(sal_uInt16 nId) const; 312*b1cdbd2cSJim Jagielski // execute a feature 313*b1cdbd2cSJim Jagielski virtual void Execute(sal_uInt16 nId , const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 314*b1cdbd2cSJim Jagielski 315*b1cdbd2cSJim Jagielski /** describes a feature supported by the controller 316*b1cdbd2cSJim Jagielski 317*b1cdbd2cSJim Jagielski Must not be called outside <member>describeSupportedFeatures</member>. 318*b1cdbd2cSJim Jagielski 319*b1cdbd2cSJim Jagielski @param _pAsciiCommandURL 320*b1cdbd2cSJim Jagielski the URL of the feature command 321*b1cdbd2cSJim Jagielski @param _nFeatureId 322*b1cdbd2cSJim Jagielski the id of the feature. Later references to this feature usually happen by id, not by 323*b1cdbd2cSJim Jagielski URL 324*b1cdbd2cSJim Jagielski @param _nCommandGroup 325*b1cdbd2cSJim Jagielski the command group of the feature. This is important for configuring the controller UI 326*b1cdbd2cSJim Jagielski by the user, see also <type scope="com::sun::star::frame">CommandGroup</type>. 327*b1cdbd2cSJim Jagielski */ 328*b1cdbd2cSJim Jagielski void implDescribeSupportedFeature( 329*b1cdbd2cSJim Jagielski const sal_Char* _pAsciiCommandURL, 330*b1cdbd2cSJim Jagielski sal_uInt16 _nFeatureId, 331*b1cdbd2cSJim Jagielski sal_Int16 _nCommandGroup = ::com::sun::star::frame::CommandGroup::INTERNAL 332*b1cdbd2cSJim Jagielski ); 333*b1cdbd2cSJim Jagielski 334*b1cdbd2cSJim Jagielski /** returns <TRUE/> if the feature is supported, otherwise <FALSE/> 335*b1cdbd2cSJim Jagielski @param _nId 336*b1cdbd2cSJim Jagielski The ID of the feature. 337*b1cdbd2cSJim Jagielski */ 338*b1cdbd2cSJim Jagielski sal_Bool isFeatureSupported( sal_Int32 _nId ); 339*b1cdbd2cSJim Jagielski 340*b1cdbd2cSJim Jagielski // gets the URL which the given id is assigned to 341*b1cdbd2cSJim Jagielski ::com::sun::star::util::URL getURLForId(sal_Int32 _nId) const; 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski /** determines whether the given feature ID denotes a user-defined feature 344*b1cdbd2cSJim Jagielski 345*b1cdbd2cSJim Jagielski @see IController::registerCommandURL 346*b1cdbd2cSJim Jagielski */ 347*b1cdbd2cSJim Jagielski bool isUserDefinedFeature( const sal_uInt16 nFeatureId ) const; 348*b1cdbd2cSJim Jagielski 349*b1cdbd2cSJim Jagielski /** determines whether the given feature URL denotes a user-defined feature 350*b1cdbd2cSJim Jagielski 351*b1cdbd2cSJim Jagielski @see IController::registerCommandURL 352*b1cdbd2cSJim Jagielski */ 353*b1cdbd2cSJim Jagielski bool isUserDefinedFeature( const ::rtl::OUString& _rFeatureURL ) const; 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim Jagielski // connect to a datasource 356*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > connect( 357*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource>& _xDataSource, 358*b1cdbd2cSJim Jagielski ::dbtools::SQLExceptionInfo* _pErrorInfo 359*b1cdbd2cSJim Jagielski ); 360*b1cdbd2cSJim Jagielski 361*b1cdbd2cSJim Jagielski // connect to a datasource 362*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > connect( 363*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rsDataSourceName, 364*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rContextInformation, 365*b1cdbd2cSJim Jagielski ::dbtools::SQLExceptionInfo* _pErrorInfo 366*b1cdbd2cSJim Jagielski ); 367*b1cdbd2cSJim Jagielski 368*b1cdbd2cSJim Jagielski void startConnectionListening(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection); 369*b1cdbd2cSJim Jagielski void stopConnectionListening(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection); 370*b1cdbd2cSJim Jagielski 371*b1cdbd2cSJim Jagielski /** return the container window of the top most frame 372*b1cdbd2cSJim Jagielski @return 373*b1cdbd2cSJim Jagielski The top most container window, nmay be <NULL/>. 374*b1cdbd2cSJim Jagielski */ 375*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow> getTopMostContainerWindow() const; 376*b1cdbd2cSJim Jagielski 377*b1cdbd2cSJim Jagielski // XInitialize will be called inside initialize 378*b1cdbd2cSJim Jagielski virtual void impl_initialize(); 379*b1cdbd2cSJim Jagielski getPrivateTitle() const380*b1cdbd2cSJim Jagielski virtual ::rtl::OUString getPrivateTitle() const { return ::rtl::OUString(); } 381*b1cdbd2cSJim Jagielski 382*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitle > impl_getTitleHelper_throw(); getPrivateModel() const383*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getPrivateModel() const 384*b1cdbd2cSJim Jagielski { 385*b1cdbd2cSJim Jagielski return ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >(); 386*b1cdbd2cSJim Jagielski } 387*b1cdbd2cSJim Jagielski 388*b1cdbd2cSJim Jagielski virtual void startFrameListening( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame ); 389*b1cdbd2cSJim Jagielski virtual void stopFrameListening( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame ); 390*b1cdbd2cSJim Jagielski 391*b1cdbd2cSJim Jagielski void releaseNumberForComponent(); 392*b1cdbd2cSJim Jagielski 393*b1cdbd2cSJim Jagielski virtual ~OGenericUnoController(); 394*b1cdbd2cSJim Jagielski 395*b1cdbd2cSJim Jagielski private: 396*b1cdbd2cSJim Jagielski void fillSupportedFeatures(); 397*b1cdbd2cSJim Jagielski 398*b1cdbd2cSJim Jagielski void InvalidateAll_Impl(); 399*b1cdbd2cSJim Jagielski void InvalidateFeature_Impl(); 400*b1cdbd2cSJim Jagielski 401*b1cdbd2cSJim Jagielski void ImplInvalidateFeature( sal_Int32 _nId, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener >& _xListener, sal_Bool _bForceBroadcast ); 402*b1cdbd2cSJim Jagielski 403*b1cdbd2cSJim Jagielski sal_Bool ImplInvalidateTBItem(sal_uInt16 nId, const FeatureState& rState); 404*b1cdbd2cSJim Jagielski void ImplBroadcastFeatureState(const ::rtl::OUString& _rFeature, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & xListener, sal_Bool _bIgnoreCache); 405*b1cdbd2cSJim Jagielski 406*b1cdbd2cSJim Jagielski // link methods 407*b1cdbd2cSJim Jagielski DECL_LINK(OnAsyncInvalidateAll, void*); 408*b1cdbd2cSJim Jagielski DECL_LINK(OnAsyncCloseTask, void*); 409*b1cdbd2cSJim Jagielski 410*b1cdbd2cSJim Jagielski public: getORB() const411*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > getORB() const { return m_xServiceFactory; } getView() const412*b1cdbd2cSJim Jagielski ODataView* getView() const { return m_pView; } setView(ODataView & i_rView)413*b1cdbd2cSJim Jagielski void setView( ODataView& i_rView ) { m_pView = &i_rView; } clearView()414*b1cdbd2cSJim Jagielski void clearView() { m_pView = NULL; } 415*b1cdbd2cSJim Jagielski // shows a error box if the SQLExceptionInfo is valid 416*b1cdbd2cSJim Jagielski void showError(const ::dbtools::SQLExceptionInfo& _rInfo); 417*b1cdbd2cSJim Jagielski 418*b1cdbd2cSJim Jagielski // if xListener is NULL the change will be forwarded to all listeners to the given ::com::sun::star::util::URL 419*b1cdbd2cSJim Jagielski // if _bForceBroadcast is sal_True, the current feature state is broadcasted no matter if it is the same as the cached state 420*b1cdbd2cSJim Jagielski virtual void InvalidateFeature(const ::rtl::OUString& rURLPath, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & xListener = NULL, sal_Bool _bForceBroadcast = sal_False); 421*b1cdbd2cSJim Jagielski // if there is an ::com::sun::star::util::URL translation for the id ('handle') the preceding InvalidateFeature is used. 422*b1cdbd2cSJim Jagielski // if there is a toolbar slot with the given id it is updated (the new state is determined via GetState) 423*b1cdbd2cSJim Jagielski // if _bForceBroadcast is sal_True, the current feature state is broadcasted no matter if it is the same as the cached state 424*b1cdbd2cSJim Jagielski virtual void InvalidateFeature(sal_uInt16 nId, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & xListener = NULL, sal_Bool _bForceBroadcast = sal_False); 425*b1cdbd2cSJim Jagielski 426*b1cdbd2cSJim Jagielski /** InvalidateAll invalidates all features currently known 427*b1cdbd2cSJim Jagielski */ 428*b1cdbd2cSJim Jagielski virtual void InvalidateAll(); 429*b1cdbd2cSJim Jagielski // late construction 430*b1cdbd2cSJim Jagielski virtual sal_Bool Construct(Window* pParent); 431*b1cdbd2cSJim Jagielski 432*b1cdbd2cSJim Jagielski /** get the layout manager 433*b1cdbd2cSJim Jagielski @param _xFrame 434*b1cdbd2cSJim Jagielski The frame to ask for the layout manager. 435*b1cdbd2cSJim Jagielski @return 436*b1cdbd2cSJim Jagielski The layout manager of the frame, can be <NULL/> if the frame isn't initialized. 437*b1cdbd2cSJim Jagielski */ 438*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::frame::XLayoutManager > getLayoutManager(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _xFrame) const; 439*b1cdbd2cSJim Jagielski 440*b1cdbd2cSJim Jagielski // IController 441*b1cdbd2cSJim Jagielski virtual void executeUnChecked(const ::com::sun::star::util::URL& _rCommand, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 442*b1cdbd2cSJim Jagielski virtual void executeChecked(const ::com::sun::star::util::URL& _rCommand, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 443*b1cdbd2cSJim Jagielski virtual void executeUnChecked(sal_uInt16 _nCommandId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 444*b1cdbd2cSJim Jagielski virtual void executeChecked(sal_uInt16 _nCommandId, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs); 445*b1cdbd2cSJim Jagielski virtual sal_Bool isCommandEnabled(sal_uInt16 _nCommandId) const; 446*b1cdbd2cSJim Jagielski virtual sal_Bool isCommandEnabled(const ::rtl::OUString& _rCompleteCommandURL) const; 447*b1cdbd2cSJim Jagielski virtual sal_uInt16 registerCommandURL( const ::rtl::OUString& _rCompleteCommandURL ); 448*b1cdbd2cSJim Jagielski virtual void notifyHiContrastChanged(); 449*b1cdbd2cSJim Jagielski virtual sal_Bool isDataSourceReadOnly() const; 450*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > getXController() throw( ::com::sun::star::uno::RuntimeException ); 451*b1cdbd2cSJim Jagielski virtual bool interceptUserInput( const NotifyEvent& _rEvent ); 452*b1cdbd2cSJim Jagielski 453*b1cdbd2cSJim Jagielski // misc 454*b1cdbd2cSJim Jagielski virtual sal_Bool isCommandChecked(sal_uInt16 _nCommandId) const; 455*b1cdbd2cSJim Jagielski 456*b1cdbd2cSJim Jagielski // ::com::sun::star::lang::XEventListener 457*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException ); 458*b1cdbd2cSJim Jagielski 459*b1cdbd2cSJim Jagielski // ::com::sun::star::util::XModifyListener 460*b1cdbd2cSJim Jagielski virtual void SAL_CALL modified(const ::com::sun::star::lang::EventObject& aEvent) throw( ::com::sun::star::uno::RuntimeException ); 461*b1cdbd2cSJim Jagielski 462*b1cdbd2cSJim Jagielski // XInterface 463*b1cdbd2cSJim Jagielski virtual void SAL_CALL acquire( ) throw (); 464*b1cdbd2cSJim Jagielski virtual void SAL_CALL release( ) throw (); 465*b1cdbd2cSJim Jagielski 466*b1cdbd2cSJim Jagielski // ::com::sun::star::frame::XController2 467*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow > SAL_CALL getComponentWindow() throw (::com::sun::star::uno::RuntimeException); 468*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getViewControllerName() throw (::com::sun::star::uno::RuntimeException); 469*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getCreationArguments() throw (::com::sun::star::uno::RuntimeException); 470*b1cdbd2cSJim Jagielski 471*b1cdbd2cSJim Jagielski // ::com::sun::star::frame::XController 472*b1cdbd2cSJim Jagielski virtual void SAL_CALL attachFrame(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > & xFrame) throw( ::com::sun::star::uno::RuntimeException ); 473*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL attachModel(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & xModel) throw( ::com::sun::star::uno::RuntimeException ); 474*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL suspend(sal_Bool bSuspend) throw( ::com::sun::star::uno::RuntimeException ) = 0; 475*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Any SAL_CALL getViewData(void) throw( ::com::sun::star::uno::RuntimeException ); 476*b1cdbd2cSJim Jagielski virtual void SAL_CALL restoreViewData(const ::com::sun::star::uno::Any& Data) throw( ::com::sun::star::uno::RuntimeException ); 477*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > SAL_CALL getModel(void) throw( ::com::sun::star::uno::RuntimeException ); 478*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > SAL_CALL getFrame(void) throw( ::com::sun::star::uno::RuntimeException ); 479*b1cdbd2cSJim Jagielski 480*b1cdbd2cSJim Jagielski // ::com::sun::star::frame::XDispatch 481*b1cdbd2cSJim Jagielski virtual void SAL_CALL dispatch(const ::com::sun::star::util::URL& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& aArgs) throw(::com::sun::star::uno::RuntimeException); 482*b1cdbd2cSJim Jagielski virtual void SAL_CALL addStatusListener(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & aListener, const ::com::sun::star::util::URL& aURL) throw(::com::sun::star::uno::RuntimeException); 483*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeStatusListener(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & aListener, const ::com::sun::star::util::URL& aURL) throw(::com::sun::star::uno::RuntimeException); 484*b1cdbd2cSJim Jagielski 485*b1cdbd2cSJim Jagielski // ::com::sun::star::frame::XDispatchProviderInterceptor 486*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL getSlaveDispatchProvider(void) throw(::com::sun::star::uno::RuntimeException); 487*b1cdbd2cSJim Jagielski virtual void SAL_CALL setSlaveDispatchProvider(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > & _xNewProvider) throw(::com::sun::star::uno::RuntimeException); 488*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL getMasterDispatchProvider(void) throw(::com::sun::star::uno::RuntimeException); 489*b1cdbd2cSJim Jagielski virtual void SAL_CALL setMasterDispatchProvider(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > & _xNewProvider) throw(::com::sun::star::uno::RuntimeException); 490*b1cdbd2cSJim Jagielski 491*b1cdbd2cSJim Jagielski // ::com::sun::star::frame::XDispatchProvider 492*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > SAL_CALL queryDispatch(const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags) throw( ::com::sun::star::uno::RuntimeException ); 493*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > > SAL_CALL queryDispatches(const ::com::sun::star::uno::Sequence< ::com::sun::star::frame::DispatchDescriptor >& aDescripts) throw( ::com::sun::star::uno::RuntimeException ); 494*b1cdbd2cSJim Jagielski 495*b1cdbd2cSJim Jagielski // ::com::sun::star::lang::XComponent 496*b1cdbd2cSJim Jagielski virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException); //LLA: need solar mutex {OGenericUnoController_COMPBASE::dispose(); } 497*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing(); 498*b1cdbd2cSJim Jagielski virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) throw(::com::sun::star::uno::RuntimeException); 499*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener) throw(::com::sun::star::uno::RuntimeException); 500*b1cdbd2cSJim Jagielski 501*b1cdbd2cSJim Jagielski // ::com::sun::star::frame::XFrameActionListener 502*b1cdbd2cSJim Jagielski virtual void SAL_CALL frameAction(const ::com::sun::star::frame::FrameActionEvent& aEvent) throw( ::com::sun::star::uno::RuntimeException ); 503*b1cdbd2cSJim Jagielski // lang::XInitialization 504*b1cdbd2cSJim Jagielski virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 505*b1cdbd2cSJim Jagielski 506*b1cdbd2cSJim Jagielski // XServiceInfo 507*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException) = 0; 508*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL supportsService(const ::rtl::OUString& ServiceName) throw(::com::sun::star::uno::RuntimeException); 509*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException) = 0; 510*b1cdbd2cSJim Jagielski 511*b1cdbd2cSJim Jagielski // XDispatchInformationProvider 512*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::sal_Int16 > SAL_CALL getSupportedCommandGroups() throw (::com::sun::star::uno::RuntimeException); 513*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::com::sun::star::frame::DispatchInformation > SAL_CALL getConfigurableDispatchInformation( ::sal_Int16 ) throw (::com::sun::star::uno::RuntimeException); 514*b1cdbd2cSJim Jagielski 515*b1cdbd2cSJim Jagielski // XTitle 516*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getTitle( ) throw (::com::sun::star::uno::RuntimeException); 517*b1cdbd2cSJim Jagielski virtual void SAL_CALL setTitle( const ::rtl::OUString& sTitle ) throw (::com::sun::star::uno::RuntimeException); 518*b1cdbd2cSJim Jagielski 519*b1cdbd2cSJim Jagielski // XTitleChangeBroadcaster 520*b1cdbd2cSJim Jagielski virtual void SAL_CALL addTitleChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitleChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 521*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeTitleChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitleChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); 522*b1cdbd2cSJim Jagielski 523*b1cdbd2cSJim Jagielski // XUserInputInterception 524*b1cdbd2cSJim Jagielski virtual void SAL_CALL addKeyHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XKeyHandler >& xHandler ) throw (::com::sun::star::uno::RuntimeException); 525*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeKeyHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XKeyHandler >& xHandler ) throw (::com::sun::star::uno::RuntimeException); 526*b1cdbd2cSJim Jagielski virtual void SAL_CALL addMouseClickHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseClickHandler >& xHandler ) throw (::com::sun::star::uno::RuntimeException); 527*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeMouseClickHandler( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseClickHandler >& xHandler ) throw (::com::sun::star::uno::RuntimeException); 528*b1cdbd2cSJim Jagielski 529*b1cdbd2cSJim Jagielski protected: 530*b1cdbd2cSJim Jagielski #ifdef WNT 531*b1cdbd2cSJim Jagielski OGenericUnoController(); // never implemented 532*b1cdbd2cSJim Jagielski #endif 533*b1cdbd2cSJim Jagielski }; 534*b1cdbd2cSJim Jagielski } 535*b1cdbd2cSJim Jagielski 536*b1cdbd2cSJim Jagielski #endif //DBAUI_GENERICCONTROLLER_HXX 537*b1cdbd2cSJim Jagielski 538*b1cdbd2cSJim Jagielski 539