1*f8e07b45SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*f8e07b45SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*f8e07b45SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*f8e07b45SAndrew Rist * distributed with this work for additional information 6*f8e07b45SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*f8e07b45SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*f8e07b45SAndrew Rist * "License"); you may not use this file except in compliance 9*f8e07b45SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*f8e07b45SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*f8e07b45SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*f8e07b45SAndrew Rist * software distributed under the License is distributed on an 15*f8e07b45SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*f8e07b45SAndrew Rist * KIND, either express or implied. See the License for the 17*f8e07b45SAndrew Rist * specific language governing permissions and limitations 18*f8e07b45SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*f8e07b45SAndrew Rist *************************************************************/ 21*f8e07b45SAndrew Rist 22*f8e07b45SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef __FRAMEWORK_DISPATCH_BASEDISPATCHER_HXX_ 25cdf0e10cSrcweir #define __FRAMEWORK_DISPATCH_BASEDISPATCHER_HXX_ 26cdf0e10cSrcweir 27cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 28cdf0e10cSrcweir // my own includes 29cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include <classes/taskcreator.hxx> 32cdf0e10cSrcweir #include <threadhelp/resetableguard.hxx> 33cdf0e10cSrcweir #include <threadhelp/threadhelpbase.hxx> 34cdf0e10cSrcweir 35cdf0e10cSrcweir #ifndef __FRAMEWORK_THREADHELP_TRANSACTIONBASE_HXX_ 36cdf0e10cSrcweir #include <threadhelp/transactionbase.hxx> 37cdf0e10cSrcweir #endif 38cdf0e10cSrcweir #include <macros/xinterface.hxx> 39cdf0e10cSrcweir #include <macros/xtypeprovider.hxx> 40cdf0e10cSrcweir #include <macros/debug.hxx> 41cdf0e10cSrcweir #include <macros/generic.hxx> 42cdf0e10cSrcweir #include <stdtypes.h> 43cdf0e10cSrcweir 44cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 45cdf0e10cSrcweir // interface includes 46cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 47cdf0e10cSrcweir #include <com/sun/star/lang/XTypeProvider.hpp> 48cdf0e10cSrcweir #include <com/sun/star/frame/XNotifyingDispatch.hpp> 49cdf0e10cSrcweir #include <com/sun/star/util/URL.hpp> 50cdf0e10cSrcweir #include <com/sun/star/frame/DispatchDescriptor.hpp> 51cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp> 52cdf0e10cSrcweir #include <com/sun/star/frame/XDispatchResultListener.hpp> 53cdf0e10cSrcweir #include <com/sun/star/frame/XFrameLoader.hpp> 54cdf0e10cSrcweir #include <com/sun/star/frame/XLoadEventListener.hpp> 55cdf0e10cSrcweir #include <com/sun/star/frame/XDesktop.hpp> 56cdf0e10cSrcweir #include <com/sun/star/frame/FeatureStateEvent.hpp> 57cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 58cdf0e10cSrcweir 59cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 60cdf0e10cSrcweir // other includes 61cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 62cdf0e10cSrcweir #include <cppuhelper/weak.hxx> 63cdf0e10cSrcweir #include <cppuhelper/weakref.hxx> 64cdf0e10cSrcweir #include <cppuhelper/interfacecontainer.h> 65cdf0e10cSrcweir /*DRAFT 66cdf0e10cSrcweir #include <unotools/historyoptions.hxx> 67cdf0e10cSrcweir */ 68cdf0e10cSrcweir 69cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 70cdf0e10cSrcweir // namespace 71cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 72cdf0e10cSrcweir 73cdf0e10cSrcweir namespace framework{ 74cdf0e10cSrcweir 75cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 76cdf0e10cSrcweir // exported const 77cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 78cdf0e10cSrcweir 79cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 80cdf0e10cSrcweir // exported definitions 81cdf0e10cSrcweir //_________________________________________________________________________________________________________________ 82cdf0e10cSrcweir 83cdf0e10cSrcweir /*-************************************************************************************************************//** 84cdf0e10cSrcweir @descr We must support loading of different URLs with different handler or loader into different tasks simultaniously. 85cdf0e10cSrcweir They call us back to return state of operation. We need some informations to distinguish 86cdf0e10cSrcweir between these different "loading threads". 87cdf0e10cSrcweir This is the reason to implement this dynamicly list. 88cdf0e10cSrcweir 89cdf0e10cSrcweir @attention I maked class LoaderThreads threadsafe! Using will be easier in a multithreaded environment. 90cdf0e10cSrcweir struct DispatchBinding doesn't need that! 91cdf0e10cSrcweir *//*-*************************************************************************************************************/ 92cdf0e10cSrcweir struct LoadBinding 93cdf0e10cSrcweir { 94cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 95cdf0e10cSrcweir public: 96cdf0e10cSrcweir 97cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- LoadBindingframework::LoadBinding98cdf0e10cSrcweir inline LoadBinding() 99cdf0e10cSrcweir { 100cdf0e10cSrcweir free(); 101cdf0e10cSrcweir } 102cdf0e10cSrcweir 103cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 104cdf0e10cSrcweir // use to initialize struct for asynchronous dispatching by using handler LoadBindingframework::LoadBinding105cdf0e10cSrcweir inline LoadBinding( const css::util::URL& aNewURL , 106cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue > lNewDescriptor , 107cdf0e10cSrcweir const css::uno::Reference< css::frame::XDispatch >& xNewHandler , 108cdf0e10cSrcweir const css::uno::Any& aNewAsyncInfo ) 109cdf0e10cSrcweir { 110cdf0e10cSrcweir free(); 111cdf0e10cSrcweir xHandler = xNewHandler ; 112cdf0e10cSrcweir aURL = aNewURL ; 113cdf0e10cSrcweir lDescriptor = lNewDescriptor; 114cdf0e10cSrcweir aAsyncInfo = aNewAsyncInfo ; 115cdf0e10cSrcweir } 116cdf0e10cSrcweir 117cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 118cdf0e10cSrcweir // use to initialize struct for asynchronous loading by using frame loader LoadBindingframework::LoadBinding119cdf0e10cSrcweir inline LoadBinding( const css::util::URL& aNewURL , 120cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue > lNewDescriptor , 121cdf0e10cSrcweir const css::uno::Reference< css::frame::XFrame >& xNewFrame , 122cdf0e10cSrcweir const css::uno::Reference< css::frame::XFrameLoader >& xNewLoader , 123cdf0e10cSrcweir const css::uno::Any& aNewAsyncInfo ) 124cdf0e10cSrcweir { 125cdf0e10cSrcweir free(); 126cdf0e10cSrcweir xLoader = xNewLoader ; 127cdf0e10cSrcweir xFrame = xNewFrame ; 128cdf0e10cSrcweir aURL = aNewURL ; 129cdf0e10cSrcweir lDescriptor = lNewDescriptor; 130cdf0e10cSrcweir aAsyncInfo = aNewAsyncInfo ; 131cdf0e10cSrcweir } 132cdf0e10cSrcweir 133cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 134cdf0e10cSrcweir // dont forget toe release used references ~LoadBindingframework::LoadBinding135cdf0e10cSrcweir inline ~LoadBinding() 136cdf0e10cSrcweir { 137cdf0e10cSrcweir free(); 138cdf0e10cSrcweir } 139cdf0e10cSrcweir 140cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- freeframework::LoadBinding141cdf0e10cSrcweir inline void free() 142cdf0e10cSrcweir { 143cdf0e10cSrcweir xHandler = css::uno::Reference< css::frame::XDispatch >() ; 144cdf0e10cSrcweir xLoader = css::uno::Reference< css::frame::XFrameLoader >(); 145cdf0e10cSrcweir xFrame = css::uno::Reference< css::frame::XFrame >() ; 146cdf0e10cSrcweir aURL = css::util::URL() ; 147cdf0e10cSrcweir lDescriptor = css::uno::Sequence< css::beans::PropertyValue >(); 148cdf0e10cSrcweir aAsyncInfo = css::uno::Any() ; 149cdf0e10cSrcweir } 150cdf0e10cSrcweir 151cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 152cdf0e10cSrcweir public: 153cdf0e10cSrcweir css::uno::Reference< css::frame::XDispatch > xHandler ; // if handler was used, this reference will be valid 154cdf0e10cSrcweir css::uno::Reference< css::frame::XFrameLoader > xLoader ; // if loader was used, this reference will be valid 155cdf0e10cSrcweir css::uno::Reference< css::frame::XFrame > xFrame ; // Target of loading 156cdf0e10cSrcweir css::util::URL aURL ; // dispatched URL - neccessary to find listener for status event! 157cdf0e10cSrcweir css::uno::Sequence< css::beans::PropertyValue > lDescriptor ; // dispatched arguments - neccessary for "reactForLoadingState()"! 158cdf0e10cSrcweir css::uno::Any aAsyncInfo ; // superclasses could use them to save her own user specific data for these asynchron call-info 159cdf0e10cSrcweir css::uno::Reference< css::frame::XDispatchResultListener > xListener; 160cdf0e10cSrcweir }; 161cdf0e10cSrcweir 162cdf0e10cSrcweir //***************************************************************************************************************** 163cdf0e10cSrcweir class LoaderThreads : private ::std::vector< LoadBinding > 164cdf0e10cSrcweir , private ThreadHelpBase 165cdf0e10cSrcweir { 166cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 167cdf0e10cSrcweir public: 168cdf0e10cSrcweir 169cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- LoaderThreads()170cdf0e10cSrcweir inline LoaderThreads() 171cdf0e10cSrcweir : ThreadHelpBase() 172cdf0e10cSrcweir { 173cdf0e10cSrcweir } 174cdf0e10cSrcweir 175cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- append(const LoadBinding & aBinding)176cdf0e10cSrcweir inline void append( const LoadBinding& aBinding ) 177cdf0e10cSrcweir { 178cdf0e10cSrcweir ResetableGuard aGuard( m_aLock ); 179cdf0e10cSrcweir push_back( aBinding ); 180cdf0e10cSrcweir } 181cdf0e10cSrcweir 182cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 183cdf0e10cSrcweir /// search for handler thread in list wich match given parameter and delete it searchAndForget(const css::uno::Reference<css::frame::XDispatchResultListener> & rListener,LoadBinding & aBinding)184cdf0e10cSrcweir inline sal_Bool searchAndForget( const css::uno::Reference < css::frame::XDispatchResultListener >& rListener, LoadBinding& aBinding ) 185cdf0e10cSrcweir { 186cdf0e10cSrcweir ResetableGuard aGuard( m_aLock ); 187cdf0e10cSrcweir sal_Bool bFound = sal_False; 188cdf0e10cSrcweir for( iterator pItem=begin(); pItem!=end(); ++pItem ) 189cdf0e10cSrcweir { 190cdf0e10cSrcweir if( pItem->xListener == rListener ) 191cdf0e10cSrcweir { 192cdf0e10cSrcweir aBinding = *pItem; 193cdf0e10cSrcweir erase( pItem ); 194cdf0e10cSrcweir bFound = sal_True; 195cdf0e10cSrcweir break; 196cdf0e10cSrcweir } 197cdf0e10cSrcweir } 198cdf0e10cSrcweir return bFound; 199cdf0e10cSrcweir } 200cdf0e10cSrcweir 201cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 202cdf0e10cSrcweir /// search for loader thread in list wich match given parameter and delete it searchAndForget(const css::uno::Reference<css::frame::XFrameLoader> xLoader,LoadBinding & aBinding)203cdf0e10cSrcweir inline sal_Bool searchAndForget( const css::uno::Reference< css::frame::XFrameLoader > xLoader, LoadBinding& aBinding ) 204cdf0e10cSrcweir { 205cdf0e10cSrcweir ResetableGuard aGuard( m_aLock ); 206cdf0e10cSrcweir sal_Bool bFound = sal_False; 207cdf0e10cSrcweir for( iterator pItem=begin(); pItem!=end(); ++pItem ) 208cdf0e10cSrcweir { 209cdf0e10cSrcweir if( pItem->xLoader == xLoader ) 210cdf0e10cSrcweir { 211cdf0e10cSrcweir aBinding = *pItem; 212cdf0e10cSrcweir erase( pItem ); 213cdf0e10cSrcweir bFound = sal_True; 214cdf0e10cSrcweir break; 215cdf0e10cSrcweir } 216cdf0e10cSrcweir } 217cdf0e10cSrcweir return bFound; 218cdf0e10cSrcweir } 219cdf0e10cSrcweir 220cdf0e10cSrcweir //--------------------------------------------------------------------------------------------------------- 221cdf0e10cSrcweir // free ALL memory ... I hope it free()222cdf0e10cSrcweir inline void free() 223cdf0e10cSrcweir { 224cdf0e10cSrcweir ResetableGuard aGuard( m_aLock ); 225cdf0e10cSrcweir LoaderThreads().swap( *this ); 226cdf0e10cSrcweir } 227cdf0e10cSrcweir }; 228cdf0e10cSrcweir 229cdf0e10cSrcweir /*-************************************************************************************************************//** 230cdf0e10cSrcweir @short base class for dispatcher implementations 231cdf0e10cSrcweir @descr Most of our dispatch implementations do everytime the same. They try to handle or load 232cdf0e10cSrcweir somethinmg into a target ... normaly a frame/task/pluginframe! 233cdf0e10cSrcweir They must do it synchron or sometimes asynchron. They must wait for callbacks and 234cdf0e10cSrcweir notify registered listener with right status events. 235cdf0e10cSrcweir All these things are implemented by this baseclass. You should override some methods 236cdf0e10cSrcweir to change something. 237cdf0e10cSrcweir 238cdf0e10cSrcweir "dispatch()" => should be you dispatch algorithm 239cdf0e10cSrcweir "reactForLoadingState()" => do something depending from loading state ... 240cdf0e10cSrcweir 241cdf0e10cSrcweir @implements XInterface 242cdf0e10cSrcweir XDispatch 243cdf0e10cSrcweir XLoadEventListener 244cdf0e10cSrcweir XEventListener 245cdf0e10cSrcweir 246cdf0e10cSrcweir @base ThreadHelpBase 247cdf0e10cSrcweir TransactionBase 248cdf0e10cSrcweir OWeakObject 249cdf0e10cSrcweir 250cdf0e10cSrcweir @devstatus ready to use 251cdf0e10cSrcweir @threadsafe yes 252cdf0e10cSrcweir *//*-*************************************************************************************************************/ 253cdf0e10cSrcweir class BaseDispatcher : // interfaces 254cdf0e10cSrcweir public css::lang::XTypeProvider , 255cdf0e10cSrcweir public css::frame::XNotifyingDispatch , 256cdf0e10cSrcweir public css::frame::XLoadEventListener , // => XEventListener too! 257cdf0e10cSrcweir // baseclasses 258cdf0e10cSrcweir // Order is neccessary for right initialization! 259cdf0e10cSrcweir protected ThreadHelpBase , 260cdf0e10cSrcweir protected TransactionBase , 261cdf0e10cSrcweir public ::cppu::OWeakObject 262cdf0e10cSrcweir { 263cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 264cdf0e10cSrcweir // public methods 265cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 266cdf0e10cSrcweir public: 267cdf0e10cSrcweir 268cdf0e10cSrcweir // constructor / destructor 269cdf0e10cSrcweir BaseDispatcher( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory , 270cdf0e10cSrcweir const css::uno::Reference< css::frame::XFrame >& xOwnerFrame ); 271cdf0e10cSrcweir 272cdf0e10cSrcweir void dispatchFinished ( const css::frame::DispatchResultEvent& aEvent, const css::uno::Reference < css::frame::XDispatchResultListener >& rListener ); 273cdf0e10cSrcweir 274cdf0e10cSrcweir // XInterface 275cdf0e10cSrcweir DECLARE_XINTERFACE 276cdf0e10cSrcweir DECLARE_XTYPEPROVIDER 277cdf0e10cSrcweir 278cdf0e10cSrcweir // XNotifyingDispatch 279cdf0e10cSrcweir virtual void SAL_CALL dispatchWithNotification ( const css::util::URL& aURL, 280cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue >& aArgs, 281cdf0e10cSrcweir const css::uno::Reference< css::frame::XDispatchResultListener >& Listener ) throw ( css::uno::RuntimeException); 282cdf0e10cSrcweir 283cdf0e10cSrcweir // XDispatch 284cdf0e10cSrcweir virtual void SAL_CALL dispatch ( const css::util::URL& aURL , 285cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue >& lArguments ) throw( css::uno::RuntimeException ) = 0; 286cdf0e10cSrcweir virtual void SAL_CALL addStatusListener ( const css::uno::Reference< css::frame::XStatusListener >& xListener , 287cdf0e10cSrcweir const css::util::URL& aURL ) throw( css::uno::RuntimeException ); 288cdf0e10cSrcweir virtual void SAL_CALL removeStatusListener ( const css::uno::Reference< css::frame::XStatusListener >& xListener , 289cdf0e10cSrcweir const css::util::URL& aURL ) throw( css::uno::RuntimeException ); 290cdf0e10cSrcweir 291cdf0e10cSrcweir // XLoadEventListener 292cdf0e10cSrcweir virtual void SAL_CALL loadFinished ( const css::uno::Reference< css::frame::XFrameLoader >& xLoader ) throw( css::uno::RuntimeException ); 293cdf0e10cSrcweir virtual void SAL_CALL loadCancelled ( const css::uno::Reference< css::frame::XFrameLoader >& xLoader ) throw( css::uno::RuntimeException ); 294cdf0e10cSrcweir 295cdf0e10cSrcweir // XEventListener 296cdf0e10cSrcweir virtual void SAL_CALL disposing ( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 297cdf0e10cSrcweir 298cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 299cdf0e10cSrcweir // protected methods 300cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 301cdf0e10cSrcweir protected: 302cdf0e10cSrcweir virtual ~BaseDispatcher(); 303cdf0e10cSrcweir 304cdf0e10cSrcweir /*-****************************************************************************************************//** 305cdf0e10cSrcweir @short you should react for successfully or failed load/handle operations. 306cdf0e10cSrcweir @descr These baseclass implement handling of dispatched URLs and synchronous/asynchronous loading 307cdf0e10cSrcweir of it into a target frame. It implement the complete listener mechanism to get events from 308cdf0e10cSrcweir used loader or handler and sending of status events to registered listener too! 309cdf0e10cSrcweir But we couldn't react for this events in all cases. 310cdf0e10cSrcweir May be - you wish to reactivate suspended controllers or wish to delete a new created 311cdf0e10cSrcweir task if operation failed ...!? 312cdf0e10cSrcweir By overwriting these pure virtual methods it's possible to do such things. 313cdf0e10cSrcweir We call you with all available informations ... you should react for it. 314cdf0e10cSrcweir BUT - don't send any status events to your listener! We will do it everytime. 315cdf0e10cSrcweir (other listener could be informed as well!) 316cdf0e10cSrcweir 317cdf0e10cSrcweir You will called back in: a) "reactForLoadingState()" , if URL was loaded into a frame 318cdf0e10cSrcweir b) "reactForHandlingState()", if URL was handled by a registered content handler 319cdf0e10cSrcweir (without using a target frame!) 320cdf0e10cSrcweir 321cdf0e10cSrcweir @seealso method statusChanged() 322cdf0e10cSrcweir @seealso method loadFinished() 323cdf0e10cSrcweir @seealso method loadCancelled() 324cdf0e10cSrcweir 325cdf0e10cSrcweir @param "aURL" , original dispatched URL 326cdf0e10cSrcweir @param "lDescriptor" , original dispatched arguments 327cdf0e10cSrcweir @param "xTarget" , target of operation (could be NULL if URL was handled not loaded!) 328cdf0e10cSrcweir @param "bState" , state of operation 329cdf0e10cSrcweir @return - 330cdf0e10cSrcweir 331cdf0e10cSrcweir @onerror - 332cdf0e10cSrcweir @threadsafe - 333cdf0e10cSrcweir *//*-*****************************************************************************************************/ 334cdf0e10cSrcweir virtual void SAL_CALL reactForLoadingState ( const css::util::URL& aURL , 335cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue >& lDescriptor , 336cdf0e10cSrcweir const css::uno::Reference< css::frame::XFrame >& xTarget , 337cdf0e10cSrcweir sal_Bool bState , 338cdf0e10cSrcweir const css::uno::Any& aAsyncInfo ) = 0; 339cdf0e10cSrcweir 340cdf0e10cSrcweir virtual void SAL_CALL reactForHandlingState( const css::util::URL& aURL , 341cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue >& lDescriptor , 342cdf0e10cSrcweir sal_Bool bState , 343cdf0e10cSrcweir const css::uno::Any& aAsyncInfo ) = 0; 344cdf0e10cSrcweir 345cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 346cdf0e10cSrcweir // protected methods 347cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 348cdf0e10cSrcweir protected: 349cdf0e10cSrcweir ::rtl::OUString implts_detectType ( const css::util::URL& aURL , 350cdf0e10cSrcweir css::uno::Sequence< css::beans::PropertyValue >& lDescriptor , 351cdf0e10cSrcweir sal_Bool bDeep ); 352cdf0e10cSrcweir sal_Bool implts_handleIt ( const css::util::URL& aURL , 353cdf0e10cSrcweir css::uno::Sequence< css::beans::PropertyValue >& lDescriptor , 354cdf0e10cSrcweir const ::rtl::OUString& sTypeName , 355cdf0e10cSrcweir const css::uno::Any& aAsyncInfo = css::uno::Any() ); 356cdf0e10cSrcweir sal_Bool implts_loadIt ( const css::util::URL& aURL , 357cdf0e10cSrcweir css::uno::Sequence< css::beans::PropertyValue >& lDescriptor , 358cdf0e10cSrcweir const ::rtl::OUString& sTypeName , 359cdf0e10cSrcweir const css::uno::Reference< css::frame::XFrame >& xTarget , 360cdf0e10cSrcweir const css::uno::Any& aAsyncInfo = css::uno::Any() ); 361cdf0e10cSrcweir void implts_enableFrame ( const css::uno::Reference< css::frame::XFrame >& xFrame , 362cdf0e10cSrcweir const css::uno::Sequence< css::beans::PropertyValue >& lDescriptor ); 363cdf0e10cSrcweir void implts_disableFrame ( const css::uno::Reference< css::frame::XFrame >& xFrame ); 364cdf0e10cSrcweir sal_Bool implts_deactivateController ( const css::uno::Reference< css::frame::XController >& xController ); 365cdf0e10cSrcweir sal_Bool implts_reactivateController ( const css::uno::Reference< css::frame::XController >& xController ); 366cdf0e10cSrcweir void implts_sendResultEvent ( const css::uno::Reference< css::frame::XFrame >& xEventSource , 367cdf0e10cSrcweir const ::rtl::OUString& sURL , 368cdf0e10cSrcweir sal_Bool bLoadState ); 369cdf0e10cSrcweir 370cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 371cdf0e10cSrcweir // variables 372cdf0e10cSrcweir // - should be private normaly ... 373cdf0e10cSrcweir // - but some super classes need access to some of them => protected! 374cdf0e10cSrcweir //------------------------------------------------------------------------------------------------------------- 375cdf0e10cSrcweir protected: 376cdf0e10cSrcweir css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory ; /// global uno service manager to create new services 377cdf0e10cSrcweir css::uno::WeakReference< css::frame::XFrame > m_xOwner ; /// weakreference to owner (Don't use a hard reference. Owner can't delete us then!) 378cdf0e10cSrcweir 379cdf0e10cSrcweir private: 380cdf0e10cSrcweir LoaderThreads m_aLoaderThreads ; /// list of bindings between handler/loader, tasks and loaded URLs 381cdf0e10cSrcweir ListenerHash m_aListenerContainer ; /// hash table for listener at specified URLs 382cdf0e10cSrcweir 383cdf0e10cSrcweir }; // class BaseDispatcher 384cdf0e10cSrcweir 385cdf0e10cSrcweir } // namespace framework 386cdf0e10cSrcweir 387cdf0e10cSrcweir #endif // #ifndef __FRAMEWORK_DISPATCH_BASEDISPATCHER_HXX_ 388