1*0b4ced1dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*0b4ced1dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*0b4ced1dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*0b4ced1dSAndrew Rist * distributed with this work for additional information 6*0b4ced1dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*0b4ced1dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*0b4ced1dSAndrew Rist * "License"); you may not use this file except in compliance 9*0b4ced1dSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*0b4ced1dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*0b4ced1dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*0b4ced1dSAndrew Rist * software distributed under the License is distributed on an 15*0b4ced1dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*0b4ced1dSAndrew Rist * KIND, either express or implied. See the License for the 17*0b4ced1dSAndrew Rist * specific language governing permissions and limitations 18*0b4ced1dSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*0b4ced1dSAndrew Rist *************************************************************/ 21*0b4ced1dSAndrew Rist 22*0b4ced1dSAndrew Rist 23cdf0e10cSrcweir //____________________________________________________________________________________________________________ 24cdf0e10cSrcweir // my own include 25cdf0e10cSrcweir //____________________________________________________________________________________________________________ 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "multiplexer.hxx" 28cdf0e10cSrcweir 29cdf0e10cSrcweir //____________________________________________________________________________________________________________ 30cdf0e10cSrcweir // includes of other projects 31cdf0e10cSrcweir //____________________________________________________________________________________________________________ 32cdf0e10cSrcweir #include <vos/diagnose.hxx> 33cdf0e10cSrcweir 34cdf0e10cSrcweir //____________________________________________________________________________________________________________ 35cdf0e10cSrcweir // includes of my own project 36cdf0e10cSrcweir //____________________________________________________________________________________________________________ 37cdf0e10cSrcweir 38cdf0e10cSrcweir //____________________________________________________________________________________________________________ 39cdf0e10cSrcweir // namespaces 40cdf0e10cSrcweir //____________________________________________________________________________________________________________ 41cdf0e10cSrcweir 42cdf0e10cSrcweir using namespace ::cppu ; 43cdf0e10cSrcweir using namespace ::osl ; 44cdf0e10cSrcweir using namespace ::com::sun::star::uno ; 45cdf0e10cSrcweir using namespace ::com::sun::star::awt ; 46cdf0e10cSrcweir using namespace ::com::sun::star::lang ; 47cdf0e10cSrcweir 48cdf0e10cSrcweir namespace unocontrols{ 49cdf0e10cSrcweir 50cdf0e10cSrcweir //____________________________________________________________________________________________________________ 51cdf0e10cSrcweir // macros 52cdf0e10cSrcweir //____________________________________________________________________________________________________________ 53cdf0e10cSrcweir 54cdf0e10cSrcweir #define MULTIPLEX( INTERFACE, METHOD, EVENTTYP, EVENT ) \ 55cdf0e10cSrcweir \ 56cdf0e10cSrcweir /* First get all interfaces from container with right type.*/ \ 57cdf0e10cSrcweir OInterfaceContainerHelper* pContainer = m_aListenerHolder.getContainer( ::getCppuType((const Reference< INTERFACE >*)0) ); \ 58cdf0e10cSrcweir /* Do the follow only, if elements in container exist.*/ \ 59cdf0e10cSrcweir if( pContainer != NULL ) \ 60cdf0e10cSrcweir { \ 61cdf0e10cSrcweir OInterfaceIteratorHelper aIterator( *pContainer ); \ 62cdf0e10cSrcweir EVENTTYP aLocalEvent = EVENT; \ 63cdf0e10cSrcweir /* Remark: The control is the event source not the peer.*/ \ 64cdf0e10cSrcweir /* We must change the source of the event. */ \ 65cdf0e10cSrcweir aLocalEvent.Source = m_xControl ; \ 66cdf0e10cSrcweir /* Is the control not destroyed? */ \ 67cdf0e10cSrcweir if( aLocalEvent.Source.is() == sal_True ) \ 68cdf0e10cSrcweir { \ 69cdf0e10cSrcweir if( aIterator.hasMoreElements() ) \ 70cdf0e10cSrcweir { \ 71cdf0e10cSrcweir INTERFACE * pListener = (INTERFACE *)aIterator.next(); \ 72cdf0e10cSrcweir try \ 73cdf0e10cSrcweir { \ 74cdf0e10cSrcweir pListener->METHOD( aLocalEvent ); \ 75cdf0e10cSrcweir } \ 76cdf0e10cSrcweir catch( RuntimeException& ) \ 77cdf0e10cSrcweir { \ 78cdf0e10cSrcweir /* Ignore all system exceptions from the listener! */ \ 79cdf0e10cSrcweir } \ 80cdf0e10cSrcweir } \ 81cdf0e10cSrcweir } \ 82cdf0e10cSrcweir } 83cdf0e10cSrcweir 84cdf0e10cSrcweir //____________________________________________________________________________________________________________ 85cdf0e10cSrcweir // construct/destruct 86cdf0e10cSrcweir //____________________________________________________________________________________________________________ 87cdf0e10cSrcweir 88cdf0e10cSrcweir OMRCListenerMultiplexerHelper::OMRCListenerMultiplexerHelper( const Reference< XWindow >& xControl , 89cdf0e10cSrcweir const Reference< XWindow >& xPeer ) 90cdf0e10cSrcweir : m_xPeer ( xPeer ) 91cdf0e10cSrcweir , m_xControl ( xControl ) 92cdf0e10cSrcweir , m_aListenerHolder ( m_aMutex ) 93cdf0e10cSrcweir { 94cdf0e10cSrcweir } 95cdf0e10cSrcweir 96cdf0e10cSrcweir OMRCListenerMultiplexerHelper::OMRCListenerMultiplexerHelper( const OMRCListenerMultiplexerHelper& /*aCopyInstance*/ ) 97cdf0e10cSrcweir : XFocusListener() 98cdf0e10cSrcweir , XWindowListener() 99cdf0e10cSrcweir , XKeyListener() 100cdf0e10cSrcweir , XMouseListener() 101cdf0e10cSrcweir , XMouseMotionListener() 102cdf0e10cSrcweir , XPaintListener() 103cdf0e10cSrcweir , XTopWindowListener() 104cdf0e10cSrcweir , OWeakObject() 105cdf0e10cSrcweir , m_aListenerHolder ( m_aMutex ) 106cdf0e10cSrcweir { 107cdf0e10cSrcweir } 108cdf0e10cSrcweir 109cdf0e10cSrcweir OMRCListenerMultiplexerHelper::~OMRCListenerMultiplexerHelper() 110cdf0e10cSrcweir { 111cdf0e10cSrcweir } 112cdf0e10cSrcweir 113cdf0e10cSrcweir //____________________________________________________________________________________________________________ 114cdf0e10cSrcweir // XInterface 115cdf0e10cSrcweir //____________________________________________________________________________________________________________ 116cdf0e10cSrcweir 117cdf0e10cSrcweir Any SAL_CALL OMRCListenerMultiplexerHelper::queryInterface( const Type& rType ) throw( RuntimeException ) 118cdf0e10cSrcweir { 119cdf0e10cSrcweir // Attention: 120cdf0e10cSrcweir // Don't use mutex or guard in this method!!! Is a method of XInterface. 121cdf0e10cSrcweir 122cdf0e10cSrcweir // Ask for my own supported interfaces ... 123cdf0e10cSrcweir // Attention: XTypeProvider and XInterface are supported by OComponentHelper! 124cdf0e10cSrcweir Any aReturn ( ::cppu::queryInterface( rType , 125cdf0e10cSrcweir static_cast< XWindowListener* > ( this ) , 126cdf0e10cSrcweir static_cast< XKeyListener* > ( this ) , 127cdf0e10cSrcweir static_cast< XFocusListener* > ( this ) , 128cdf0e10cSrcweir static_cast< XMouseListener* > ( this ) , 129cdf0e10cSrcweir static_cast< XMouseMotionListener* > ( this ) , 130cdf0e10cSrcweir static_cast< XPaintListener* > ( this ) , 131cdf0e10cSrcweir static_cast< XTopWindowListener* > ( this ) , 132cdf0e10cSrcweir static_cast< XTopWindowListener* > ( this ) 133cdf0e10cSrcweir ) 134cdf0e10cSrcweir ); 135cdf0e10cSrcweir 136cdf0e10cSrcweir // If searched interface supported by this class ... 137cdf0e10cSrcweir if ( aReturn.hasValue() == sal_True ) 138cdf0e10cSrcweir { 139cdf0e10cSrcweir // ... return this information. 140cdf0e10cSrcweir return aReturn ; 141cdf0e10cSrcweir } 142cdf0e10cSrcweir else 143cdf0e10cSrcweir { 144cdf0e10cSrcweir // Else; ... ask baseclass for interfaces! 145cdf0e10cSrcweir return OWeakObject::queryInterface( rType ); 146cdf0e10cSrcweir } 147cdf0e10cSrcweir } 148cdf0e10cSrcweir 149cdf0e10cSrcweir //____________________________________________________________________________________________________________ 150cdf0e10cSrcweir // XInterface 151cdf0e10cSrcweir //____________________________________________________________________________________________________________ 152cdf0e10cSrcweir 153cdf0e10cSrcweir void SAL_CALL OMRCListenerMultiplexerHelper::acquire() throw() 154cdf0e10cSrcweir { 155cdf0e10cSrcweir // Attention: 156cdf0e10cSrcweir // Don't use mutex or guard in this method!!! Is a method of XInterface. 157cdf0e10cSrcweir 158cdf0e10cSrcweir // Forward to baseclass 159cdf0e10cSrcweir OWeakObject::acquire(); 160cdf0e10cSrcweir } 161cdf0e10cSrcweir 162cdf0e10cSrcweir //____________________________________________________________________________________________________________ 163cdf0e10cSrcweir // XInterface 164cdf0e10cSrcweir //____________________________________________________________________________________________________________ 165cdf0e10cSrcweir 166cdf0e10cSrcweir void SAL_CALL OMRCListenerMultiplexerHelper::release() throw() 167cdf0e10cSrcweir { 168cdf0e10cSrcweir // Attention: 169cdf0e10cSrcweir // Don't use mutex or guard in this method!!! Is a method of XInterface. 170cdf0e10cSrcweir 171cdf0e10cSrcweir // Forward to baseclass 172cdf0e10cSrcweir OWeakObject::release(); 173cdf0e10cSrcweir } 174cdf0e10cSrcweir 175cdf0e10cSrcweir //____________________________________________________________________________________________________________ 176cdf0e10cSrcweir // operator 177cdf0e10cSrcweir //____________________________________________________________________________________________________________ 178cdf0e10cSrcweir 179cdf0e10cSrcweir OMRCListenerMultiplexerHelper::operator Reference< XInterface >() const 180cdf0e10cSrcweir { 181cdf0e10cSrcweir return ((OWeakObject*)this) ; 182cdf0e10cSrcweir } 183cdf0e10cSrcweir 184cdf0e10cSrcweir //____________________________________________________________________________________________________________ 185cdf0e10cSrcweir // operator 186cdf0e10cSrcweir //____________________________________________________________________________________________________________ 187cdf0e10cSrcweir 188cdf0e10cSrcweir //OMRCListenerMultiplexerHelper& OMRCListenerMultiplexerHelper::operator= ( const OMRCListenerMultiplexerHelper& aCopyInstance ) 189cdf0e10cSrcweir //{ 190cdf0e10cSrcweir // return this ; 191cdf0e10cSrcweir //} 192cdf0e10cSrcweir 193cdf0e10cSrcweir //____________________________________________________________________________________________________________ 194cdf0e10cSrcweir // container method 195cdf0e10cSrcweir //____________________________________________________________________________________________________________ 196cdf0e10cSrcweir 197cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::setPeer( const Reference< XWindow >& xPeer ) 198cdf0e10cSrcweir { 199cdf0e10cSrcweir MutexGuard aGuard( m_aMutex ); 200cdf0e10cSrcweir if( m_xPeer != xPeer ) 201cdf0e10cSrcweir { 202cdf0e10cSrcweir if( m_xPeer.is() ) 203cdf0e10cSrcweir { 204cdf0e10cSrcweir // get all types from the listener added to the peer 205cdf0e10cSrcweir Sequence< Type > aContainedTypes = m_aListenerHolder.getContainedTypes(); 206cdf0e10cSrcweir const Type* pArray = aContainedTypes.getConstArray(); 207cdf0e10cSrcweir sal_Int32 nCount = aContainedTypes.getLength(); 208cdf0e10cSrcweir // loop over all listener types and remove the listeners from the peer 209cdf0e10cSrcweir for( sal_Int32 i=0; i<nCount; i++ ) 210cdf0e10cSrcweir impl_unadviseFromPeer( m_xPeer, pArray[i] ); 211cdf0e10cSrcweir } 212cdf0e10cSrcweir m_xPeer = xPeer; 213cdf0e10cSrcweir if( m_xPeer.is() ) 214cdf0e10cSrcweir { 215cdf0e10cSrcweir // get all types from the listener added to the peer 216cdf0e10cSrcweir Sequence< Type > aContainedTypes = m_aListenerHolder.getContainedTypes(); 217cdf0e10cSrcweir const Type* pArray = aContainedTypes.getConstArray(); 218cdf0e10cSrcweir sal_Int32 nCount = aContainedTypes.getLength(); 219cdf0e10cSrcweir // loop over all listener types and add the listeners to the peer 220cdf0e10cSrcweir for( sal_Int32 i = 0; i < nCount; i++ ) 221cdf0e10cSrcweir impl_adviseToPeer( m_xPeer, pArray[i] ); 222cdf0e10cSrcweir } 223cdf0e10cSrcweir } 224cdf0e10cSrcweir } 225cdf0e10cSrcweir 226cdf0e10cSrcweir //____________________________________________________________________________________________________________ 227cdf0e10cSrcweir // container method 228cdf0e10cSrcweir //____________________________________________________________________________________________________________ 229cdf0e10cSrcweir 230cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::disposeAndClear() 231cdf0e10cSrcweir { 232cdf0e10cSrcweir EventObject aEvent ; 233cdf0e10cSrcweir aEvent.Source = m_xControl ; 234cdf0e10cSrcweir m_aListenerHolder.disposeAndClear( aEvent ); 235cdf0e10cSrcweir } 236cdf0e10cSrcweir 237cdf0e10cSrcweir //____________________________________________________________________________________________________________ 238cdf0e10cSrcweir // container method 239cdf0e10cSrcweir //____________________________________________________________________________________________________________ 240cdf0e10cSrcweir 241cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::advise( const Type& aType , 242cdf0e10cSrcweir const Reference< XInterface >& xListener ) 243cdf0e10cSrcweir { 244cdf0e10cSrcweir MutexGuard aGuard( m_aMutex ); 245cdf0e10cSrcweir if( m_aListenerHolder.addInterface( aType, xListener ) == 1 ) 246cdf0e10cSrcweir { 247cdf0e10cSrcweir // the first listener is added 248cdf0e10cSrcweir if( m_xPeer.is() ) 249cdf0e10cSrcweir { 250cdf0e10cSrcweir impl_adviseToPeer( m_xPeer, aType ); 251cdf0e10cSrcweir } 252cdf0e10cSrcweir } 253cdf0e10cSrcweir } 254cdf0e10cSrcweir 255cdf0e10cSrcweir //____________________________________________________________________________________________________________ 256cdf0e10cSrcweir // container method 257cdf0e10cSrcweir //____________________________________________________________________________________________________________ 258cdf0e10cSrcweir 259cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::unadvise( const Type& aType , 260cdf0e10cSrcweir const Reference< XInterface >& xListener ) 261cdf0e10cSrcweir { 262cdf0e10cSrcweir MutexGuard aGuard( m_aMutex ); 263cdf0e10cSrcweir if( m_aListenerHolder.removeInterface( aType, xListener ) == 0 ) 264cdf0e10cSrcweir { 265cdf0e10cSrcweir // the last listener is removed 266cdf0e10cSrcweir if ( m_xPeer.is() ) 267cdf0e10cSrcweir { 268cdf0e10cSrcweir impl_unadviseFromPeer( m_xPeer, aType ); 269cdf0e10cSrcweir } 270cdf0e10cSrcweir } 271cdf0e10cSrcweir } 272cdf0e10cSrcweir 273cdf0e10cSrcweir //____________________________________________________________________________________________________________ 274cdf0e10cSrcweir // XEventListener 275cdf0e10cSrcweir //____________________________________________________________________________________________________________ 276cdf0e10cSrcweir 277cdf0e10cSrcweir void SAL_CALL OMRCListenerMultiplexerHelper::disposing( const EventObject& /*aSource*/ ) throw( RuntimeException ) 278cdf0e10cSrcweir { 279cdf0e10cSrcweir MutexGuard aGuard( m_aMutex ); 280cdf0e10cSrcweir // peer is disposed, clear the reference 281cdf0e10cSrcweir m_xPeer = Reference< XWindow >(); 282cdf0e10cSrcweir } 283cdf0e10cSrcweir 284cdf0e10cSrcweir //____________________________________________________________________________________________________________ 285cdf0e10cSrcweir // XFcousListener 286cdf0e10cSrcweir //____________________________________________________________________________________________________________ 287cdf0e10cSrcweir 288cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::focusGained(const FocusEvent& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 289cdf0e10cSrcweir { 290cdf0e10cSrcweir /* 291cdf0e10cSrcweir OInterfaceContainerHelper * pCont = aListenerHolder.getContainer( ::getCppuType((const Reference< XFocusListener >*)0) ); 292cdf0e10cSrcweir if( pCont ) 293cdf0e10cSrcweir { 294cdf0e10cSrcweir OInterfaceIteratorHelper aIt( *pCont ); 295cdf0e10cSrcweir FocusEvent aEvt = e; 296cdf0e10cSrcweir // Reamark: The control is the event source not the peer. We must change 297cdf0e10cSrcweir // the source of the event 298cdf0e10cSrcweir xControl.queryHardRef( ((XInterface*)NULL)->getSmartUik(), aEvt.Source ); 299cdf0e10cSrcweir //.is the control not destroyed 300cdf0e10cSrcweir if( aEvt.Source.is() ) 301cdf0e10cSrcweir { 302cdf0e10cSrcweir if( aIt.hasMoreElements() ) 303cdf0e10cSrcweir { 304cdf0e10cSrcweir XFocusListener * pListener = (XFocusListener *)aIt.next(); 305cdf0e10cSrcweir try 306cdf0e10cSrcweir { 307cdf0e10cSrcweir pListener->focusGained( aEvt ); 308cdf0e10cSrcweir } 309cdf0e10cSrcweir catch( RuntimeException, e ) 310cdf0e10cSrcweir { 311cdf0e10cSrcweir // ignore all usr system exceptions from the listener 312cdf0e10cSrcweir } 313cdf0e10cSrcweir } 314cdf0e10cSrcweir } 315cdf0e10cSrcweir } 316cdf0e10cSrcweir */ 317cdf0e10cSrcweir MULTIPLEX( XFocusListener, focusGained, FocusEvent, aEvent ) 318cdf0e10cSrcweir } 319cdf0e10cSrcweir 320cdf0e10cSrcweir //____________________________________________________________________________________________________________ 321cdf0e10cSrcweir // XFcousListener 322cdf0e10cSrcweir //____________________________________________________________________________________________________________ 323cdf0e10cSrcweir 324cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::focusLost(const FocusEvent& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 325cdf0e10cSrcweir { 326cdf0e10cSrcweir MULTIPLEX( XFocusListener, focusLost, FocusEvent, aEvent ) 327cdf0e10cSrcweir } 328cdf0e10cSrcweir 329cdf0e10cSrcweir //____________________________________________________________________________________________________________ 330cdf0e10cSrcweir // XWindowListener 331cdf0e10cSrcweir //____________________________________________________________________________________________________________ 332cdf0e10cSrcweir 333cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowResized(const WindowEvent& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 334cdf0e10cSrcweir { 335cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowResized, WindowEvent, aEvent ) 336cdf0e10cSrcweir } 337cdf0e10cSrcweir 338cdf0e10cSrcweir //____________________________________________________________________________________________________________ 339cdf0e10cSrcweir // XWindowListener 340cdf0e10cSrcweir //____________________________________________________________________________________________________________ 341cdf0e10cSrcweir 342cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowMoved(const WindowEvent& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 343cdf0e10cSrcweir { 344cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowMoved, WindowEvent, aEvent ) 345cdf0e10cSrcweir } 346cdf0e10cSrcweir 347cdf0e10cSrcweir //____________________________________________________________________________________________________________ 348cdf0e10cSrcweir // XWindowListener 349cdf0e10cSrcweir //____________________________________________________________________________________________________________ 350cdf0e10cSrcweir 351cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowShown(const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 352cdf0e10cSrcweir { 353cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowShown, EventObject, aEvent ) 354cdf0e10cSrcweir } 355cdf0e10cSrcweir 356cdf0e10cSrcweir //____________________________________________________________________________________________________________ 357cdf0e10cSrcweir // XWindowListener 358cdf0e10cSrcweir //____________________________________________________________________________________________________________ 359cdf0e10cSrcweir 360cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowHidden(const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 361cdf0e10cSrcweir { 362cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowHidden, EventObject, aEvent ) 363cdf0e10cSrcweir } 364cdf0e10cSrcweir 365cdf0e10cSrcweir //____________________________________________________________________________________________________________ 366cdf0e10cSrcweir // XKeyListener 367cdf0e10cSrcweir //____________________________________________________________________________________________________________ 368cdf0e10cSrcweir 369cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::keyPressed(const KeyEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 370cdf0e10cSrcweir { 371cdf0e10cSrcweir MULTIPLEX( XKeyListener, keyPressed, KeyEvent, aEvent ) 372cdf0e10cSrcweir } 373cdf0e10cSrcweir 374cdf0e10cSrcweir //____________________________________________________________________________________________________________ 375cdf0e10cSrcweir // XKeyListener 376cdf0e10cSrcweir //____________________________________________________________________________________________________________ 377cdf0e10cSrcweir 378cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::keyReleased(const KeyEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 379cdf0e10cSrcweir { 380cdf0e10cSrcweir MULTIPLEX( XKeyListener, keyReleased, KeyEvent, aEvent ) 381cdf0e10cSrcweir } 382cdf0e10cSrcweir 383cdf0e10cSrcweir //____________________________________________________________________________________________________________ 384cdf0e10cSrcweir // XMouseListener 385cdf0e10cSrcweir //____________________________________________________________________________________________________________ 386cdf0e10cSrcweir 387cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mousePressed(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 388cdf0e10cSrcweir { 389cdf0e10cSrcweir MULTIPLEX( XMouseListener, mousePressed, MouseEvent, aEvent ) 390cdf0e10cSrcweir } 391cdf0e10cSrcweir 392cdf0e10cSrcweir //____________________________________________________________________________________________________________ 393cdf0e10cSrcweir // XMouseListener 394cdf0e10cSrcweir //____________________________________________________________________________________________________________ 395cdf0e10cSrcweir 396cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseReleased(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 397cdf0e10cSrcweir { 398cdf0e10cSrcweir MULTIPLEX( XMouseListener, mouseReleased, MouseEvent, aEvent ) 399cdf0e10cSrcweir } 400cdf0e10cSrcweir 401cdf0e10cSrcweir //____________________________________________________________________________________________________________ 402cdf0e10cSrcweir // XMouseListener 403cdf0e10cSrcweir //____________________________________________________________________________________________________________ 404cdf0e10cSrcweir 405cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseEntered(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 406cdf0e10cSrcweir { 407cdf0e10cSrcweir MULTIPLEX( XMouseListener, mouseEntered, MouseEvent, aEvent ) 408cdf0e10cSrcweir } 409cdf0e10cSrcweir 410cdf0e10cSrcweir //____________________________________________________________________________________________________________ 411cdf0e10cSrcweir // XMouseListener 412cdf0e10cSrcweir //____________________________________________________________________________________________________________ 413cdf0e10cSrcweir 414cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseExited(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 415cdf0e10cSrcweir { 416cdf0e10cSrcweir MULTIPLEX( XMouseListener, mouseExited, MouseEvent, aEvent ) 417cdf0e10cSrcweir } 418cdf0e10cSrcweir 419cdf0e10cSrcweir //____________________________________________________________________________________________________________ 420cdf0e10cSrcweir // XMouseMotionListener 421cdf0e10cSrcweir //____________________________________________________________________________________________________________ 422cdf0e10cSrcweir 423cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseDragged(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 424cdf0e10cSrcweir { 425cdf0e10cSrcweir MULTIPLEX( XMouseMotionListener, mouseDragged, MouseEvent, aEvent ) 426cdf0e10cSrcweir } 427cdf0e10cSrcweir 428cdf0e10cSrcweir //____________________________________________________________________________________________________________ 429cdf0e10cSrcweir // XMouseMotionListener 430cdf0e10cSrcweir //____________________________________________________________________________________________________________ 431cdf0e10cSrcweir 432cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseMoved(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 433cdf0e10cSrcweir { 434cdf0e10cSrcweir MULTIPLEX( XMouseMotionListener, mouseMoved, MouseEvent, aEvent ) 435cdf0e10cSrcweir } 436cdf0e10cSrcweir 437cdf0e10cSrcweir //____________________________________________________________________________________________________________ 438cdf0e10cSrcweir // XPaintListener 439cdf0e10cSrcweir //____________________________________________________________________________________________________________ 440cdf0e10cSrcweir 441cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowPaint(const PaintEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 442cdf0e10cSrcweir { 443cdf0e10cSrcweir MULTIPLEX( XPaintListener, windowPaint, PaintEvent, aEvent ) 444cdf0e10cSrcweir } 445cdf0e10cSrcweir 446cdf0e10cSrcweir //____________________________________________________________________________________________________________ 447cdf0e10cSrcweir // XTopWindowListener 448cdf0e10cSrcweir //____________________________________________________________________________________________________________ 449cdf0e10cSrcweir 450cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowOpened(const EventObject& aEvent) throw( UNO3_RUNTIMEEXCEPTION ) 451cdf0e10cSrcweir { 452cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowOpened, EventObject, aEvent ) 453cdf0e10cSrcweir } 454cdf0e10cSrcweir 455cdf0e10cSrcweir //____________________________________________________________________________________________________________ 456cdf0e10cSrcweir // XTopWindowListener 457cdf0e10cSrcweir //____________________________________________________________________________________________________________ 458cdf0e10cSrcweir 459cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowClosing( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 460cdf0e10cSrcweir { 461cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowClosing, EventObject, aEvent ) 462cdf0e10cSrcweir } 463cdf0e10cSrcweir 464cdf0e10cSrcweir //____________________________________________________________________________________________________________ 465cdf0e10cSrcweir // XTopWindowListener 466cdf0e10cSrcweir //____________________________________________________________________________________________________________ 467cdf0e10cSrcweir 468cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowClosed( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 469cdf0e10cSrcweir { 470cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowClosed, EventObject, aEvent ) 471cdf0e10cSrcweir } 472cdf0e10cSrcweir 473cdf0e10cSrcweir //____________________________________________________________________________________________________________ 474cdf0e10cSrcweir // XTopWindowListener 475cdf0e10cSrcweir //____________________________________________________________________________________________________________ 476cdf0e10cSrcweir 477cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowMinimized( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 478cdf0e10cSrcweir { 479cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowMinimized, EventObject, aEvent ) 480cdf0e10cSrcweir } 481cdf0e10cSrcweir 482cdf0e10cSrcweir //____________________________________________________________________________________________________________ 483cdf0e10cSrcweir // XTopWindowListener 484cdf0e10cSrcweir //____________________________________________________________________________________________________________ 485cdf0e10cSrcweir 486cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowNormalized( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 487cdf0e10cSrcweir { 488cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowNormalized, EventObject, aEvent ) 489cdf0e10cSrcweir } 490cdf0e10cSrcweir 491cdf0e10cSrcweir //____________________________________________________________________________________________________________ 492cdf0e10cSrcweir // XTopWindowListener 493cdf0e10cSrcweir //____________________________________________________________________________________________________________ 494cdf0e10cSrcweir 495cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowActivated( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 496cdf0e10cSrcweir { 497cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowActivated, EventObject, aEvent ) 498cdf0e10cSrcweir } 499cdf0e10cSrcweir 500cdf0e10cSrcweir //____________________________________________________________________________________________________________ 501cdf0e10cSrcweir // XTopWindowListener 502cdf0e10cSrcweir //____________________________________________________________________________________________________________ 503cdf0e10cSrcweir 504cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowDeactivated( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION ) 505cdf0e10cSrcweir { 506cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowDeactivated, EventObject, aEvent ) 507cdf0e10cSrcweir } 508cdf0e10cSrcweir 509cdf0e10cSrcweir //____________________________________________________________________________________________________________ 510cdf0e10cSrcweir // protected method 511cdf0e10cSrcweir //____________________________________________________________________________________________________________ 512cdf0e10cSrcweir 513cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::impl_adviseToPeer( const Reference< XWindow >& xPeer , 514cdf0e10cSrcweir const Type& aType ) 515cdf0e10cSrcweir { 516cdf0e10cSrcweir // add a listener to the source (peer) 517cdf0e10cSrcweir if( aType == ::getCppuType((const Reference< XWindowListener >*)0) ) 518cdf0e10cSrcweir xPeer->addWindowListener( this ); 519cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XKeyListener >*)0) ) 520cdf0e10cSrcweir xPeer->addKeyListener( this ); 521cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XFocusListener >*)0) ) 522cdf0e10cSrcweir xPeer->addFocusListener( this ); 523cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XMouseListener >*)0) ) 524cdf0e10cSrcweir xPeer->addMouseListener( this ); 525cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XMouseMotionListener >*)0) ) 526cdf0e10cSrcweir xPeer->addMouseMotionListener( this ); 527cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XPaintListener >*)0) ) 528cdf0e10cSrcweir xPeer->addPaintListener( this ); 529cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XTopWindowListener >*)0) ) 530cdf0e10cSrcweir { 531cdf0e10cSrcweir Reference< XTopWindow > xTop( xPeer, UNO_QUERY ); 532cdf0e10cSrcweir if( xTop.is() ) 533cdf0e10cSrcweir xTop->addTopWindowListener( this ); 534cdf0e10cSrcweir } 535cdf0e10cSrcweir else 536cdf0e10cSrcweir { 537cdf0e10cSrcweir VOS_ENSHURE( sal_False, "unknown listener" ); 538cdf0e10cSrcweir } 539cdf0e10cSrcweir } 540cdf0e10cSrcweir 541cdf0e10cSrcweir //____________________________________________________________________________________________________________ 542cdf0e10cSrcweir // protected method 543cdf0e10cSrcweir //____________________________________________________________________________________________________________ 544cdf0e10cSrcweir 545cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::impl_unadviseFromPeer( const Reference< XWindow >& xPeer , 546cdf0e10cSrcweir const Type& aType ) 547cdf0e10cSrcweir { 548cdf0e10cSrcweir // the last listener is removed, remove the listener from the source (peer) 549cdf0e10cSrcweir if( aType == ::getCppuType((const Reference< XWindowListener >*)0) ) 550cdf0e10cSrcweir xPeer->removeWindowListener( this ); 551cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XKeyListener >*)0) ) 552cdf0e10cSrcweir xPeer->removeKeyListener( this ); 553cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XFocusListener >*)0) ) 554cdf0e10cSrcweir xPeer->removeFocusListener( this ); 555cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XMouseListener >*)0) ) 556cdf0e10cSrcweir xPeer->removeMouseListener( this ); 557cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XMouseMotionListener >*)0) ) 558cdf0e10cSrcweir xPeer->removeMouseMotionListener( this ); 559cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XPaintListener >*)0) ) 560cdf0e10cSrcweir xPeer->removePaintListener( this ); 561cdf0e10cSrcweir else if( aType == ::getCppuType((const Reference< XTopWindowListener >*)0) ) 562cdf0e10cSrcweir { 563cdf0e10cSrcweir Reference< XTopWindow > xTop( xPeer, UNO_QUERY ); 564cdf0e10cSrcweir if( xTop.is() ) 565cdf0e10cSrcweir xTop->removeTopWindowListener( this ); 566cdf0e10cSrcweir } 567cdf0e10cSrcweir else 568cdf0e10cSrcweir { 569cdf0e10cSrcweir VOS_ENSHURE( sal_False, "unknown listener" ); 570cdf0e10cSrcweir } 571cdf0e10cSrcweir } 572cdf0e10cSrcweir 573cdf0e10cSrcweir } // namespace unocontrols 574