1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _OCONNECTIONPOINTCONTAINERHELPER_HXX
29 #define _OCONNECTIONPOINTCONTAINERHELPER_HXX
30 
31 //______________________________________________________________________________________________________________
32 //	includes of other projects
33 //______________________________________________________________________________________________________________
34 
35 #include <com/sun/star/lang/XConnectionPointContainer.hpp>
36 #include <com/sun/star/lang/XConnectionPoint.hpp>
37 #include <cppuhelper/weak.hxx>
38 #include <cppuhelper/propshlp.hxx>
39 
40 //______________________________________________________________________________________________________________
41 //	includes of my own project
42 //______________________________________________________________________________________________________________
43 
44 //______________________________________________________________________________________________________________
45 //	namespaces
46 //______________________________________________________________________________________________________________
47 
48 namespace unocontrols{
49 
50 #define	UNO3_ANY										::com::sun::star::uno::Any
51 #define	UNO3_SEQUENCE									::com::sun::star::uno::Sequence
52 #define	UNO3_TYPE										::com::sun::star::uno::Type
53 #define	UNO3_REFERENCE									::com::sun::star::uno::Reference
54 #define	UNO3_XCONNECTIONPOINTCONTAINER					::com::sun::star::lang::XConnectionPointContainer
55 #define	UNO3_XCONNECTIONPOINT							::com::sun::star::lang::XConnectionPoint
56 #define	UNO3_MUTEX										::osl::Mutex
57 #define	UNO3_RUNTIMEEXCEPTION							::com::sun::star::uno::RuntimeException
58 #define	UNO3_XINTERFACE									::com::sun::star::uno::XInterface
59 #define	UNO3_OMULTITYPEINTERFACECONTAINERHELPER			::cppu::OMultiTypeInterfaceContainerHelper
60 #define	UNO3_LISTENEREXISTEXCEPTION						::com::sun::star::lang::ListenerExistException
61 #define	UNO3_INVALIDLISTENEREXCEPTION					::com::sun::star::lang::InvalidListenerException
62 #define	UNO3_WEAKREFERENCE								::com::sun::star::uno::WeakReference
63 #define	UNO3_OWEAKOBJECT								::cppu::OWeakObject
64 
65 //______________________________________________________________________________________________________________
66 //	defines
67 //______________________________________________________________________________________________________________
68 
69 //______________________________________________________________________________________________________________
70 //	class declaration OConnectionPointContainerHelper
71 //______________________________________________________________________________________________________________
72 
73 class OConnectionPointContainerHelper	:	public	UNO3_XCONNECTIONPOINTCONTAINER
74 										,	public	UNO3_OWEAKOBJECT
75 {
76 
77 //______________________________________________________________________________________________________________
78 //	public methods
79 //______________________________________________________________________________________________________________
80 
81 public:
82 
83 	//__________________________________________________________________________________________________________
84 	//	construct/destruct
85 	//__________________________________________________________________________________________________________
86 
87 	/**_________________________________________________________________________________________________________
88 		@short
89 		@descr
90 
91 		@seealso
92 
93 		@param
94 
95 		@return
96 
97 		@onerror
98 	*/
99 
100 	OConnectionPointContainerHelper( UNO3_MUTEX& aMutex );
101 
102 	/**_________________________________________________________________________________________________________
103 		@short
104 		@descr
105 
106 		@seealso
107 
108 		@param
109 
110 		@return
111 
112 		@onerror
113 	*/
114 
115 	virtual	~OConnectionPointContainerHelper();
116 
117 	//________________________________________________________________________________________________________
118 	//	XInterface
119 	//________________________________________________________________________________________________________
120 
121 	/**_______________________________________________________________________________________________________
122 		@short		give answer, if interface is supported
123 		@descr		The interfaces are searched by type.
124 
125 		@seealso	XInterface
126 
127 		@param      "rType" is the type of searched interface.
128 
129 		@return		Any		information about found interface
130 
131 		@onerror	A RuntimeException is thrown.
132 	*/
133 
134 	virtual UNO3_ANY SAL_CALL queryInterface( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION );
135 
136 	/**_______________________________________________________________________________________________________
137 		@short		increment refcount
138 		@descr		-
139 
140 		@seealso	XInterface
141 		@seealso	release()
142 
143 		@param		-
144 
145 		@return		-
146 
147 		@onerror	A RuntimeException is thrown.
148 	*/
149 
150     virtual void SAL_CALL acquire() throw();
151 
152 	/**_______________________________________________________________________________________________________
153 		@short		decrement refcount
154 		@descr		-
155 
156 		@seealso	XInterface
157 		@seealso	acquire()
158 
159 		@param		-
160 
161 		@return		-
162 
163 		@onerror	A RuntimeException is thrown.
164 	*/
165 
166     virtual void SAL_CALL release() throw();
167 
168 	//__________________________________________________________________________________________________________
169 	//	XConnectionPointContainer
170 	//__________________________________________________________________________________________________________
171 
172 	/**_________________________________________________________________________________________________________
173 		@short
174 		@descr
175 
176 		@seealso
177 
178 		@param
179 
180 		@return
181 
182 		@onerror
183 	*/
184 
185     virtual UNO3_SEQUENCE< UNO3_TYPE > SAL_CALL getConnectionPointTypes() throw( UNO3_RUNTIMEEXCEPTION );
186 
187 	/**_________________________________________________________________________________________________________
188 		@short
189 		@descr
190 
191 		@seealso
192 
193 		@param
194 
195 		@return
196 
197 		@onerror
198 	*/
199 
200     virtual UNO3_REFERENCE< UNO3_XCONNECTIONPOINT > SAL_CALL queryConnectionPoint( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION );
201 
202 	/**_________________________________________________________________________________________________________
203 		@short
204 		@descr
205 
206 		@seealso
207 
208 		@param
209 
210 		@return
211 
212 		@onerror
213 	*/
214 
215     virtual void SAL_CALL advise(	const	UNO3_TYPE&							aType		,
216 									const	UNO3_REFERENCE< UNO3_XINTERFACE >&	xListener	) throw( UNO3_RUNTIMEEXCEPTION );
217 
218 	/**_________________________________________________________________________________________________________
219 		@short
220 		@descr
221 
222 		@seealso
223 
224 		@param
225 
226 		@return
227 
228 		@onerror
229 	*/
230 
231     virtual void SAL_CALL unadvise(	const	UNO3_TYPE&							aType		,
232 									const	UNO3_REFERENCE< UNO3_XINTERFACE >&	xListener	) throw( UNO3_RUNTIMEEXCEPTION );
233 
234 	/**_________________________________________________________________________________________________________
235 		@short
236 		@descr
237 
238 		@seealso
239 
240 		@param
241 
242 		@return
243 
244 		@onerror
245 	*/
246 
247 	UNO3_OMULTITYPEINTERFACECONTAINERHELPER& impl_getMultiTypeContainer();
248 
249 //______________________________________________________________________________________________________________
250 //	private variables
251 //______________________________________________________________________________________________________________
252 
253 private:
254 
255 	UNO3_MUTEX&									m_aSharedMutex			;
256 	UNO3_OMULTITYPEINTERFACECONTAINERHELPER		m_aMultiTypeContainer	;	// Container to hold listener
257 
258 };	// class OConnectionPointContainerHelper
259 
260 }	// namespace unocontrols
261 
262 #endif	// #ifndef _OCONNECTIONPOINTCONTAINERHELPER_HXX
263