xref: /trunk/main/UnoControls/inc/basecontainercontrol.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
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_BASECONTAINERCONTROL_CTRL_HXX
29 #define _UNOCONTROLS_BASECONTAINERCONTROL_CTRL_HXX
30 
31 //____________________________________________________________________________________________________________
32 //  includes of other projects
33 //____________________________________________________________________________________________________________
34 
35 #include <com/sun/star/lang/XServiceName.hpp>
36 #include <com/sun/star/lang/XServiceInfo.hpp>
37 #include <com/sun/star/container/XContainer.hpp>
38 #include <com/sun/star/container/XIndexContainer.hpp>
39 #include <com/sun/star/container/XNameReplace.hpp>
40 #include <com/sun/star/container/XContainerListener.hpp>
41 #include <com/sun/star/container/XSet.hpp>
42 #include <com/sun/star/container/ContainerEvent.hpp>
43 #include <com/sun/star/container/XIndexReplace.hpp>
44 #include <com/sun/star/container/XNameContainer.hpp>
45 #include <tools/list.hxx>
46 
47 //____________________________________________________________________________________________________________
48 //  includes of my own project
49 //____________________________________________________________________________________________________________
50 #include "basecontrol.hxx"
51 
52 //____________________________________________________________________________________________________________
53 //  "namespaces"
54 //____________________________________________________________________________________________________________
55 
56 namespace unocontrols{
57 
58 #define UNO3_REFERENCE                              ::com::sun::star::uno::Reference
59 #define UNO3_XCONTROL                               ::com::sun::star::awt::XControl
60 #define UNO3_OUSTRING                               ::rtl::OUString
61 #define UNO3_XCONTROLMODEL                          ::com::sun::star::awt::XControlModel
62 #define UNO3_XCONTROLCONTAINER                      ::com::sun::star::awt::XControlContainer
63 #define UNO3_XMULTISERVICEFACTORY                   ::com::sun::star::lang::XMultiServiceFactory
64 #define UNO3_TYPE                                   ::com::sun::star::uno::Type
65 #define UNO3_RUNTIMEEXCEPTION                       ::com::sun::star::uno::RuntimeException
66 #define UNO3_XTOOLKIT                               ::com::sun::star::awt::XToolkit
67 #define UNO3_XWINDOWPEER                            ::com::sun::star::awt::XWindowPeer
68 #define UNO3_EVENTOBJECT                            ::com::sun::star::lang::EventObject
69 #define UNO3_SEQUENCE                               ::com::sun::star::uno::Sequence
70 #define UNO3_XCONTAINERLISTENER                     ::com::sun::star::container::XContainerListener
71 #define UNO3_ANY                                    ::com::sun::star::uno::Any
72 #define UNO3_XTABCONTROLLER                         ::com::sun::star::awt::XTabController
73 #define UNO3_WINDOWDESCRIPTOR                       ::com::sun::star::awt::WindowDescriptor
74 #define UNO3_XGRAPHICS                              ::com::sun::star::awt::XGraphics
75 #define UNO3_OMULTITYPEINTERFACECONTAINERHELPER     ::cppu::OMultiTypeInterfaceContainerHelper
76 #define UNO3_ILLEGALARGUMENTEXCEPTION               ::com::sun::star::lang::IllegalArgumentException
77 
78 //____________________________________________________________________________________________________________
79 //  structs, types, forwards
80 //____________________________________________________________________________________________________________
81 
82 struct IMPL_ControlInfo
83 {
84     UNO3_REFERENCE< UNO3_XCONTROL >     xControl    ;
85     UNO3_OUSTRING                       sName       ;
86 };
87 
88 // makro define a list-class for struct IMPL_ControlInfo!
89 class IMPL_ControlInfoList ;
90 DECLARE_LIST( IMPL_ControlInfoList, IMPL_ControlInfo* )
91 
92 //____________________________________________________________________________________________________________
93 //  classes
94 //____________________________________________________________________________________________________________
95 
96 class BaseContainerControl  : public UNO3_XCONTROLMODEL
97                             , public UNO3_XCONTROLCONTAINER
98                             , public BaseControl
99 {
100 
101 //____________________________________________________________________________________________________________
102 //  public methods
103 //____________________________________________________________________________________________________________
104 
105 public:
106 
107     //________________________________________________________________________________________________________
108     //  construct/destruct
109     //________________________________________________________________________________________________________
110 
111     /**_______________________________________________________________________________________________________
112         @short      -
113         @descr      -
114 
115         @seealso    -
116 
117         @param      -
118 
119         @return     -
120 
121         @onerror    -
122     */
123 
124     BaseContainerControl( const UNO3_REFERENCE< UNO3_XMULTISERVICEFACTORY >& xFactory );
125 
126     /**_______________________________________________________________________________________________________
127         @short      -
128         @descr      -
129 
130         @seealso    -
131 
132         @param      -
133 
134         @return     -
135 
136         @onerror    -
137     */
138 
139     virtual ~BaseContainerControl();
140 
141     //________________________________________________________________________________________________________
142     //  XInterface
143     //________________________________________________________________________________________________________
144 
145     /**_______________________________________________________________________________________________________
146         @short      give answer, if interface is supported
147         @descr      The interfaces are searched by type.
148 
149         @seealso    XInterface
150 
151         @param      "rType" is the type of searched interface.
152 
153         @return     Any     information about found interface
154 
155         @onerror    A RuntimeException is thrown.
156     */
157 
158     virtual UNO3_ANY SAL_CALL queryInterface( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION );
159 
160     //________________________________________________________________________________________________________
161     //  XTypeProvider
162     //________________________________________________________________________________________________________
163 
164     /**_______________________________________________________________________________________________________
165         @short      get information about supported interfaces
166         @descr      -
167 
168         @seealso    XTypeProvider
169 
170         @param      -
171 
172         @return     Sequence of types of all supported interfaces
173 
174         @onerror    A RuntimeException is thrown.
175     */
176 
177     virtual UNO3_SEQUENCE< UNO3_TYPE > SAL_CALL getTypes() throw( UNO3_RUNTIMEEXCEPTION );
178 
179     //________________________________________________________________________________________________________
180     //  XAggregation
181     //________________________________________________________________________________________________________
182 
183     /**_______________________________________________________________________________________________________
184         @short      -
185         @descr      -
186 
187         @seealso    -
188 
189         @param      -
190 
191         @return     -
192 
193         @onerror    -
194     */
195 
196     virtual UNO3_ANY SAL_CALL queryAggregation( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION );
197 
198     //________________________________________________________________________________________________________
199     //  XControl
200     //________________________________________________________________________________________________________
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 createPeer(   const   UNO3_REFERENCE< UNO3_XTOOLKIT >&    xToolkit    ,
216                                         const   UNO3_REFERENCE< UNO3_XWINDOWPEER >& xParent     ) 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 sal_Bool SAL_CALL setModel( const UNO3_REFERENCE< UNO3_XCONTROLMODEL >& xModel ) throw( UNO3_RUNTIMEEXCEPTION );
232 
233     /**_______________________________________________________________________________________________________
234         @short      -
235         @descr      -
236 
237         @seealso    -
238 
239         @param      -
240 
241         @return     -
242 
243         @onerror    -
244     */
245 
246     virtual UNO3_REFERENCE< UNO3_XCONTROLMODEL > SAL_CALL getModel() throw( UNO3_RUNTIMEEXCEPTION );
247 
248     //________________________________________________________________________________________________________
249     //  XComponent
250     //________________________________________________________________________________________________________
251 
252     /**_______________________________________________________________________________________________________
253         @short      -
254         @descr      -
255 
256         @seealso    -
257 
258         @param      -
259 
260         @return     -
261 
262         @onerror    -
263     */
264 
265     virtual void SAL_CALL dispose() throw( UNO3_RUNTIMEEXCEPTION );
266 
267     //________________________________________________________________________________________________________
268     //  XEventListener
269     //________________________________________________________________________________________________________
270 
271     /**_______________________________________________________________________________________________________
272         @short      -
273         @descr      -
274 
275         @seealso    -
276 
277         @param      -
278 
279         @return     -
280 
281         @onerror    -
282     */
283 
284     virtual void SAL_CALL disposing( const UNO3_EVENTOBJECT& rEvent ) throw( UNO3_RUNTIMEEXCEPTION );
285 
286     //________________________________________________________________________________________________________
287     //  XControlContainer
288     //________________________________________________________________________________________________________
289 
290     /**_______________________________________________________________________________________________________
291         @short      -
292         @descr      -
293 
294         @seealso    -
295 
296         @param      -
297 
298         @return     -
299 
300         @onerror    -
301     */
302 
303     virtual void SAL_CALL addControl(   const   UNO3_OUSTRING&                      sName       ,
304                                         const   UNO3_REFERENCE< UNO3_XCONTROL >&    xControl    ) throw( UNO3_RUNTIMEEXCEPTION  );
305 
306     /**_______________________________________________________________________________________________________
307         @short      -
308         @descr      -
309 
310         @seealso    -
311 
312         @param      -
313 
314         @return     -
315 
316         @onerror    -
317     */
318 
319     virtual void SAL_CALL addContainerListener( const UNO3_REFERENCE< UNO3_XCONTAINERLISTENER >& xListener ) throw( UNO3_RUNTIMEEXCEPTION );
320 
321     /**_______________________________________________________________________________________________________
322         @short      -
323         @descr      -
324 
325         @seealso    -
326 
327         @param      -
328 
329         @return     -
330 
331         @onerror    -
332     */
333 
334     virtual void SAL_CALL removeControl( const UNO3_REFERENCE< UNO3_XCONTROL >& xControl ) throw( UNO3_RUNTIMEEXCEPTION );
335 
336     /**_______________________________________________________________________________________________________
337         @short      -
338         @descr      -
339 
340         @seealso    -
341 
342         @param      -
343 
344         @return     -
345 
346         @onerror    -
347     */
348 
349     virtual void SAL_CALL removeContainerListener( const UNO3_REFERENCE< UNO3_XCONTAINERLISTENER >& xListener ) throw( UNO3_RUNTIMEEXCEPTION );
350 
351     /**_______________________________________________________________________________________________________
352         @short      -
353         @descr      -
354 
355         @seealso    -
356 
357         @param      -
358 
359         @return     -
360 
361         @onerror    -
362     */
363 
364     virtual void SAL_CALL setStatusText( const UNO3_OUSTRING& sStatusText ) throw( UNO3_RUNTIMEEXCEPTION );
365 
366     /**_______________________________________________________________________________________________________
367         @short      -
368         @descr      -
369 
370         @seealso    -
371 
372         @param      -
373 
374         @return     -
375 
376         @onerror    -
377     */
378 
379     virtual UNO3_REFERENCE< UNO3_XCONTROL > SAL_CALL getControl( const UNO3_OUSTRING& sName) throw( UNO3_RUNTIMEEXCEPTION );
380 
381     /**_______________________________________________________________________________________________________
382         @short      -
383         @descr      -
384 
385         @seealso    -
386 
387         @param      -
388 
389         @return     -
390 
391         @onerror    -
392     */
393 
394     virtual UNO3_SEQUENCE< UNO3_REFERENCE< UNO3_XCONTROL > > SAL_CALL getControls() throw( UNO3_RUNTIMEEXCEPTION );
395 
396     //________________________________________________________________________________________________________
397     //  XUnoControlContainer
398     //________________________________________________________________________________________________________
399 
400     /**_______________________________________________________________________________________________________
401         @short      -
402         @descr      -
403 
404         @seealso    -
405 
406         @param      -
407 
408         @return     -
409 
410         @onerror    -
411     */
412 
413     virtual void SAL_CALL addTabController( const UNO3_REFERENCE< UNO3_XTABCONTROLLER >& xTabController ) throw( UNO3_RUNTIMEEXCEPTION );
414 
415     /**_______________________________________________________________________________________________________
416         @short      -
417         @descr      -
418 
419         @seealso    -
420 
421         @param      -
422 
423         @return     -
424 
425         @onerror    -
426     */
427 
428     virtual void SAL_CALL removeTabController( const UNO3_REFERENCE< UNO3_XTABCONTROLLER >& xTabController ) throw( UNO3_RUNTIMEEXCEPTION );
429 
430     /**_______________________________________________________________________________________________________
431         @short      -
432         @descr      -
433 
434         @seealso    -
435 
436         @param      -
437 
438         @return     -
439 
440         @onerror    -
441     */
442 
443     virtual void SAL_CALL setTabControllers( const UNO3_SEQUENCE< UNO3_REFERENCE< UNO3_XTABCONTROLLER > >& xTabControllers ) throw( UNO3_RUNTIMEEXCEPTION );
444 
445     /**_______________________________________________________________________________________________________
446         @short      -
447         @descr      -
448 
449         @seealso    -
450 
451         @param      -
452 
453         @return     -
454 
455         @onerror    -
456     */
457 
458     virtual UNO3_SEQUENCE< UNO3_REFERENCE< UNO3_XTABCONTROLLER > > SAL_CALL getTabControllers() throw( UNO3_RUNTIMEEXCEPTION );
459 
460     //________________________________________________________________________________________________________
461     //  XWindow
462     //________________________________________________________________________________________________________
463 
464     /**_______________________________________________________________________________________________________
465         @short      -
466         @descr      -
467 
468         @seealso    -
469 
470         @param      -
471 
472         @return     -
473 
474         @onerror    -
475     */
476 
477     virtual void SAL_CALL setVisible( sal_Bool bVisible ) throw( UNO3_RUNTIMEEXCEPTION );
478 
479 //____________________________________________________________________________________________________________
480 //  protected methods
481 //____________________________________________________________________________________________________________
482 
483 protected:
484     using OComponentHelper::disposing;
485     /**_______________________________________________________________________________________________________
486         @short
487         @descr
488 
489         @seealso
490 
491         @param
492 
493         @return
494 
495         @onerror
496     */
497 
498     virtual UNO3_WINDOWDESCRIPTOR* impl_getWindowDescriptor( const UNO3_REFERENCE< UNO3_XWINDOWPEER >& xParentPeer );
499 
500     /**_______________________________________________________________________________________________________
501         @short
502         @descr
503 
504         @seealso
505 
506         @param
507 
508         @return
509 
510         @onerror
511     */
512 
513     virtual void impl_paint(        sal_Int32                           nX          ,
514                                     sal_Int32                           nY          ,
515                             const   UNO3_REFERENCE< UNO3_XGRAPHICS >&   xGraphics   );
516 
517 //____________________________________________________________________________________________________________
518 //  private methods
519 //____________________________________________________________________________________________________________
520 
521 private:
522 
523     /**_______________________________________________________________________________________________________
524         @short
525         @descr
526 
527         @seealso
528 
529         @param
530 
531         @return
532 
533         @onerror
534     */
535 
536     void impl_activateTabControllers();
537 
538     /**_______________________________________________________________________________________________________
539         @short
540         @descr
541 
542         @seealso
543 
544         @param
545 
546         @return
547 
548         @onerror
549     */
550 
551     void impl_cleanMemory();
552 
553 //____________________________________________________________________________________________________________
554 //  private variables
555 //____________________________________________________________________________________________________________
556 
557 private:
558 
559     IMPL_ControlInfoList*                                   m_pControlInfoList      ;   /// list of pointer of "struct IMPL_ControlInfo" to hold child-controls
560     UNO3_SEQUENCE< UNO3_REFERENCE< UNO3_XTABCONTROLLER > >  m_xTabControllerList    ;   /// list of references of XTabController to hold tab-order in this container
561     UNO3_OMULTITYPEINTERFACECONTAINERHELPER                 m_aListeners            ;
562 
563 };  // class BaseContainerControl
564 
565 }   // namespace unocontrols
566 
567 #endif  // ifndef _UNOCONTROLS_BASECONTAINERCONTROL_CTRL_HXX
568