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 _UNOCONTROLS_FRAMECONTROL_CTRL_HXX
29 #define _UNOCONTROLS_FRAMECONTROL_CTRL_HXX
30 
31 //______________________________________________________________________________________________________________
32 //	includes of other projects
33 //______________________________________________________________________________________________________________
34 
35 #include <com/sun/star/frame/XFrameActionListener.hpp>
36 #include <com/sun/star/frame/XComponentLoader.hpp>
37 #include <com/sun/star/frame/XFrame.hpp>
38 #include <com/sun/star/frame/FrameActionEvent.hpp>
39 #include <com/sun/star/frame/FrameAction.hpp>
40 #include <com/sun/star/lang/XServiceName.hpp>
41 #include <com/sun/star/lang/XServiceInfo.hpp>
42 #include <com/sun/star/lang/XConnectionPointContainer.hpp>
43 #include <cppuhelper/propshlp.hxx>
44 
45 //______________________________________________________________________________________________________________
46 //	includes of my own project
47 //______________________________________________________________________________________________________________
48 #include "basecontrol.hxx"
49 #include "OConnectionPointContainerHelper.hxx"
50 
51 //______________________________________________________________________________________________________________
52 //	namespaces
53 //______________________________________________________________________________________________________________
54 
55 namespace unocontrols{
56 
57 #define	UNO3_ANY										::com::sun::star::uno::Any
58 #define	UNO3_ILLEGALARGUMENTEXCEPTION					::com::sun::star::lang::IllegalArgumentException
59 #define	UNO3_IPROPERTYARRAYHELPER						::cppu::IPropertyArrayHelper
60 #define	UNO3_OBROADCASTHELPER							::cppu::OBroadcastHelper
61 #define	UNO3_OCONNECTIONPOINTCONTAINERHELPER			OConnectionPointContainerHelper
62 #define	UNO3_OMULTITYPEINTERFACECONTAINERHELPER			::cppu::OMultiTypeInterfaceContainerHelper
63 #define	UNO3_OPROPERTYSETHELPER							::cppu::OPropertySetHelper
64 #define	UNO3_OUSTRING									::rtl::OUString
65 #define	UNO3_PROPERTY									::com::sun::star::beans::Property
66 #define	UNO3_PROPERTYVALUE								::com::sun::star::beans::PropertyValue
67 #define	UNO3_REFERENCE									::com::sun::star::uno::Reference
68 #define	UNO3_RUNTIMEEXCEPTION							::com::sun::star::uno::RuntimeException
69 #define	UNO3_SEQUENCE									::com::sun::star::uno::Sequence
70 #define	UNO3_TYPE										::com::sun::star::uno::Type
71 #define	UNO3_WINDOWDESCRIPTOR                           ::com::sun::star::awt::WindowDescriptor
72 #define	UNO3_XCONNECTIONPOINT							::com::sun::star::lang::XConnectionPoint
73 #define	UNO3_XCONNECTIONPOINTCONTAINER					::com::sun::star::lang::XConnectionPointContainer
74 #define	UNO3_XCONTROLMODEL								::com::sun::star::awt::XControlModel
75 #define	UNO3_XFRAME										::com::sun::star::frame::XFrame
76 #define	UNO3_XGRAPHICS									::com::sun::star::awt::XGraphics
77 #define	UNO3_XINTERFACE									::com::sun::star::uno::XInterface
78 #define	UNO3_XMULTISERVICEFACTORY						::com::sun::star::lang::XMultiServiceFactory
79 #define	UNO3_XPROPERTYSETINFO							::com::sun::star::beans::XPropertySetInfo
80 #define	UNO3_XTOOLKIT									::com::sun::star::awt::XToolkit
81 #define	UNO3_XWINDOWPEER								::com::sun::star::awt::XWindowPeer
82 
83 //______________________________________________________________________________________________________________
84 //	defines
85 //______________________________________________________________________________________________________________
86 
87 #define	SERVICENAME_FRAMECONTROL						"com.sun.star.frame.FrameControl"
88 #define	IMPLEMENTATIONNAME_FRAMECONTROL					"stardiv.UnoControls.FrameControl"
89 #define	PROPERTYNAME_LOADERARGUMENTS					"LoaderArguments"
90 #define	PROPERTYNAME_COMPONENTURL						"ComponentURL"
91 #define	PROPERTYNAME_FRAME								"Frame"
92 #define	ERRORTEXT_VOSENSHURE							"This is an invalid property handle."
93 #define PROPERTY_COUNT									3                                       				// you must count the propertys
94 #define PROPERTYHANDLE_COMPONENTURL						0														// Id must be the index into the array
95 #define PROPERTYHANDLE_FRAME							1
96 #define PROPERTYHANDLE_LOADERARGUMENTS					2
97 
98 //______________________________________________________________________________________________________________
99 //	class
100 //______________________________________________________________________________________________________________
101 
102 class FrameControl	: public UNO3_XCONTROLMODEL
103 					, public UNO3_XCONNECTIONPOINTCONTAINER
104 					, public BaseControl								// This order is neccessary for right initialization of m_aMutex!
105 					, public UNO3_OBROADCASTHELPER
106 					, public UNO3_OPROPERTYSETHELPER
107 {
108 
109 //______________________________________________________________________________________________________________
110 //	public methods
111 //______________________________________________________________________________________________________________
112 
113 public:
114 
115 	//__________________________________________________________________________________________________________
116 	//	construct/destruct
117 	//__________________________________________________________________________________________________________
118 
119 	/**_________________________________________________________________________________________________________
120 		@short
121 		@descr
122 
123 		@seealso
124 
125 		@param
126 
127 		@return
128 
129 		@onerror
130 	*/
131 
132 	FrameControl( const UNO3_REFERENCE< UNO3_XMULTISERVICEFACTORY >& xFactory );
133 
134 	/**_________________________________________________________________________________________________________
135 		@short
136 		@descr
137 
138 		@seealso
139 
140 		@param
141 
142 		@return
143 
144 		@onerror
145 	*/
146 
147 	virtual	~FrameControl();
148 
149 	//__________________________________________________________________________________________________________
150 	//	XInterface
151 	//__________________________________________________________________________________________________________
152 
153 	/**_________________________________________________________________________________________________________
154 		@short
155 		@descr
156 
157 		@seealso
158 
159 		@param
160 
161 		@return
162 
163 		@onerror
164 	*/
165 
166 	virtual UNO3_ANY SAL_CALL queryInterface( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION );
167 
168 	/**_______________________________________________________________________________________________________
169 		@short		increment refcount
170 		@descr		-
171 
172 		@seealso	XInterface
173 		@seealso	release()
174 
175 		@param		-
176 
177 		@return		-
178 
179 		@onerror	A RuntimeException is thrown.
180 	*/
181 
182     virtual void SAL_CALL acquire() throw();
183 
184 	/**_______________________________________________________________________________________________________
185 		@short		decrement refcount
186 		@descr		-
187 
188 		@seealso	XInterface
189 		@seealso	acquire()
190 
191 		@param		-
192 
193 		@return		-
194 
195 		@onerror	A RuntimeException is thrown.
196 	*/
197 
198     virtual void SAL_CALL release() throw();
199 
200 	//__________________________________________________________________________________________________________
201 	//	XTypeProvider
202 	//__________________________________________________________________________________________________________
203 
204 	/**_________________________________________________________________________________________________________
205 		@short
206 		@descr
207 
208 		@seealso
209 
210 		@param
211 
212 		@return
213 
214 		@onerror
215 	*/
216 
217 	virtual UNO3_SEQUENCE< UNO3_TYPE > SAL_CALL getTypes() throw( UNO3_RUNTIMEEXCEPTION );
218 
219 	//__________________________________________________________________________________________________________
220 	//	XAggregation
221 	//__________________________________________________________________________________________________________
222 
223 	/**_________________________________________________________________________________________________________
224 		@short
225 		@descr
226 
227 		@seealso
228 
229 		@param
230 
231 		@return
232 
233 		@onerror
234 	*/
235 
236 	UNO3_ANY SAL_CALL queryAggregation( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION );
237 
238 	//__________________________________________________________________________________________________________
239 	//	XControl
240 	//__________________________________________________________________________________________________________
241 
242 	/**_________________________________________________________________________________________________________
243 		@short
244 		@descr
245 
246 		@seealso
247 
248 		@param
249 
250 		@return
251 
252 		@onerror
253 	*/
254 
255     virtual void SAL_CALL createPeer(	const	UNO3_REFERENCE< UNO3_XTOOLKIT >&	xToolkit	,
256 										const	UNO3_REFERENCE< UNO3_XWINDOWPEER >&	xParent		) throw( UNO3_RUNTIMEEXCEPTION );
257 
258 	/**_________________________________________________________________________________________________________
259 		@short
260 		@descr
261 
262 		@seealso
263 
264 		@param
265 
266 		@return
267 
268 		@onerror
269 	*/
270 
271     virtual sal_Bool SAL_CALL setModel( const UNO3_REFERENCE< UNO3_XCONTROLMODEL >& xModel ) throw( UNO3_RUNTIMEEXCEPTION );
272 
273 	/**_________________________________________________________________________________________________________
274 		@short
275 		@descr
276 
277 		@seealso
278 
279 		@param
280 
281 		@return
282 
283 		@onerror
284 	*/
285 
286     virtual UNO3_REFERENCE< UNO3_XCONTROLMODEL > SAL_CALL getModel() throw( UNO3_RUNTIMEEXCEPTION );
287 
288 	//__________________________________________________________________________________________________________
289     //	XComponent
290 	//__________________________________________________________________________________________________________
291 
292 	/**_________________________________________________________________________________________________________
293 		@short
294 		@descr
295 
296 		@seealso
297 
298 		@param
299 
300 		@return
301 
302 		@onerror
303 	*/
304 
305     virtual void SAL_CALL dispose() throw( UNO3_RUNTIMEEXCEPTION );
306 
307 	//__________________________________________________________________________________________________________
308 	//	XView
309 	//__________________________________________________________________________________________________________
310 
311 	/**_________________________________________________________________________________________________________
312 		@short
313 		@descr
314 
315 		@seealso
316 
317 		@param
318 
319 		@return
320 
321 		@onerror
322 	*/
323 
324     virtual sal_Bool SAL_CALL setGraphics( const UNO3_REFERENCE< UNO3_XGRAPHICS >& xDevice ) throw( UNO3_RUNTIMEEXCEPTION );
325 
326 	/**_________________________________________________________________________________________________________
327 		@short
328 		@descr
329 
330 		@seealso
331 
332 		@param
333 
334 		@return
335 
336 		@onerror
337 	*/
338 
339     virtual UNO3_REFERENCE< UNO3_XGRAPHICS > SAL_CALL getGraphics() throw( UNO3_RUNTIMEEXCEPTION );
340 
341 	//__________________________________________________________________________________________________________
342 	//	XConnectionPointContainer
343 	//__________________________________________________________________________________________________________
344 
345 	/**_________________________________________________________________________________________________________
346 		@short
347 		@descr
348 
349 		@seealso
350 
351 		@param
352 
353 		@return
354 
355 		@onerror
356 	*/
357 
358 	virtual UNO3_SEQUENCE< UNO3_TYPE > SAL_CALL getConnectionPointTypes() throw( UNO3_RUNTIMEEXCEPTION );
359 
360 	/**_________________________________________________________________________________________________________
361 		@short
362 		@descr
363 
364 		@seealso
365 
366 		@param
367 
368 		@return
369 
370 		@onerror
371 	*/
372 
373     virtual UNO3_REFERENCE< UNO3_XCONNECTIONPOINT > SAL_CALL queryConnectionPoint( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION );
374 
375 	/**_________________________________________________________________________________________________________
376 		@short
377 		@descr
378 
379 		@seealso
380 
381 		@param
382 
383 		@return
384 
385 		@onerror
386 	*/
387 
388     virtual void SAL_CALL advise(	const	UNO3_TYPE&							aType		,
389 									const	UNO3_REFERENCE< UNO3_XINTERFACE >&	xListener	) throw( UNO3_RUNTIMEEXCEPTION );
390 
391 	/**_________________________________________________________________________________________________________
392 		@short
393 		@descr
394 
395 		@seealso
396 
397 		@param
398 
399 		@return
400 
401 		@onerror
402 	*/
403 
404     virtual void SAL_CALL unadvise(	const	UNO3_TYPE&							aType		,
405 									const	UNO3_REFERENCE< UNO3_XINTERFACE >&	xListener	) throw( UNO3_RUNTIMEEXCEPTION );
406 
407 	//__________________________________________________________________________________________________________
408 	//	impl but public methods to register service!
409 	//__________________________________________________________________________________________________________
410 
411 	/**_________________________________________________________________________________________________________
412 		@short
413 		@descr
414 
415 		@seealso
416 
417 		@param
418 
419 		@return
420 
421 		@onerror
422 	*/
423 
424     static const UNO3_SEQUENCE< UNO3_OUSTRING > impl_getStaticSupportedServiceNames();
425 
426 	/**_________________________________________________________________________________________________________
427 		@short
428 		@descr
429 
430 		@seealso
431 
432 		@param
433 
434 		@return
435 
436 		@onerror
437 	*/
438 
439     static const UNO3_OUSTRING impl_getStaticImplementationName();
440 
441 //______________________________________________________________________________________________________________
442 //	protected methods
443 //______________________________________________________________________________________________________________
444 
445 protected:
446     using OPropertySetHelper::getFastPropertyValue;
447 	//__________________________________________________________________________________________________________
448 	//	OPropertySetHelper
449 	//__________________________________________________________________________________________________________
450 
451 	/**_________________________________________________________________________________________________________
452 		@short
453 		@descr
454 
455 		@seealso
456 
457 		@param
458 
459 		@return
460 
461 		@onerror
462 	*/
463 
464 	virtual sal_Bool SAL_CALL convertFastPropertyValue(			UNO3_ANY&	rConvertedValue	,
465 																UNO3_ANY&	rOldValue		,
466 																sal_Int32	nHandle			,
467 														const	UNO3_ANY&	rValue			) throw( UNO3_ILLEGALARGUMENTEXCEPTION );
468 
469 	/**_________________________________________________________________________________________________________
470 		@short
471 		@descr
472 
473 		@seealso
474 
475 		@param
476 
477 		@return
478 
479 		@onerror
480 	*/
481 
482 	virtual void SAL_CALL setFastPropertyValue_NoBroadcast(			sal_Int32	nHandle	,
483 						  									const	UNO3_ANY&	rValue	) throw ( ::com::sun::star::uno::Exception );
484 
485 	/**_________________________________________________________________________________________________________
486 		@short
487 		@descr
488 
489 		@seealso
490 
491 		@param
492 
493 		@return
494 
495 		@onerror
496 	*/
497 
498 	virtual void SAL_CALL getFastPropertyValue(	UNO3_ANY&	rValue	,
499 						  						sal_Int32	nHandle	) const ;
500 
501 	/**_________________________________________________________________________________________________________
502 		@short
503 		@descr
504 
505 		@seealso
506 
507 		@param
508 
509 		@return
510 
511 		@onerror
512 	*/
513 
514 	virtual UNO3_IPROPERTYARRAYHELPER& SAL_CALL getInfoHelper();
515 
516 	//__________________________________________________________________________________________________________
517 	//	XPropertySet
518 	//__________________________________________________________________________________________________________
519 
520 	/**_________________________________________________________________________________________________________
521 		@short
522 		@descr
523 
524 		@seealso
525 
526 		@param
527 
528 		@return
529 
530 		@onerror
531 	*/
532 
533 	UNO3_REFERENCE< UNO3_XPROPERTYSETINFO > SAL_CALL getPropertySetInfo() throw( UNO3_RUNTIMEEXCEPTION );
534 
535 	//__________________________________________________________________________________________________________
536 	//	BaseControl
537 	//__________________________________________________________________________________________________________
538 
539 	/**_________________________________________________________________________________________________________
540 		@short
541 		@descr
542 
543 		@seealso
544 
545 		@param
546 
547 		@return
548 
549 		@onerror
550 	*/
551 
552 	virtual UNO3_WINDOWDESCRIPTOR* impl_getWindowDescriptor( const UNO3_REFERENCE< UNO3_XWINDOWPEER >& xParentPeer );
553 
554 //______________________________________________________________________________________________________________
555 //	private methods
556 //______________________________________________________________________________________________________________
557 
558 private:
559 
560 	/**_________________________________________________________________________________________________________
561 		@short
562 		@descr
563 
564 		@seealso
565 
566 		@param
567 
568 		@return
569 
570 		@onerror
571 	*/
572 
573 	void impl_createFrame(	const	UNO3_REFERENCE< UNO3_XWINDOWPEER >&		xPeer			,
574 							const	UNO3_OUSTRING&							sURL			,
575 							const	UNO3_SEQUENCE< UNO3_PROPERTYVALUE >&	seqArguments	);
576 
577 	/**_________________________________________________________________________________________________________
578 		@short
579 		@descr
580 
581 		@seealso
582 
583 		@param
584 
585 		@return
586 
587 		@onerror
588 	*/
589 
590     void impl_deleteFrame();
591 
592 	/**_________________________________________________________________________________________________________
593 		@short
594 		@descr
595 
596 		@seealso
597 
598 		@param
599 
600 		@return
601 
602 		@onerror
603 	*/
604 
605 	static const UNO3_SEQUENCE< UNO3_PROPERTY > impl_getStaticPropertyDescriptor();
606 
607 
608 //______________________________________________________________________________________________________________
609 //	private variables
610 //______________________________________________________________________________________________________________
611 
612 private:
613 
614 	UNO3_REFERENCE< UNO3_XFRAME >				m_xFrame					;
615 	UNO3_OUSTRING								m_sComponentURL				;
616 	UNO3_SEQUENCE< UNO3_PROPERTYVALUE >			m_seqLoaderArguments		;
617 	UNO3_OMULTITYPEINTERFACECONTAINERHELPER		m_aInterfaceContainer		;
618 	UNO3_OCONNECTIONPOINTCONTAINERHELPER		m_aConnectionPointContainer	;
619 
620 };	// class FrameControl
621 
622 }	// namespace unocontrols
623 
624 #endif	// #ifndef _UNOCONTROLS_FRAMECONTROL_CTRL_HXX
625