1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <toolkit/helper/listenermultiplexer.hxx>
21 #include <com/sun/star/lang/DisposedException.hpp>
22 #include <cppuhelper/queryinterface.hxx>
24 // class ListenerMultiplexerBase
26 ListenerMultiplexerBase::ListenerMultiplexerBase( ::cppu::OWeakObject
& rSource
)
27 : ::comphelper::OInterfaceContainerHelper2( GetMutex() ), mrContext( rSource
)
31 ListenerMultiplexerBase::~ListenerMultiplexerBase()
35 // css::uno::XInterface
36 css::uno::Any
ListenerMultiplexerBase::queryInterface( const css::uno::Type
& rType
) throw(css::uno::RuntimeException
, std::exception
)
38 return ::cppu::queryInterface( rType
, (static_cast< css::uno::XInterface
* >(this)) );
42 // class EventListenerMultiplexer
44 EventListenerMultiplexer::EventListenerMultiplexer( ::cppu::OWeakObject
& rSource
)
45 : ListenerMultiplexerBase( rSource
)
49 void SAL_CALL
EventListenerMultiplexer::acquire() throw ()
51 return ListenerMultiplexerBase::acquire();
53 void SAL_CALL
EventListenerMultiplexer::release() throw ()
55 return ListenerMultiplexerBase::release();
58 // css::uno::XInterface
59 css::uno::Any
EventListenerMultiplexer::queryInterface( const css::uno::Type
& rType
) throw(css::uno::RuntimeException
, std::exception
)
61 css::uno::Any aRet
= ::cppu::queryInterface( rType
,
62 (static_cast< css::lang::XEventListener
* >(this)) );
63 return (aRet
.hasValue() ? aRet
: ListenerMultiplexerBase::queryInterface( rType
));
66 // css::lang::XEventListener
67 void EventListenerMultiplexer::disposing( const css::lang::EventObject
& ) throw(css::uno::RuntimeException
, std::exception
)
72 // class FocusListenerMultiplexer
74 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( FocusListenerMultiplexer
, css::awt::XFocusListener
)
75 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( FocusListenerMultiplexer
, css::awt::XFocusListener
, focusGained
, css::awt::FocusEvent
)
76 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( FocusListenerMultiplexer
, css::awt::XFocusListener
, focusLost
, css::awt::FocusEvent
)
79 // class WindowListenerMultiplexer
81 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( WindowListenerMultiplexer
, css::awt::XWindowListener
)
82 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( WindowListenerMultiplexer
, css::awt::XWindowListener
, windowResized
, css::awt::WindowEvent
)
83 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( WindowListenerMultiplexer
, css::awt::XWindowListener
, windowMoved
, css::awt::WindowEvent
)
84 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( WindowListenerMultiplexer
, css::awt::XWindowListener
, windowShown
, css::lang::EventObject
)
85 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( WindowListenerMultiplexer
, css::awt::XWindowListener
, windowHidden
, css::lang::EventObject
)
88 // class VclContainerListenerMultiplexer
90 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( VclContainerListenerMultiplexer
, css::awt::XVclContainerListener
)
91 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( VclContainerListenerMultiplexer
, css::awt::XVclContainerListener
, windowAdded
, css::awt::VclContainerEvent
)
92 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( VclContainerListenerMultiplexer
, css::awt::XVclContainerListener
, windowRemoved
, css::awt::VclContainerEvent
)
95 // class KeyListenerMultiplexer
97 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( KeyListenerMultiplexer
, css::awt::XKeyListener
)
98 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( KeyListenerMultiplexer
, css::awt::XKeyListener
, keyPressed
, css::awt::KeyEvent
)
99 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( KeyListenerMultiplexer
, css::awt::XKeyListener
, keyReleased
, css::awt::KeyEvent
)
102 // class MouseListenerMultiplexer
104 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( MouseListenerMultiplexer
, css::awt::XMouseListener
)
105 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MouseListenerMultiplexer
, css::awt::XMouseListener
, mousePressed
, css::awt::MouseEvent
)
106 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MouseListenerMultiplexer
, css::awt::XMouseListener
, mouseReleased
, css::awt::MouseEvent
)
107 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MouseListenerMultiplexer
, css::awt::XMouseListener
, mouseEntered
, css::awt::MouseEvent
)
108 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MouseListenerMultiplexer
, css::awt::XMouseListener
, mouseExited
, css::awt::MouseEvent
)
111 // class MouseMotionListenerMultiplexer
113 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( MouseMotionListenerMultiplexer
, css::awt::XMouseMotionListener
)
114 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MouseMotionListenerMultiplexer
, css::awt::XMouseMotionListener
, mouseDragged
, css::awt::MouseEvent
)
115 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MouseMotionListenerMultiplexer
, css::awt::XMouseMotionListener
, mouseMoved
, css::awt::MouseEvent
)
118 // class PaintListenerMultiplexer
120 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( PaintListenerMultiplexer
, css::awt::XPaintListener
)
121 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( PaintListenerMultiplexer
, css::awt::XPaintListener
, windowPaint
, css::awt::PaintEvent
)
124 // class TopWindowListenerMultiplexer
126 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
)
127 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
, windowOpened
, css::lang::EventObject
)
128 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
, windowClosing
, css::lang::EventObject
)
129 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
, windowClosed
, css::lang::EventObject
)
130 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
, windowMinimized
, css::lang::EventObject
)
131 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
, windowNormalized
, css::lang::EventObject
)
132 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
, windowActivated
, css::lang::EventObject
)
133 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TopWindowListenerMultiplexer
, css::awt::XTopWindowListener
, windowDeactivated
, css::lang::EventObject
)
136 // class TextListenerMultiplexer
138 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( TextListenerMultiplexer
, css::awt::XTextListener
)
139 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TextListenerMultiplexer
, css::awt::XTextListener
, textChanged
, css::awt::TextEvent
)
142 // class ActionListenerMultiplexer
144 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( ActionListenerMultiplexer
, css::awt::XActionListener
)
145 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( ActionListenerMultiplexer
, css::awt::XActionListener
, actionPerformed
, css::awt::ActionEvent
)
148 // class ItemListenerMultiplexer
150 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( ItemListenerMultiplexer
, css::awt::XItemListener
)
151 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( ItemListenerMultiplexer
, css::awt::XItemListener
, itemStateChanged
, css::awt::ItemEvent
)
154 // class TabListenerMultiplexer
156 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( TabListenerMultiplexer
, css::awt::XTabListener
)
158 void TabListenerMultiplexer::inserted( sal_Int32 evt
) throw(css::uno::RuntimeException
, std::exception
)
159 IMPL_TABLISTENERMULTIPLEXER_LISTENERMETHOD_BODY_1PARAM( TabListenerMultiplexer
, css::awt::XTabListener
, inserted
, ::sal_Int32
)
161 void TabListenerMultiplexer::removed( sal_Int32 evt
) throw(css::uno::RuntimeException
, std::exception
)
162 IMPL_TABLISTENERMULTIPLEXER_LISTENERMETHOD_BODY_1PARAM( TabListenerMultiplexer
, css::awt::XTabListener
, removed
, ::sal_Int32
)
164 void TabListenerMultiplexer::changed( sal_Int32 evt
, const css::uno::Sequence
< css::beans::NamedValue
>& evt2
) throw(css::uno::RuntimeException
, std::exception
)
166 sal_Int32
aMulti( evt
);
167 ::comphelper::OInterfaceIteratorHelper2
aIt( *this );
168 while( aIt
.hasMoreElements() )
170 css::uno::Reference
< css::awt::XTabListener
> xListener(
171 static_cast< css::awt::XTabListener
* >( aIt
.next() ) );
174 xListener
->changed( aMulti
, evt2
);
176 catch(const css::lang::DisposedException
& e
)
178 OSL_ENSURE( e
.Context
.is(), "caught DisposedException with empty Context field" );
179 if ( e
.Context
== xListener
|| !e
.Context
.is() )
182 catch(const css::uno::RuntimeException
& e
)
184 DISPLAY_EXCEPTION( TabListenerMultiplexer
, changed
, e
)
190 void TabListenerMultiplexer::activated( sal_Int32 evt
) throw(css::uno::RuntimeException
, std::exception
)
191 IMPL_TABLISTENERMULTIPLEXER_LISTENERMETHOD_BODY_1PARAM( TabListenerMultiplexer
, css::awt::XTabListener
, activated
, ::sal_Int32
)
193 void TabListenerMultiplexer::deactivated( sal_Int32 evt
) throw(css::uno::RuntimeException
, std::exception
)
194 IMPL_TABLISTENERMULTIPLEXER_LISTENERMETHOD_BODY_1PARAM( TabListenerMultiplexer
, css::awt::XTabListener
, deactivated
, ::sal_Int32
)
197 // class ContainerListenerMultiplexer
199 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( ContainerListenerMultiplexer
, css::container::XContainerListener
)
200 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( ContainerListenerMultiplexer
, css::container::XContainerListener
, elementInserted
, css::container::ContainerEvent
)
201 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( ContainerListenerMultiplexer
, css::container::XContainerListener
, elementRemoved
, css::container::ContainerEvent
)
202 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( ContainerListenerMultiplexer
, css::container::XContainerListener
, elementReplaced
, css::container::ContainerEvent
)
205 // class SpinListenerMultiplexer
207 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( SpinListenerMultiplexer
, css::awt::XSpinListener
)
208 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( SpinListenerMultiplexer
, css::awt::XSpinListener
, up
, css::awt::SpinEvent
)
209 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( SpinListenerMultiplexer
, css::awt::XSpinListener
, down
, css::awt::SpinEvent
)
210 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( SpinListenerMultiplexer
, css::awt::XSpinListener
, first
, css::awt::SpinEvent
)
211 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( SpinListenerMultiplexer
, css::awt::XSpinListener
, last
, css::awt::SpinEvent
)
214 // class AdjustmentListenerMultiplexer
216 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( AdjustmentListenerMultiplexer
, css::awt::XAdjustmentListener
)
217 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( AdjustmentListenerMultiplexer
, css::awt::XAdjustmentListener
, adjustmentValueChanged
, css::awt::AdjustmentEvent
)
220 // class MenuListenerMultiplexer
222 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( MenuListenerMultiplexer
, css::awt::XMenuListener
)
223 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MenuListenerMultiplexer
, css::awt::XMenuListener
, itemHighlighted
, css::awt::MenuEvent
)
224 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MenuListenerMultiplexer
, css::awt::XMenuListener
, itemSelected
, css::awt::MenuEvent
)
225 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MenuListenerMultiplexer
, css::awt::XMenuListener
, itemActivated
, css::awt::MenuEvent
)
226 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( MenuListenerMultiplexer
, css::awt::XMenuListener
, itemDeactivated
, css::awt::MenuEvent
)
229 // class TreeSelectionListenerMultiplexer
231 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( TreeSelectionListenerMultiplexer
, css::view::XSelectionChangeListener
)
232 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TreeSelectionListenerMultiplexer
, css::view::XSelectionChangeListener
, selectionChanged
, css::lang::EventObject
)
235 // class TreeSelectionListenerMultiplexer
237 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( TreeExpansionListenerMultiplexer
, css::awt::tree::XTreeExpansionListener
)
238 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TreeExpansionListenerMultiplexer
, css::awt::tree::XTreeExpansionListener
, requestChildNodes
, css::awt::tree::TreeExpansionEvent
)
239 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD_EXCEPTION( TreeExpansionListenerMultiplexer
, css::awt::tree::XTreeExpansionListener
, treeExpanding
, css::awt::tree::TreeExpansionEvent
, css::awt::tree::ExpandVetoException
)
240 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD_EXCEPTION( TreeExpansionListenerMultiplexer
, css::awt::tree::XTreeExpansionListener
, treeCollapsing
, css::awt::tree::TreeExpansionEvent
, css::awt::tree::ExpandVetoException
)
241 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TreeExpansionListenerMultiplexer
, css::awt::tree::XTreeExpansionListener
, treeExpanded
, css::awt::tree::TreeExpansionEvent
)
242 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TreeExpansionListenerMultiplexer
, css::awt::tree::XTreeExpansionListener
, treeCollapsed
, css::awt::tree::TreeExpansionEvent
)
245 // class TreeEditListenerMultiplexer
247 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( TreeEditListenerMultiplexer
, css::awt::tree::XTreeEditListener
)
250 // class SelectionListenerMultiplexer
252 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( SelectionListenerMultiplexer
, css::awt::grid::XGridSelectionListener
)
253 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( SelectionListenerMultiplexer
, css::awt::grid::XGridSelectionListener
, selectionChanged
, css::awt::grid::GridSelectionEvent
)
256 // class SelectionListenerMultiplexer
258 IMPL_LISTENERMULTIPLEXER_BASEMETHODS( TabPageListenerMultiplexer
, css::awt::tab::XTabPageContainerListener
)
259 IMPL_LISTENERMULTIPLEXER_LISTENERMETHOD( TabPageListenerMultiplexer
, css::awt::tab::XTabPageContainerListener
, tabPageActivated
, css::awt::tab::TabPageActivatedEvent
)
260 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */