1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef __FRAMEWORK_SERVICES_FRAME_HXX_ 25 #define __FRAMEWORK_SERVICES_FRAME_HXX_ 26 27 //_________________________________________________________________________________________________________________ 28 // my own includes 29 //_________________________________________________________________________________________________________________ 30 31 #include <classes/framecontainer.hxx> 32 #include <classes/propertysethelper.hxx> 33 #include <threadhelp/resetableguard.hxx> 34 #include <threadhelp/writeguard.hxx> 35 #include <threadhelp/readguard.hxx> 36 #include <threadhelp/threadhelpbase.hxx> 37 38 #ifndef __FRAMEWORK_THREADHELP_TRANSACTIONBASE_HXX_ 39 #include <threadhelp/transactionbase.hxx> 40 #endif 41 #include <macros/generic.hxx> 42 #include <macros/debug.hxx> 43 #include <macros/xinterface.hxx> 44 #include <macros/xtypeprovider.hxx> 45 #include <macros/xserviceinfo.hxx> 46 #include <general.h> 47 48 //_________________________________________________________________________________________________________________ 49 // interface includes 50 //_________________________________________________________________________________________________________________ 51 #include <com/sun/star/frame/XDispatchInformationProvider.hpp> 52 #include <com/sun/star/frame/XComponentLoader.hpp> 53 #include <com/sun/star/frame/XController.hpp> 54 #include <com/sun/star/frame/XDispatch.hpp> 55 #include <com/sun/star/frame/XDispatchProvider.hpp> 56 #include <com/sun/star/frame/XDispatchRecorderSupplier.hpp> 57 #include <com/sun/star/frame/XDispatchProviderInterception.hpp> 58 #include <com/sun/star/frame/XDispatchProviderInterceptor.hpp> 59 #include <com/sun/star/lang/XEventListener.hpp> 60 #include <com/sun/star/frame/XFrame.hpp> 61 #include <com/sun/star/frame/XFrameActionListener.hpp> 62 #include <com/sun/star/frame/XFrames.hpp> 63 #include <com/sun/star/frame/XFramesSupplier.hpp> 64 #include <com/sun/star/frame/XTitle.hpp> 65 #include <com/sun/star/frame/XTitleChangeBroadcaster.hpp> 66 #include <com/sun/star/task/XStatusIndicator.hpp> 67 #include <com/sun/star/task/XStatusIndicatorFactory.hpp> 68 #include <com/sun/star/awt/XTopWindowListener.hpp> 69 #include <com/sun/star/awt/XWindow.hpp> 70 #include <com/sun/star/awt/XTopWindow.hpp> 71 #include <com/sun/star/awt/XWindowListener.hpp> 72 #include <com/sun/star/awt/XFocusListener.hpp> 73 #include <com/sun/star/awt/FocusEvent.hpp> 74 #include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp> 75 #include <com/sun/star/document/XActionLockable.hpp> 76 #include <com/sun/star/util/XCloseable.hpp> 77 #include <com/sun/star/frame/XLayoutManager.hpp> 78 79 //_________________________________________________________________________________________________________________ 80 // other includes 81 //_________________________________________________________________________________________________________________ 82 #include <unotools/cmdoptions.hxx> 83 #include <cppuhelper/interfacecontainer.hxx> 84 #include <cppuhelper/weak.hxx> 85 #include <rtl/string.hxx> 86 87 //_________________________________________________________________________________________________________________ 88 // namespace 89 //_________________________________________________________________________________________________________________ 90 91 namespace framework{ 92 93 //_________________________________________________________________________________________________________________ 94 // exported const 95 //_________________________________________________________________________________________________________________ 96 97 // This enum can be used to set different active states of frames 98 enum EActiveState 99 { 100 E_INACTIVE , // I'am not a member of active path in tree and i don't have the focus. 101 E_ACTIVE , // I'am in the middle of an active path in tree and i don't have the focus. 102 E_FOCUS // I have the focus now. I must a member of an active path! 103 }; 104 105 //_________________________________________________________________________________________________________________ 106 // exported definitions 107 //_________________________________________________________________________________________________________________ 108 109 /*-************************************************************************************************************//** 110 @short implements a normal frame of hierarchy 111 @descr An instance of these class can be a normal node in frame tree. A frame support influencing of his 112 subtree, find of subframes, activate- and deactivate-mechanism as well as 113 set/get of a frame window, component or controller. 114 115 @attention This implementation supports three states: a)uninitialized, b)working, c)disposed 116 If you call wrong methods in modes a) or c) ... you will get some exceptions. 117 How you should work with this service: 118 i) create it by using "xServiceManager->createInstance(...)" 119 ii) call XInitialization::initialize() with a valid window reference or use createInstanceWithArguments() at i) 120 iii) works with object 121 iv) dispose object by calling XComponent::dispose() 122 After iv) all further requests are rejected by exceptions! (DisposedException) 123 124 @base ThreadHelpBase 125 help to guarantee correct initialized lock member at startup 126 @base TransactionBase 127 help to implement unbreakable interface calls 128 @base OBroadcastHelper 129 OPropertySetHelper 130 implements the property set 131 @base OWeakObject 132 provides the refcount and XInterface, XWeak 133 134 @devstatus ready to use 135 @threadsafe yes 136 @modified 04.10.2004 10:47, as96863 137 *//*-*************************************************************************************************************/ 138 class Frame : // interfaces 139 public css::lang::XTypeProvider , 140 public css::lang::XServiceInfo , 141 public css::frame::XFramesSupplier , // => XFrame => XComponent 142 public css::frame::XDispatchProvider , 143 public css::frame::XDispatchProviderInterception , 144 public css::frame::XDispatchInformationProvider , 145 public css::task::XStatusIndicatorFactory , 146 public css::awt::XWindowListener , // => XEventListener 147 public css::awt::XTopWindowListener , 148 public css::awt::XFocusListener , 149 public css::document::XActionLockable , 150 public css::util::XCloseable , // => XCloseBroadcaster 151 public css::frame::XComponentLoader , 152 public css::frame::XTitle , 153 public css::frame::XTitleChangeBroadcaster , 154 // base classes 155 // Order is necessary for right initialization of this class! 156 public ThreadHelpBase , 157 public TransactionBase , 158 public PropertySetHelper , // helper implements ThreadHelpbase, TransactionBase, XPropertySet, XPropertySetInfo 159 public ::cppu::OWeakObject // helper implements XInterface, XWeak 160 { 161 //------------------------------------------------------------------------------------------------------------- 162 // public methods 163 //------------------------------------------------------------------------------------------------------------- 164 165 public: 166 167 //--------------------------------------------------------------------------------------------------------- 168 // constructor / destructor 169 //--------------------------------------------------------------------------------------------------------- 170 Frame( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory ); 171 virtual ~Frame( ); 172 173 //--------------------------------------------------------------------------------------------------------- 174 // XInterface, XTypeProvider, XServiceInfo 175 //--------------------------------------------------------------------------------------------------------- 176 FWK_DECLARE_XINTERFACE 177 FWK_DECLARE_XTYPEPROVIDER 178 DECLARE_XSERVICEINFO 179 180 //--------------------------------------------------------------------------------------------------------- 181 // XComponentLoader 182 //--------------------------------------------------------------------------------------------------------- 183 virtual css::uno::Reference< css::lang::XComponent > SAL_CALL loadComponentFromURL ( const ::rtl::OUString& sURL , 184 const ::rtl::OUString& sTargetFrameName , 185 sal_Int32 nSearchFlags , 186 const css::uno::Sequence< css::beans::PropertyValue >& lArguments ) throw( css::io::IOException , 187 css::lang::IllegalArgumentException , 188 css::uno::RuntimeException ); 189 190 191 //--------------------------------------------------------------------------------------------------------- 192 // XFramesSupplier 193 //--------------------------------------------------------------------------------------------------------- 194 virtual css::uno::Reference< css::frame::XFrames > SAL_CALL getFrames ( ) throw( css::uno::RuntimeException ); 195 virtual css::uno::Reference< css::frame::XFrame > SAL_CALL getActiveFrame ( ) throw( css::uno::RuntimeException ); 196 virtual void SAL_CALL setActiveFrame ( const css::uno::Reference< css::frame::XFrame >& xFrame ) throw( css::uno::RuntimeException ); 197 198 //--------------------------------------------------------------------------------------------------------- 199 // XFrame 200 //--------------------------------------------------------------------------------------------------------- 201 virtual void SAL_CALL initialize ( const css::uno::Reference< css::awt::XWindow >& xWindow ) throw( css::uno::RuntimeException ); 202 virtual css::uno::Reference< css::awt::XWindow > SAL_CALL getContainerWindow ( ) throw( css::uno::RuntimeException ); 203 virtual void SAL_CALL setCreator ( const css::uno::Reference< css::frame::XFramesSupplier >& xCreator ) throw( css::uno::RuntimeException ); 204 virtual css::uno::Reference< css::frame::XFramesSupplier > SAL_CALL getCreator ( ) throw( css::uno::RuntimeException ); 205 virtual ::rtl::OUString SAL_CALL getName ( ) throw( css::uno::RuntimeException ); 206 virtual void SAL_CALL setName ( const ::rtl::OUString& sName ) throw( css::uno::RuntimeException ); 207 virtual css::uno::Reference< css::frame::XFrame > SAL_CALL findFrame ( const ::rtl::OUString& sTargetFrameName , 208 sal_Int32 nSearchFlags ) throw( css::uno::RuntimeException ); 209 virtual sal_Bool SAL_CALL isTop ( ) throw( css::uno::RuntimeException ); 210 virtual void SAL_CALL activate ( ) throw( css::uno::RuntimeException ); 211 virtual void SAL_CALL deactivate ( ) throw( css::uno::RuntimeException ); 212 virtual sal_Bool SAL_CALL isActive ( ) throw( css::uno::RuntimeException ); 213 virtual void SAL_CALL contextChanged ( ) throw( css::uno::RuntimeException ); 214 virtual sal_Bool SAL_CALL setComponent ( const css::uno::Reference< css::awt::XWindow >& xComponentWindow , 215 const css::uno::Reference< css::frame::XController >& xController ) throw( css::uno::RuntimeException ); 216 virtual css::uno::Reference< css::awt::XWindow > SAL_CALL getComponentWindow ( ) throw( css::uno::RuntimeException ); 217 virtual css::uno::Reference< css::frame::XController > SAL_CALL getController ( ) throw( css::uno::RuntimeException ); 218 virtual void SAL_CALL addFrameActionListener ( const css::uno::Reference< css::frame::XFrameActionListener >& xListener ) throw( css::uno::RuntimeException ); 219 virtual void SAL_CALL removeFrameActionListener ( const css::uno::Reference< css::frame::XFrameActionListener >& xListener ) throw( css::uno::RuntimeException ); 220 221 //--------------------------------------------------------------------------------------------------------- 222 // XComponent 223 //--------------------------------------------------------------------------------------------------------- 224 virtual void SAL_CALL dispose ( ) throw( css::uno::RuntimeException ); 225 virtual void SAL_CALL addEventListener ( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw( css::uno::RuntimeException ); 226 virtual void SAL_CALL removeEventListener ( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw( css::uno::RuntimeException ); 227 228 //--------------------------------------------------------------------------------------------------------- 229 // XStatusIndicatorFactory 230 //--------------------------------------------------------------------------------------------------------- 231 virtual css::uno::Reference< css::task::XStatusIndicator > SAL_CALL createStatusIndicator ( ) throw( css::uno::RuntimeException ); 232 233 //--------------------------------------------------------------------------------------------------------- 234 // XDispatchProvider 235 //--------------------------------------------------------------------------------------------------------- 236 virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch ( const css::util::URL& aURL , 237 const ::rtl::OUString& sTargetFrameName , 238 sal_Int32 nSearchFlags ) throw( css::uno::RuntimeException ); 239 virtual css::uno::Sequence< 240 css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches ( const css::uno::Sequence< css::frame::DispatchDescriptor >& lDescriptor ) throw( css::uno::RuntimeException ); 241 242 //--------------------------------------------------------------------------------------------------------- 243 // XDispatchProviderInterception 244 //--------------------------------------------------------------------------------------------------------- 245 virtual void SAL_CALL registerDispatchProviderInterceptor( const css::uno::Reference< css::frame::XDispatchProviderInterceptor >& xInterceptor ) throw( css::uno::RuntimeException ); 246 virtual void SAL_CALL releaseDispatchProviderInterceptor ( const css::uno::Reference< css::frame::XDispatchProviderInterceptor >& xInterceptor ) throw( css::uno::RuntimeException ); 247 248 //--------------------------------------------------------------------------------------------------------- 249 // XDispatchInformationProvider 250 //--------------------------------------------------------------------------------------------------------- 251 virtual css::uno::Sequence< sal_Int16 > SAL_CALL getSupportedCommandGroups ( ) throw (css::uno::RuntimeException); 252 virtual css::uno::Sequence< css::frame::DispatchInformation > SAL_CALL getConfigurableDispatchInformation(sal_Int16 nCommandGroup) throw (css::uno::RuntimeException); 253 254 //--------------------------------------------------------------------------------------------------------- 255 // XWindowListener 256 // Attention: windowResized() and windowShown() are implement only! All other are empty! 257 //--------------------------------------------------------------------------------------------------------- 258 virtual void SAL_CALL windowResized ( const css::awt::WindowEvent& aEvent ) throw( css::uno::RuntimeException ); 259 virtual void SAL_CALL windowMoved ( const css::awt::WindowEvent& /*aEvent*/ ) throw( css::uno::RuntimeException ) {}; 260 virtual void SAL_CALL windowShown ( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 261 virtual void SAL_CALL windowHidden ( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 262 263 //--------------------------------------------------------------------------------------------------------- 264 // XFocusListener 265 // Attention: focusLost() not implemented yet! 266 //--------------------------------------------------------------------------------------------------------- 267 virtual void SAL_CALL focusGained ( const css::awt::FocusEvent& aEvent ) throw( css::uno::RuntimeException ); 268 virtual void SAL_CALL focusLost ( const css::awt::FocusEvent& /*aEvent*/ ) throw( css::uno::RuntimeException ) {}; 269 270 //--------------------------------------------------------------------------------------------------------- 271 // XTopWindowListener 272 // Attention: windowActivated(), windowDeactivated() and windowClosing() are implement only! All other are empty! 273 //--------------------------------------------------------------------------------------------------------- 274 virtual void SAL_CALL windowActivated ( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 275 virtual void SAL_CALL windowDeactivated ( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 276 virtual void SAL_CALL windowOpened ( const css::lang::EventObject& /*aEvent*/ ) throw( css::uno::RuntimeException ) {}; 277 virtual void SAL_CALL windowClosing ( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 278 virtual void SAL_CALL windowClosed ( const css::lang::EventObject& /*aEvent*/ ) throw( css::uno::RuntimeException ) {}; 279 virtual void SAL_CALL windowMinimized ( const css::lang::EventObject& /*aEvent*/ ) throw( css::uno::RuntimeException ) {}; 280 virtual void SAL_CALL windowNormalized ( const css::lang::EventObject& /*aEvent*/ ) throw( css::uno::RuntimeException ) {}; 281 282 //--------------------------------------------------------------------------------------------------------- 283 // XEventListener 284 //--------------------------------------------------------------------------------------------------------- 285 virtual void SAL_CALL disposing ( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException ); 286 287 //--------------------------------------------------------------------------------------------------------- 288 // XActionLockable 289 //--------------------------------------------------------------------------------------------------------- 290 virtual sal_Bool SAL_CALL isActionLocked ( ) throw( css::uno::RuntimeException ); 291 virtual void SAL_CALL addActionLock ( ) throw( css::uno::RuntimeException ); 292 virtual void SAL_CALL removeActionLock( ) throw( css::uno::RuntimeException ); 293 virtual void SAL_CALL setActionLocks ( sal_Int16 nLock ) throw( css::uno::RuntimeException ); 294 virtual sal_Int16 SAL_CALL resetActionLocks( ) throw( css::uno::RuntimeException ); 295 296 //--------------------------------------------------------------------------------------------------------- 297 // XCloseable 298 //--------------------------------------------------------------------------------------------------------- 299 virtual void SAL_CALL close( sal_Bool bDeliverOwnerShip ) throw( css::util::CloseVetoException, 300 css::uno::RuntimeException ); 301 302 //--------------------------------------------------------------------------------------------------------- 303 // XCloseBroadcaster 304 //--------------------------------------------------------------------------------------------------------- 305 virtual void SAL_CALL addCloseListener ( const css::uno::Reference< css::util::XCloseListener >& xListener ) throw (css::uno::RuntimeException); 306 virtual void SAL_CALL removeCloseListener( const css::uno::Reference< css::util::XCloseListener >& xListener ) throw (css::uno::RuntimeException); 307 308 //--------------------------------------------------------------------------------------------------------- 309 // XTitle 310 //--------------------------------------------------------------------------------------------------------- 311 virtual ::rtl::OUString SAL_CALL getTitle( ) throw (css::uno::RuntimeException); 312 virtual void SAL_CALL setTitle( const ::rtl::OUString& sTitle ) throw (css::uno::RuntimeException); 313 314 //--------------------------------------------------------------------------------------------------------- 315 // XTitleChangeBroadcaster 316 //--------------------------------------------------------------------------------------------------------- 317 virtual void SAL_CALL addTitleChangeListener ( const css::uno::Reference< css::frame::XTitleChangeListener >& xListener) throw (css::uno::RuntimeException); 318 virtual void SAL_CALL removeTitleChangeListener( const css::uno::Reference< css::frame::XTitleChangeListener >& xListenr ) throw (css::uno::RuntimeException); 319 320 //--------------------------------------------------------------------------------------------------------- 321 // PropertySetHelper => XPropertySet, XPropertySetInfo 322 //--------------------------------------------------------------------------------------------------------- 323 private: 324 325 void impl_initializePropInfo(); 326 327 virtual void SAL_CALL impl_setPropertyValue(const ::rtl::OUString& sProperty, 328 sal_Int32 nHandle , 329 const css::uno::Any& aValue ); 330 331 virtual css::uno::Any SAL_CALL impl_getPropertyValue(const ::rtl::OUString& sProperty, 332 sal_Int32 nHandle ); 333 334 //------------------------------------------------------------------------------------------------------------- 335 // private methods 336 //------------------------------------------------------------------------------------------------------------- 337 338 private: 339 340 /*-****************************************************************************************************//** 341 @short helper methods 342 @descr Follow methods are needed at different points of our code (more then ones!). 343 344 @attention Threadsafe methods are signed by "implts_..."! 345 *//*-*****************************************************************************************************/ 346 347 // threadsafe 348 void implts_sendFrameActionEvent ( const css::frame::FrameAction& aAction ); 349 void implts_resizeComponentWindow ( ); 350 void implts_setIconOnWindow ( ); 351 void implts_startWindowListening ( ); 352 void implts_stopWindowListening ( ); 353 void implts_saveWindowAttributes ( ); 354 void implts_checkSuicide ( ); 355 void implts_forgetSubFrames ( ); 356 DECL_LINK( implts_windowClosing, void* ); 357 css::uno::Reference< css::awt::XTopWindow > impl_searchTopWindow ( const css::uno::Reference< css::awt::XWindow >& xWindow ); 358 359 // non threadsafe 360 void impl_checkMenuCloser ( ); 361 void impl_setCloser ( const css::uno::Reference< css::frame::XFrame >& xFrame , 362 sal_Bool bState ); 363 void impl_disposeContainerWindow ( css::uno::Reference< css::awt::XWindow >& xWindow ); 364 static const css::uno::Sequence< css::beans::Property > impl_getStaticPropertyDescriptor( ); 365 366 //------------------------------------------------------------------------------------------------------------- 367 // debug methods 368 // (should be private everyway!) 369 //------------------------------------------------------------------------------------------------------------- 370 371 /*-****************************************************************************************************//** 372 @short debug-method to check incoming parameter of some other mehods of this class 373 @descr The following methods are used to check parameters for other methods 374 of this class. The return value is used directly for an ASSERT(...). 375 376 @attention This methods are static and can't use our member directly! It's better for threadsafe code... 377 because we call it with references or pointer to check variables ... and must make it safe 378 by himself! 379 380 @seealso ASSERTs in implementation! 381 382 @param references to checking variables 383 @return sal_True ,on invalid parameter 384 @return sal_False ,otherwise 385 386 @onerror We return sal_True 387 *//*-*****************************************************************************************************/ 388 389 #ifdef ENABLE_ASSERTIONS 390 391 private: 392 393 static sal_Bool implcp_ctor ( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory ); 394 static sal_Bool implcp_setActiveFrame ( const css::uno::Reference< css::frame::XFrame >& xFrame ); 395 static sal_Bool implcp_addFrameActionListener ( const css::uno::Reference< css::frame::XFrameActionListener >& xListener ); 396 static sal_Bool implcp_removeFrameActionListener ( const css::uno::Reference< css::frame::XFrameActionListener >& xListener ); 397 static sal_Bool implcp_addEventListener ( const css::uno::Reference< css::lang::XEventListener >& xListener ); 398 static sal_Bool implcp_removeEventListener ( const css::uno::Reference< css::lang::XEventListener >& xListener ); 399 static sal_Bool implcp_windowResized ( const css::awt::WindowEvent& aEvent ); 400 static sal_Bool implcp_focusGained ( const css::awt::FocusEvent& aEvent ); 401 static sal_Bool implcp_windowActivated ( const css::lang::EventObject& aEvent ); 402 static sal_Bool implcp_windowDeactivated ( const css::lang::EventObject& aEvent ); 403 static sal_Bool implcp_disposing ( const css::lang::EventObject& aEvent ); 404 405 #endif // #ifdef ENABLE_ASSERTIONS 406 407 //************************************************************************************************************* 408 // variables 409 // -threadsafe by own read/write lock "m_aLock" 410 //************************************************************************************************************* 411 private: 412 413 css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory ; /// reference to factory, which has create this instance 414 css::uno::Reference< css::task::XStatusIndicatorFactory > m_xIndicatorFactoryHelper ; /// reference to factory helper to create status indicator objects 415 css::uno::WeakReference< css::task::XStatusIndicator > m_xIndicatorInterception ; /// points to an external set progress, which should be used instead of the internal one. 416 css::uno::Reference< css::frame::XDispatchProvider > m_xDispatchHelper ; /// helper for XDispatch/Provider and interception interfaces 417 css::uno::Reference< css::frame::XFrames > m_xFramesHelper ; /// helper for XFrames, XIndexAccess and XElementAccess interfaces 418 ::cppu::OMultiTypeInterfaceContainerHelper m_aListenerContainer ; /// container for ALL Listener 419 css::uno::Reference< css::frame::XFramesSupplier > m_xParent ; /// parent of this frame 420 css::uno::Reference< css::awt::XWindow > m_xContainerWindow ; /// containerwindow of this frame for embedded components 421 css::uno::Reference< css::awt::XWindow > m_xComponentWindow ; /// window of the actual component 422 css::uno::Reference< css::frame::XController > m_xController ; /// controller of the actual frame 423 css::uno::Reference< css::datatransfer::dnd::XDropTargetListener > m_xDropTargetListener ; /// listen to drag & drop 424 EActiveState m_eActiveState ; /// state, if i'am a member of active path in tree or i have the focus or ... 425 ::rtl::OUString m_sName ; /// name of this frame 426 sal_Bool m_bIsFrameTop ; /// frame has no parent or the parent is a taskor the desktop 427 sal_Bool m_bConnected ; /// due to FrameActionEvent 428 sal_Int16 m_nExternalLockCount ; 429 css::uno::Reference< css::frame::XDispatchRecorderSupplier > m_xDispatchRecorderSupplier ; /// is used for dispatch recording and will be set/get from outside. Frame provide it only! 430 SvtCommandOptions m_aCommandOptions ; /// ref counted class to support disabling commands defined by configuration file 431 sal_Bool m_bSelfClose ; /// in case of CloseVetoException on method close() wqs thrown by ourself - we must close ourself later if no internal processes are running 432 sal_Bool m_bIsHidden ; /// indicates, if this frame is used in hidden mode or not 433 static css::uno::WeakReference< css::frame::XFrame > m_xCloserFrame ; /// holds the only frame, which must show the special closer menu item (can be NULL!) 434 css::uno::Reference< ::com::sun::star::frame::XLayoutManager > m_xLayoutManager ; /// is used to layout the child windows of the frame. 435 css::uno::Reference< css::frame::XDispatchInformationProvider > m_xDispatchInfoHelper ; 436 css::uno::Reference< css::frame::XTitle > m_xTitleHelper ; 437 void* mp_WindowCommandDispatch ; /// holds the window command dispatch 438 439 protected: 440 441 FrameContainer m_aChildFrameContainer ; /// array of child frames 442 443 inline css::uno::Reference< css::lang::XMultiServiceFactory > impl_getFactory() 444 { 445 ReadGuard aReadLock( m_aLock ); 446 return m_xFactory; 447 } 448 449 inline ::rtl::OUString impl_getName() 450 { 451 ReadGuard aReadLock( m_aLock ); 452 return m_sName; 453 } 454 455 inline css::uno::Reference< css::awt::XWindow > impl_getContainerWindow() 456 { 457 ReadGuard aReadLock( m_aLock ); 458 return m_xContainerWindow; 459 } 460 461 inline css::uno::Reference< css::frame::XDispatchProvider > impl_getDispatchHelper() 462 { 463 ReadGuard aReadLock( m_aLock ); 464 return m_xDispatchHelper; 465 } 466 467 inline css::uno::Reference< css::frame::XFramesSupplier > impl_getParent() 468 { 469 ReadGuard aReadLock( m_aLock ); 470 return m_xParent; 471 } 472 473 }; // class Frame 474 475 } // namespace framework 476 477 #endif // #ifndef __FRAMEWORK_SERVICES_FRAME_HXX_ 478