1*2d785d7eSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*2d785d7eSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*2d785d7eSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*2d785d7eSAndrew Rist * distributed with this work for additional information 6*2d785d7eSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*2d785d7eSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*2d785d7eSAndrew Rist * "License"); you may not use this file except in compliance 9*2d785d7eSAndrew Rist * with the License. You may obtain a copy of the License at 10*2d785d7eSAndrew Rist * 11*2d785d7eSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*2d785d7eSAndrew Rist * 13*2d785d7eSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*2d785d7eSAndrew Rist * software distributed under the License is distributed on an 15*2d785d7eSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*2d785d7eSAndrew Rist * KIND, either express or implied. See the License for the 17*2d785d7eSAndrew Rist * specific language governing permissions and limitations 18*2d785d7eSAndrew Rist * under the License. 19*2d785d7eSAndrew Rist * 20*2d785d7eSAndrew Rist *************************************************************/ 21*2d785d7eSAndrew Rist 22*2d785d7eSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef FORMS_SOURCE_INC_CONTROLFEATUREINTERCEPTION_HXX 25cdf0e10cSrcweir #define FORMS_SOURCE_INC_CONTROLFEATUREINTERCEPTION_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir /** === begin UNO includes === **/ 28cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 29cdf0e10cSrcweir #include <com/sun/star/frame/XDispatchProviderInterceptor.hpp> 30cdf0e10cSrcweir /** === end UNO includes === **/ 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include <memory> 33cdf0e10cSrcweir 34cdf0e10cSrcweir //........................................................................ 35cdf0e10cSrcweir namespace frm 36cdf0e10cSrcweir { 37cdf0e10cSrcweir //........................................................................ 38cdf0e10cSrcweir 39cdf0e10cSrcweir class UrlTransformer; 40cdf0e10cSrcweir //==================================================================== 41cdf0e10cSrcweir //= ControlFeatureInterception 42cdf0e10cSrcweir //==================================================================== 43cdf0e10cSrcweir /** helper class for controls which allow some of their features to be intercepted 44cdf0e10cSrcweir by external instances 45cdf0e10cSrcweir 46cdf0e10cSrcweir For using this class, instantiate it as member, derive yourself from 47cdf0e10cSrcweir <type scope="com::sun::star::frame">XDispatchProviderInterception</type>, and forward all 48cdf0e10cSrcweir respective methods to this member. 49cdf0e10cSrcweir 50cdf0e10cSrcweir Additionally, don't forget to call <member>dispose</member> when your class is disposed itself. 51cdf0e10cSrcweir */ 52cdf0e10cSrcweir class ControlFeatureInterception 53cdf0e10cSrcweir { 54cdf0e10cSrcweir private: 55cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor > 56cdf0e10cSrcweir m_xFirstDispatchInterceptor; 57cdf0e10cSrcweir ::std::auto_ptr< UrlTransformer > m_pUrlTransformer; 58cdf0e10cSrcweir 59cdf0e10cSrcweir public: 60cdf0e10cSrcweir /** retrieves our URL transformer, so our clients may use it, too 61cdf0e10cSrcweir */ getTransformer() const62cdf0e10cSrcweir const UrlTransformer& getTransformer() const { return *m_pUrlTransformer; } 63cdf0e10cSrcweir 64cdf0e10cSrcweir public: 65cdf0e10cSrcweir ControlFeatureInterception( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB ); 66cdf0e10cSrcweir 67cdf0e10cSrcweir // XDispatchProviderInterception 68cdf0e10cSrcweir void SAL_CALL registerDispatchProviderInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException ); 69cdf0e10cSrcweir void SAL_CALL releaseDispatchProviderInterceptor( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor >& Interceptor ) throw (::com::sun::star::uno::RuntimeException ); 70cdf0e10cSrcweir 71cdf0e10cSrcweir // XComponent 72cdf0e10cSrcweir void SAL_CALL dispose(); 73cdf0e10cSrcweir 74cdf0e10cSrcweir /** queries the interceptor chain for the given dispatch 75cdf0e10cSrcweir */ 76cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > 77cdf0e10cSrcweir queryDispatch( const ::com::sun::star::util::URL& _rURL, const ::rtl::OUString& _rTargetFrameName, ::sal_Int32 _nSearchFlags ) SAL_THROW((::com::sun::star::uno::RuntimeException)); 78cdf0e10cSrcweir 79cdf0e10cSrcweir /** queries the interceptor chain for the given dispatch, with a blank target frame and no frame search flags 80cdf0e10cSrcweir */ 81cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > 82cdf0e10cSrcweir queryDispatch( const ::com::sun::star::util::URL& _rURL ) SAL_THROW((::com::sun::star::uno::RuntimeException)); 83cdf0e10cSrcweir 84cdf0e10cSrcweir /** queries the interceptor chain for the URL given as ASCII string, 85cdf0e10cSrcweir with a blank target frame and no frame search flags 86cdf0e10cSrcweir */ 87cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > 88cdf0e10cSrcweir queryDispatch( const sal_Char* _pAsciiURL ) SAL_THROW((::com::sun::star::uno::RuntimeException)); 89cdf0e10cSrcweir }; 90cdf0e10cSrcweir 91cdf0e10cSrcweir //........................................................................ 92cdf0e10cSrcweir } // namespace frm 93cdf0e10cSrcweir //........................................................................ 94cdf0e10cSrcweir 95cdf0e10cSrcweir #endif // FORMS_SOURCE_INC_CONTROLFEATUREINTERCEPTION_HXX 96cdf0e10cSrcweir 97