xref: /AOO41X/main/framework/inc/services/task.hxx (revision f8e07b45f7e1fb69563504f404bb0b75210f0be6)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef __FRAMEWORK_SERVICES_TASK_HXX_
25 #define __FRAMEWORK_SERVICES_TASK_HXX_
26 
27 //_________________________________________________________________________________________________________________
28 //  my own includes
29 //_________________________________________________________________________________________________________________
30 
31 #include <services/frame.hxx>
32 #include <macros/generic.hxx>
33 #include <macros/debug.hxx>
34 #include <macros/xinterface.hxx>
35 #include <macros/xtypeprovider.hxx>
36 #include <macros/xserviceinfo.hxx>
37 
38 //_________________________________________________________________________________________________________________
39 //  interface includes
40 //_________________________________________________________________________________________________________________
41 #include <com/sun/star/frame/XTask.hpp>
42 #include <com/sun/star/awt/Point.hpp>
43 #include <com/sun/star/awt/Size.hpp>
44 
45 //_________________________________________________________________________________________________________________
46 //  other includes
47 //_________________________________________________________________________________________________________________
48 #include <cppuhelper/weak.hxx>
49 #include <cppuhelper/propshlp.hxx>
50 
51 #include <tools/link.hxx>
52 #include <vcl/evntpost.hxx>
53 
54 //_________________________________________________________________________________________________________________
55 //  namespace
56 //_________________________________________________________________________________________________________________
57 
58 namespace framework{
59 
60 //_________________________________________________________________________________________________________________
61 //  exported const
62 //_________________________________________________________________________________________________________________
63 
64 //_________________________________________________________________________________________________________________
65 //  exported definitions
66 //_________________________________________________________________________________________________________________
67 
68 /*-************************************************************************************************************//**
69     @short      implements an special frame - a task frame
70 
71     @descr      -
72 
73     @implements XTask
74 
75     @base       Frame
76                 OPropertySet
77 *//*-*************************************************************************************************************/
78 
79 class Task  :   public css::frame::XTask    ,   // => XFrame => XComponent
80                 public Frame                    // Order of baseclasses is neccessary for right initialization!
81 {
82     //-------------------------------------------------------------------------------------------------------------
83     //  public methods
84     //-------------------------------------------------------------------------------------------------------------
85 
86     public:
87 
88         //---------------------------------------------------------------------------------------------------------
89         //  constructor / destructor
90         //---------------------------------------------------------------------------------------------------------
91 
92         /*-****************************************************************************************************//**
93             @short      standard constructor to create instance
94 
95             @descr      This constructor initialize a new instance of this class,
96                         and will be set valid values on his member and baseclasses.
97 
98             @seealso    -
99 
100             @param      -
101 
102             @return     -
103 
104             @onerror    -
105         *//*-*****************************************************************************************************/
106 
107         Task( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory );
108 
109         /*-****************************************************************************************************//**
110             @short      standard destructor
111 
112             @descr      This method destruct an instance of this class and clear some member.
113 
114             @seealso    -
115 
116             @param      -
117 
118             @return     -
119 
120             @onerror    -
121         *//*-*****************************************************************************************************/
122 
123         virtual ~Task();
124 
125         //---------------------------------------------------------------------------------------------------------
126         //  XInterface, XTypeProvider, XServiceInfo
127         //---------------------------------------------------------------------------------------------------------
128 
129         DECLARE_XINTERFACE
130         DECLARE_XTYPEPROVIDER
131         DECLARE_XSERVICEINFO
132 
133         //---------------------------------------------------------------------------------------------------------
134         //  XTask
135         //---------------------------------------------------------------------------------------------------------
136 
137         /*-****************************************************************************************************//**
138             @short      -
139 
140             @descr      -
141 
142             @seealso    -
143 
144             @param      -
145 
146             @return     -
147 
148             @onerror    -
149         *//*-*****************************************************************************************************/
150 
151         virtual sal_Bool SAL_CALL close() throw( css::uno::RuntimeException );
152 
153         /*-****************************************************************************************************//**
154             @short      -
155 
156             @descr      -
157 
158             @seealso    -
159 
160             @param      -
161 
162             @return     -
163 
164             @onerror    -
165         *//*-*****************************************************************************************************/
166 
167         virtual void SAL_CALL tileWindows() throw( css::uno::RuntimeException );
168 
169         /*-****************************************************************************************************//**
170             @short      -
171 
172             @descr      -
173 
174             @seealso    -
175 
176             @param      -
177 
178             @return     -
179 
180             @onerror    -
181         *//*-*****************************************************************************************************/
182 
183         virtual void SAL_CALL arrangeWindowsVertical() throw( css::uno::RuntimeException );
184 
185         /*-****************************************************************************************************//**
186             @short      -
187 
188             @descr      -
189 
190             @seealso    -
191 
192             @param      -
193 
194             @return     -
195 
196             @onerror    -
197         *//*-*****************************************************************************************************/
198 
199         virtual void SAL_CALL arrangeWindowsHorizontal() throw( css::uno::RuntimeException );
200 
201         //---------------------------------------------------------------------------------------------------------
202         //   XComponent
203         //---------------------------------------------------------------------------------------------------------
204 
205         /*-****************************************************************************************************//**
206             @short      -
207 
208             @descr      We must overwrite this method, because baseclass Frame implements XFrame and XComponent.
209                         XTask is derived from these classes to! The compiler don't know, which base is the right one.
210 
211             @seealso    -
212 
213             @param      -
214 
215             @return     -
216 
217             @onerror    -
218         *//*-*****************************************************************************************************/
219 
dispose()220         virtual void SAL_CALL dispose() throw( css::uno::RuntimeException )
221         {
222             Frame::dispose();
223         }
224 
225         /*-*******************************************************************************************************/
addEventListener(const css::uno::Reference<css::lang::XEventListener> & xListener)226         virtual void SAL_CALL addEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw( css::uno::RuntimeException )
227         {
228             Frame::addEventListener( xListener );
229         }
230 
231         /*-*******************************************************************************************************/
removeEventListener(const css::uno::Reference<css::lang::XEventListener> & xListener)232         virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw( css::uno::RuntimeException )
233         {
234             Frame::removeEventListener( xListener );
235         }
236 
237         //---------------------------------------------------------------------------------------------------------
238         //   XFrame
239         //---------------------------------------------------------------------------------------------------------
240 
241         /*-****************************************************************************************************//**
242             @short      -
243 
244             @descr      We must overwrite this method, because baseclass Frame implements XFrame and XComponent.
245                         XTask is derived from these classes to! The compiler don't know, which base is right.
246 
247             @seealso    -
248 
249             @param      -
250 
251             @return     -
252 
253             @onerror    -
254         *//*-*****************************************************************************************************/
255 
initialize(const css::uno::Reference<css::awt::XWindow> & xWindow)256         virtual void SAL_CALL initialize( const css::uno::Reference< css::awt::XWindow >& xWindow ) throw( css::uno::RuntimeException )
257         {
258             Frame::initialize( xWindow );
259         }
260 
getContainerWindow()261         virtual css::uno::Reference< css::awt::XWindow > SAL_CALL getContainerWindow() throw( css::uno::RuntimeException )
262         {
263             return Frame::getContainerWindow();
264         }
265 
setCreator(const css::uno::Reference<css::frame::XFramesSupplier> & xCreator)266         virtual void SAL_CALL setCreator( const css::uno::Reference< css::frame::XFramesSupplier >& xCreator ) throw( css::uno::RuntimeException )
267         {
268             Frame::setCreator( xCreator );
269         }
270 
getCreator()271         virtual css::uno::Reference< css::frame::XFramesSupplier > SAL_CALL getCreator() throw( css::uno::RuntimeException )
272         {
273             return Frame::getCreator();
274         }
275 
getName()276         virtual ::rtl::OUString SAL_CALL getName() throw( css::uno::RuntimeException )
277         {
278             return Frame::getName();
279         }
280 
setName(const::rtl::OUString & sName)281         virtual void SAL_CALL setName( const ::rtl::OUString& sName ) throw( css::uno::RuntimeException )
282         {
283             Frame::setName( sName );
284         }
285 
isTop()286         virtual sal_Bool SAL_CALL isTop() throw( css::uno::RuntimeException )
287         {
288             return Frame::isTop();
289         }
290 
activate()291         virtual void SAL_CALL activate() throw( css::uno::RuntimeException )
292         {
293             Frame::activate();
294         }
295 
deactivate()296         virtual void SAL_CALL deactivate() throw( css::uno::RuntimeException )
297         {
298             Frame::deactivate();
299         }
300 
isActive()301         virtual sal_Bool SAL_CALL isActive() throw( css::uno::RuntimeException )
302         {
303             return Frame::isActive();
304         }
305 
setComponent(const css::uno::Reference<css::awt::XWindow> & xComponentWindow,const css::uno::Reference<css::frame::XController> & xController)306         virtual sal_Bool SAL_CALL setComponent( const   css::uno::Reference< css::awt::XWindow >&       xComponentWindow    ,
307                                                 const   css::uno::Reference< css::frame::XController >& xController         ) throw( css::uno::RuntimeException )
308         {
309             return Frame::setComponent( xComponentWindow, xController );
310         }
311 
getComponentWindow()312         virtual css::uno::Reference< css::awt::XWindow > SAL_CALL getComponentWindow() throw( css::uno::RuntimeException )
313         {
314             return Frame::getComponentWindow();
315         }
316 
getController()317         virtual css::uno::Reference< css::frame::XController > SAL_CALL getController() throw( css::uno::RuntimeException )
318         {
319             return Frame::getController();
320         }
321 
contextChanged()322         virtual void SAL_CALL contextChanged() throw( css::uno::RuntimeException )
323         {
324             Frame::contextChanged();
325         }
326 
addFrameActionListener(const css::uno::Reference<css::frame::XFrameActionListener> & xListener)327         virtual void SAL_CALL addFrameActionListener( const css::uno::Reference< css::frame::XFrameActionListener >& xListener ) throw( css::uno::RuntimeException )
328         {
329             Frame::addFrameActionListener( xListener );
330         }
331 
removeFrameActionListener(const css::uno::Reference<css::frame::XFrameActionListener> & xListener)332         virtual void SAL_CALL removeFrameActionListener( const css::uno::Reference< css::frame::XFrameActionListener >& xListener ) throw( css::uno::RuntimeException )
333         {
334             Frame::removeFrameActionListener( xListener );
335         }
336 
337         virtual css::uno::Reference< css::frame::XFrame > SAL_CALL findFrame(   const   ::rtl::OUString&    sTargetFrameName    ,
338                                                                                         sal_Int32           nSearchFlags        ) throw( css::uno::RuntimeException );
339 
340         //---------------------------------------------------------------------------------------------------------
341         //   XTopWindowListener
342         //---------------------------------------------------------------------------------------------------------
343 
344         /*-****************************************************************************************************//**
345             @short      -
346 
347             @descr      -
348 
349             @seealso    -
350             @seealso    -
351 
352             @param      -
353 
354             @return     -
355 
356             @onerror    -
357         *//*-*****************************************************************************************************/
358 
359         virtual void SAL_CALL windowClosing( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException );
360 
361         /*-****************************************************************************************************//**
362             @short      -
363 
364             @descr      -
365 
366             @seealso    -
367             @seealso    -
368 
369             @param      -
370 
371             @return     -
372 
373             @onerror    -
374         *//*-*****************************************************************************************************/
375 
376         virtual void SAL_CALL windowActivated( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException );
377 
378         /*-****************************************************************************************************//**
379             @short      -
380 
381             @descr      -
382 
383             @seealso    -
384             @seealso    -
385 
386             @param      -
387 
388             @return     -
389 
390             @onerror    -
391         *//*-*****************************************************************************************************/
392 
393         virtual void SAL_CALL windowDeactivated( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException );
394 
395         //---------------------------------------------------------------------------------------------------------
396         //   XEventListener
397         //---------------------------------------------------------------------------------------------------------
398 
399         /*-****************************************************************************************************//**
400             @short      -
401 
402             @descr      This object is forced to release all references to the interfaces given
403                         by the parameter Source.
404 
405             @seealso    -
406 
407             @param      -
408 
409             @return     -
410 
411             @onerror    -
412         *//*-*****************************************************************************************************/
413 
414         virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException );
415 
416     //-------------------------------------------------------------------------------------------------------------
417     //  protected methods
418     //-------------------------------------------------------------------------------------------------------------
419 
420     protected:
421 
422         //---------------------------------------------------------------------------
423         //  OPropertySetHelper
424         //---------------------------------------------------------------------------
425 
426         /*-****************************************************************************************************//**
427             @short      try to convert a property value
428             @descr      This method is calling from helperclass "OPropertySetHelper".
429                         Don't use this directly!
430                         You must try to convert the value of given propertyhandle and
431                         return results of this operation. This will be use to ask vetoable
432                         listener. If no listener have a veto, we will change value realy!
433                         ( in method setFastPropertyValue_NoBroadcast(...) )
434 
435             @seealso    OPropertySetHelper
436             @seealso    setFastPropertyValue_NoBroadcast()
437 
438             @param      "aConvertedValue"   new converted value of property
439             @param      "aOldValue"         old value of property
440             @param      "nHandle"           handle of property
441             @param      "aValue"            new value of property
442 
443             @return     sal_True if value will be changed, sal_FALSE otherway
444 
445             @onerror    IllegalArgumentException, if you call this with an invalid argument
446         *//*-*****************************************************************************************************/
447 /*
448         virtual sal_Bool SAL_CALL convertFastPropertyValue(         css::uno::Any&      aConvertedValue ,
449                                                                     css::uno::Any&      aOldValue       ,
450                                                                     sal_Int32           nHandle         ,
451                                                             const   css::uno::Any&      aValue          ) throw( css::lang::IllegalArgumentException );
452 */
453         /*-****************************************************************************************************//**
454             @short      set value of a transient property
455             @descr      This method is calling from helperclass "OPropertySetHelper".
456                         Don't use this directly!
457                         Handle and value are valid everyway! You must set the new value only.
458                         After this, baseclass send messages to all listener automaticly.
459 
460             @seealso    OPropertySetHelper
461 
462             @param      "nHandle"   handle of property to change
463             @param      "aValue"    new value of property
464 
465             @return     -
466 
467             @onerror    An exception is thrown.
468         *//*-*****************************************************************************************************/
469 /*
470         virtual void SAL_CALL setFastPropertyValue_NoBroadcast(         sal_Int32       nHandle ,
471                                                                 const   css::uno::Any&  aValue  ) throw( css::uno::Exception );
472 */
473         /*-****************************************************************************************************//**
474             @short      get value of a transient property
475             @descr      This method is calling from helperclass "OPropertySetHelper".
476                         Don't use this directly!
477 
478             @seealso    OPropertySetHelper
479 
480             @param      "nHandle"   handle of property to change
481             @param      "aValue"    current value of property
482 
483             @return     -
484 
485             @onerror    -
486         *//*-*****************************************************************************************************/
487 /*
488         virtual void SAL_CALL getFastPropertyValue( css::uno::Any&  aValue  ,
489                                                     sal_Int32       nHandle ) const;
490 */
491         /*-****************************************************************************************************//**
492             @short      return structure and information about transient properties
493             @descr      This method is calling from helperclass "OPropertySetHelper".
494                         Don't use this directly!
495 
496             @seealso    OPropertySetHelper
497 
498             @param      -
499 
500             @return     structure with property-informations
501 
502             @onerror    -
503         *//*-*****************************************************************************************************/
504 /*
505         virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
506 */
507         /*-****************************************************************************************************//**
508             @short      return propertysetinfo
509             @descr      You can call this method to get information about transient properties
510                         of this object.
511 
512             @seealso    OPropertySetHelper
513             @seealso    XPropertySet
514             @seealso    XMultiPropertySet
515 
516             @param      -
517 
518             @return     reference to object with information [XPropertySetInfo]
519 
520             @onerror    -
521         *//*-*****************************************************************************************************/
522 /*
523         virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo();
524 */
525     //-------------------------------------------------------------------------------------------------------------
526     //  private methods
527     //-------------------------------------------------------------------------------------------------------------
528 
529     private:
530 
531         DECL_LINK( Close_Impl, void* );
532 
533 //        void    impl_SaveWindowAttributes();
534 
535 /*      sal_Bool impl_tryToChangeProperty(          sal_Bool            bProperty       ,
536                                             const   css::uno::Any&      aValue          ,
537                                                     css::uno::Any&      aOldValue       ,
538                                                     css::uno::Any&      aConvertedValue ) throw( css::lang::IllegalArgumentException );
539         sal_Bool impl_tryToChangeProperty(  const   ::rtl::OUString&    sProperty       ,
540                                             const   css::uno::Any&      aValue          ,
541                                                     css::uno::Any&      aOldValue       ,
542                                                     css::uno::Any&      aConvertedValue ) throw( css::lang::IllegalArgumentException );
543         sal_Bool impl_tryToChangeProperty(  const   css::awt::Point&    aProperty       ,
544                                             const   css::uno::Any&      aValue          ,
545                                                     css::uno::Any&      aOldValue       ,
546                                                     css::uno::Any&      aConvertedValue ) throw( css::lang::IllegalArgumentException );
547         sal_Bool impl_tryToChangeProperty(  const   css::awt::Size&     aProperty       ,
548                                             const   css::uno::Any&      aValue          ,
549                                                     css::uno::Any&      aOldValue       ,
550                                                     css::uno::Any&      aConvertedValue ) throw( css::lang::IllegalArgumentException );
551 
552         static const css::uno::Sequence< css::beans::Property > impl_getStaticPropertyDescriptor();
553 */
554 
555     //-------------------------------------------------------------------------------------------------------------
556     //  debug methods
557     //  (should be private everyway!)
558     //-------------------------------------------------------------------------------------------------------------
559 
560         /*-****************************************************************************************************//**
561             @short      debug-method to check incoming parameter of some other mehods of this class
562             @descr      The following methods are used to check parameters for other methods
563                         of this class. The return value is used directly for an ASSERT(...).
564 
565             @seealso    ASSERTs in implementation!
566 
567             @param      references to checking variables
568             @return     sal_False on invalid parameter<BR>
569                         sal_True  otherway
570 
571             @onerror    -
572         *//*-*****************************************************************************************************/
573 
574     #ifdef ENABLE_ASSERTIONS
575 
576     private:
577 
578         // Not used in the moment!
579 
580     #endif  // #ifdef ENABLE_ASSERTIONS
581 
582     //-------------------------------------------------------------------------------------------------------------
583     //  variables
584     //  (should be private everyway!)
585     //-------------------------------------------------------------------------------------------------------------
586 
587     protected:
588 
589         // But some values are neede by derived classes!
590 //        sal_Bool            m_bIsPlugIn         ;   /// In objects of these class this member is set to sal_False.
591                                                     /// But in derived class PlugInFrame it's overwrited with sal_True!
592 
593     private:
594 
595         // Properties
596         sal_Bool            m_bIsAlwaysVisible  ;
597         sal_Bool            m_bIsFloating       ;
598         css::awt::Point     m_aPosition         ;
599         css::awt::Size      m_aSize             ;
600         ::vcl::EventPoster  m_aPoster           ;
601 
602 };      //  class Tasks
603 
604 }       //  namespace framework
605 
606 #endif  //  #ifndef __FRAMEWORK_SERVICES_TASKS_HXX_
607