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
10*0b4ced1dSAndrew Rist *
11*0b4ced1dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*0b4ced1dSAndrew Rist *
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.
19*0b4ced1dSAndrew Rist *
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
OMRCListenerMultiplexerHelper(const Reference<XWindow> & xControl,const Reference<XWindow> & xPeer)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
OMRCListenerMultiplexerHelper(const OMRCListenerMultiplexerHelper &)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
~OMRCListenerMultiplexerHelper()109cdf0e10cSrcweir OMRCListenerMultiplexerHelper::~OMRCListenerMultiplexerHelper()
110cdf0e10cSrcweir {
111cdf0e10cSrcweir }
112cdf0e10cSrcweir
113cdf0e10cSrcweir //____________________________________________________________________________________________________________
114cdf0e10cSrcweir // XInterface
115cdf0e10cSrcweir //____________________________________________________________________________________________________________
116cdf0e10cSrcweir
queryInterface(const Type & rType)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
acquire()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
release()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
operator Reference<XInterface>() const179cdf0e10cSrcweir 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
setPeer(const Reference<XWindow> & xPeer)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
disposeAndClear()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
advise(const Type & aType,const Reference<XInterface> & xListener)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
unadvise(const Type & aType,const Reference<XInterface> & xListener)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
disposing(const EventObject &)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
focusGained(const FocusEvent & aEvent)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
focusLost(const FocusEvent & aEvent)324cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::focusLost(const FocusEvent& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
325cdf0e10cSrcweir {
326cdf0e10cSrcweir MULTIPLEX( XFocusListener, focusLost, FocusEvent, aEvent )
327cdf0e10cSrcweir }
328cdf0e10cSrcweir
329cdf0e10cSrcweir //____________________________________________________________________________________________________________
330cdf0e10cSrcweir // XWindowListener
331cdf0e10cSrcweir //____________________________________________________________________________________________________________
332cdf0e10cSrcweir
windowResized(const WindowEvent & aEvent)333cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowResized(const WindowEvent& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
334cdf0e10cSrcweir {
335cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowResized, WindowEvent, aEvent )
336cdf0e10cSrcweir }
337cdf0e10cSrcweir
338cdf0e10cSrcweir //____________________________________________________________________________________________________________
339cdf0e10cSrcweir // XWindowListener
340cdf0e10cSrcweir //____________________________________________________________________________________________________________
341cdf0e10cSrcweir
windowMoved(const WindowEvent & aEvent)342cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowMoved(const WindowEvent& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
343cdf0e10cSrcweir {
344cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowMoved, WindowEvent, aEvent )
345cdf0e10cSrcweir }
346cdf0e10cSrcweir
347cdf0e10cSrcweir //____________________________________________________________________________________________________________
348cdf0e10cSrcweir // XWindowListener
349cdf0e10cSrcweir //____________________________________________________________________________________________________________
350cdf0e10cSrcweir
windowShown(const EventObject & aEvent)351cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowShown(const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
352cdf0e10cSrcweir {
353cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowShown, EventObject, aEvent )
354cdf0e10cSrcweir }
355cdf0e10cSrcweir
356cdf0e10cSrcweir //____________________________________________________________________________________________________________
357cdf0e10cSrcweir // XWindowListener
358cdf0e10cSrcweir //____________________________________________________________________________________________________________
359cdf0e10cSrcweir
windowHidden(const EventObject & aEvent)360cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowHidden(const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
361cdf0e10cSrcweir {
362cdf0e10cSrcweir MULTIPLEX( XWindowListener, windowHidden, EventObject, aEvent )
363cdf0e10cSrcweir }
364cdf0e10cSrcweir
365cdf0e10cSrcweir //____________________________________________________________________________________________________________
366cdf0e10cSrcweir // XKeyListener
367cdf0e10cSrcweir //____________________________________________________________________________________________________________
368cdf0e10cSrcweir
keyPressed(const KeyEvent & aEvent)369cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::keyPressed(const KeyEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
370cdf0e10cSrcweir {
371cdf0e10cSrcweir MULTIPLEX( XKeyListener, keyPressed, KeyEvent, aEvent )
372cdf0e10cSrcweir }
373cdf0e10cSrcweir
374cdf0e10cSrcweir //____________________________________________________________________________________________________________
375cdf0e10cSrcweir // XKeyListener
376cdf0e10cSrcweir //____________________________________________________________________________________________________________
377cdf0e10cSrcweir
keyReleased(const KeyEvent & aEvent)378cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::keyReleased(const KeyEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
379cdf0e10cSrcweir {
380cdf0e10cSrcweir MULTIPLEX( XKeyListener, keyReleased, KeyEvent, aEvent )
381cdf0e10cSrcweir }
382cdf0e10cSrcweir
383cdf0e10cSrcweir //____________________________________________________________________________________________________________
384cdf0e10cSrcweir // XMouseListener
385cdf0e10cSrcweir //____________________________________________________________________________________________________________
386cdf0e10cSrcweir
mousePressed(const MouseEvent & aEvent)387cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mousePressed(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
388cdf0e10cSrcweir {
389cdf0e10cSrcweir MULTIPLEX( XMouseListener, mousePressed, MouseEvent, aEvent )
390cdf0e10cSrcweir }
391cdf0e10cSrcweir
392cdf0e10cSrcweir //____________________________________________________________________________________________________________
393cdf0e10cSrcweir // XMouseListener
394cdf0e10cSrcweir //____________________________________________________________________________________________________________
395cdf0e10cSrcweir
mouseReleased(const MouseEvent & aEvent)396cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseReleased(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
397cdf0e10cSrcweir {
398cdf0e10cSrcweir MULTIPLEX( XMouseListener, mouseReleased, MouseEvent, aEvent )
399cdf0e10cSrcweir }
400cdf0e10cSrcweir
401cdf0e10cSrcweir //____________________________________________________________________________________________________________
402cdf0e10cSrcweir // XMouseListener
403cdf0e10cSrcweir //____________________________________________________________________________________________________________
404cdf0e10cSrcweir
mouseEntered(const MouseEvent & aEvent)405cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseEntered(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
406cdf0e10cSrcweir {
407cdf0e10cSrcweir MULTIPLEX( XMouseListener, mouseEntered, MouseEvent, aEvent )
408cdf0e10cSrcweir }
409cdf0e10cSrcweir
410cdf0e10cSrcweir //____________________________________________________________________________________________________________
411cdf0e10cSrcweir // XMouseListener
412cdf0e10cSrcweir //____________________________________________________________________________________________________________
413cdf0e10cSrcweir
mouseExited(const MouseEvent & aEvent)414cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseExited(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
415cdf0e10cSrcweir {
416cdf0e10cSrcweir MULTIPLEX( XMouseListener, mouseExited, MouseEvent, aEvent )
417cdf0e10cSrcweir }
418cdf0e10cSrcweir
419cdf0e10cSrcweir //____________________________________________________________________________________________________________
420cdf0e10cSrcweir // XMouseMotionListener
421cdf0e10cSrcweir //____________________________________________________________________________________________________________
422cdf0e10cSrcweir
mouseDragged(const MouseEvent & aEvent)423cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseDragged(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
424cdf0e10cSrcweir {
425cdf0e10cSrcweir MULTIPLEX( XMouseMotionListener, mouseDragged, MouseEvent, aEvent )
426cdf0e10cSrcweir }
427cdf0e10cSrcweir
428cdf0e10cSrcweir //____________________________________________________________________________________________________________
429cdf0e10cSrcweir // XMouseMotionListener
430cdf0e10cSrcweir //____________________________________________________________________________________________________________
431cdf0e10cSrcweir
mouseMoved(const MouseEvent & aEvent)432cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::mouseMoved(const MouseEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
433cdf0e10cSrcweir {
434cdf0e10cSrcweir MULTIPLEX( XMouseMotionListener, mouseMoved, MouseEvent, aEvent )
435cdf0e10cSrcweir }
436cdf0e10cSrcweir
437cdf0e10cSrcweir //____________________________________________________________________________________________________________
438cdf0e10cSrcweir // XPaintListener
439cdf0e10cSrcweir //____________________________________________________________________________________________________________
440cdf0e10cSrcweir
windowPaint(const PaintEvent & aEvent)441cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowPaint(const PaintEvent& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
442cdf0e10cSrcweir {
443cdf0e10cSrcweir MULTIPLEX( XPaintListener, windowPaint, PaintEvent, aEvent )
444cdf0e10cSrcweir }
445cdf0e10cSrcweir
446cdf0e10cSrcweir //____________________________________________________________________________________________________________
447cdf0e10cSrcweir // XTopWindowListener
448cdf0e10cSrcweir //____________________________________________________________________________________________________________
449cdf0e10cSrcweir
windowOpened(const EventObject & aEvent)450cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowOpened(const EventObject& aEvent) throw( UNO3_RUNTIMEEXCEPTION )
451cdf0e10cSrcweir {
452cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowOpened, EventObject, aEvent )
453cdf0e10cSrcweir }
454cdf0e10cSrcweir
455cdf0e10cSrcweir //____________________________________________________________________________________________________________
456cdf0e10cSrcweir // XTopWindowListener
457cdf0e10cSrcweir //____________________________________________________________________________________________________________
458cdf0e10cSrcweir
windowClosing(const EventObject & aEvent)459cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowClosing( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
460cdf0e10cSrcweir {
461cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowClosing, EventObject, aEvent )
462cdf0e10cSrcweir }
463cdf0e10cSrcweir
464cdf0e10cSrcweir //____________________________________________________________________________________________________________
465cdf0e10cSrcweir // XTopWindowListener
466cdf0e10cSrcweir //____________________________________________________________________________________________________________
467cdf0e10cSrcweir
windowClosed(const EventObject & aEvent)468cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowClosed( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
469cdf0e10cSrcweir {
470cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowClosed, EventObject, aEvent )
471cdf0e10cSrcweir }
472cdf0e10cSrcweir
473cdf0e10cSrcweir //____________________________________________________________________________________________________________
474cdf0e10cSrcweir // XTopWindowListener
475cdf0e10cSrcweir //____________________________________________________________________________________________________________
476cdf0e10cSrcweir
windowMinimized(const EventObject & aEvent)477cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowMinimized( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
478cdf0e10cSrcweir {
479cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowMinimized, EventObject, aEvent )
480cdf0e10cSrcweir }
481cdf0e10cSrcweir
482cdf0e10cSrcweir //____________________________________________________________________________________________________________
483cdf0e10cSrcweir // XTopWindowListener
484cdf0e10cSrcweir //____________________________________________________________________________________________________________
485cdf0e10cSrcweir
windowNormalized(const EventObject & aEvent)486cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowNormalized( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
487cdf0e10cSrcweir {
488cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowNormalized, EventObject, aEvent )
489cdf0e10cSrcweir }
490cdf0e10cSrcweir
491cdf0e10cSrcweir //____________________________________________________________________________________________________________
492cdf0e10cSrcweir // XTopWindowListener
493cdf0e10cSrcweir //____________________________________________________________________________________________________________
494cdf0e10cSrcweir
windowActivated(const EventObject & aEvent)495cdf0e10cSrcweir void OMRCListenerMultiplexerHelper::windowActivated( const EventObject& aEvent ) throw( UNO3_RUNTIMEEXCEPTION )
496cdf0e10cSrcweir {
497cdf0e10cSrcweir MULTIPLEX( XTopWindowListener, windowActivated, EventObject, aEvent )
498cdf0e10cSrcweir }
499cdf0e10cSrcweir
500cdf0e10cSrcweir //____________________________________________________________________________________________________________
501cdf0e10cSrcweir // XTopWindowListener
502cdf0e10cSrcweir //____________________________________________________________________________________________________________
503cdf0e10cSrcweir
windowDeactivated(const EventObject & aEvent)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
impl_adviseToPeer(const Reference<XWindow> & xPeer,const Type & aType)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
impl_unadviseFromPeer(const Reference<XWindow> & xPeer,const Type & aType)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