xref: /AOO41X/main/embeddedobj/source/inc/oleembobj.hxx (revision 08421ca6693c7ac7e4bba1e7a4157ea1594eb73d)
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 _INC_OLEEMBOBJ_HXX_
25 #define _INC_OLEEMBOBJ_HXX_
26 
27 #include <com/sun/star/uno/Sequence.hxx>
28 #include <com/sun/star/uno/Reference.hxx>
29 #include <com/sun/star/uno/Any.hxx>
30 #include <com/sun/star/embed/XEmbeddedObject.hpp>
31 #include <com/sun/star/embed/XInplaceObject.hpp>
32 #include <com/sun/star/embed/XVisualObject.hpp>
33 #include <com/sun/star/embed/XEmbedPersist.hpp>
34 #include <com/sun/star/embed/XLinkageSupport.hpp>
35 #include <com/sun/star/embed/XClassifiedObject.hpp>
36 #include <com/sun/star/embed/XComponentSupplier.hpp>
37 #include <com/sun/star/embed/VerbDescriptor.hpp>
38 #include <com/sun/star/document/XEventBroadcaster.hpp>
39 #include <com/sun/star/container/XChild.hpp>
40 #include <com/sun/star/util/XCloseable.hpp>
41 #include <com/sun/star/util/XCloseListener.hpp>
42 #include <cppuhelper/implbase5.hxx>
43 
44 #include <osl/thread.h>
45 
46 namespace cppu {
47     class OMultiTypeInterfaceContainerHelper;
48 }
49 
50 class VerbExecutionController
51 {
52     // the following mutex is allowed to be locked only for variables initialization, so no deadlock can be caused
53     ::osl::Mutex    m_aVerbExecutionMutex;
54 
55     sal_Bool m_bVerbExecutionInProgress;
56     oslThreadIdentifier m_nVerbExecutionThreadIdentifier;
57     sal_Bool m_bChangedOnVerbExecution;
58 
59     sal_Bool m_bWasEverActive;
60     sal_Int32 m_nNotificationLock;
61 
62 public:
63 
VerbExecutionController()64     VerbExecutionController()
65     : m_bVerbExecutionInProgress( sal_False )
66     , m_nVerbExecutionThreadIdentifier( 0 )
67     , m_bChangedOnVerbExecution( sal_False )
68     , m_bWasEverActive( sal_False )
69     , m_nNotificationLock( 0 )
70     {}
71 #ifdef WNT
72     void StartControlExecution();
73     sal_Bool EndControlExecution_WasModified();
74     void ModificationNotificationIsDone();
75 #endif
76     void LockNotification();
77     void UnlockNotification();
78 
79     // no need to lock anything to check the value of the numeric members
CanDoNotification()80     sal_Bool CanDoNotification() { return ( !m_bVerbExecutionInProgress && !m_bWasEverActive && !m_nNotificationLock ); }
81     // ... or to change it
ObjectIsActive()82     void ObjectIsActive() { m_bWasEverActive = sal_True; }
83 };
84 
85 class VerbExecutionControllerGuard
86 {
87     VerbExecutionController& m_rController;
88 public:
89 
VerbExecutionControllerGuard(VerbExecutionController & rController)90     VerbExecutionControllerGuard( VerbExecutionController& rController )
91     : m_rController( rController )
92     {
93         m_rController.LockNotification();
94     }
95 
~VerbExecutionControllerGuard()96     ~VerbExecutionControllerGuard()
97     {
98         m_rController.UnlockNotification();
99     }
100 };
101 
102 
103 class OleComponent;
104 class OwnView_Impl;
105 class OleEmbeddedObject : public ::cppu::WeakImplHelper5
106                         < ::com::sun::star::embed::XEmbeddedObject
107                         , ::com::sun::star::embed::XEmbedPersist
108                         , ::com::sun::star::embed::XLinkageSupport
109                         , ::com::sun::star::embed::XInplaceObject
110                         , ::com::sun::star::container::XChild >
111 {
112     friend class OleComponent;
113 
114     ::osl::Mutex    m_aMutex;
115 
116     OleComponent*   m_pOleComponent;
117 
118     ::cppu::OMultiTypeInterfaceContainerHelper* m_pInterfaceContainer;
119 
120     sal_Bool m_bReadOnly;
121 
122     sal_Int32 m_bDisposed;
123     sal_Int32 m_nObjectState;
124     sal_Int32 m_nTargetState;
125     sal_Int32 m_nUpdateMode;
126 
127     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xFactory;
128 
129     ::com::sun::star::uno::Sequence< sal_Int8 > m_aClassID;
130     ::rtl::OUString m_aClassName;
131 
132     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedClient > m_xClientSite;
133 
134     ::rtl::OUString m_aContainerName;
135 
136     ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseListener > m_xClosePreventer;
137 
138     sal_Bool m_bWaitSaveCompleted;
139     sal_Bool m_bNewVisReplInStream;
140     ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > m_xNewCachedVisRepl;
141     ::rtl::OUString m_aNewEntryName;
142     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xNewParentStorage;
143     ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > m_xNewObjectStream;
144     sal_Bool m_bStoreLoaded;
145 
146     ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > m_xCachedVisualRepresentation;
147     sal_Bool m_bVisReplInitialized;
148     sal_Bool m_bVisReplInStream;
149     sal_Bool m_bStoreVisRepl;
150 
151     sal_Bool m_bIsLink;
152 
153     // TODO/LATER: may need to cache more than one aspect in future
154     sal_Bool m_bHasCachedSize; // the object has cached size
155     ::com::sun::star::awt::Size m_aCachedSize;
156     sal_Int64 m_nCachedAspect;
157 
158     sal_Bool m_bHasSizeToSet;  // the object has cached size that should be set to OLE component
159     ::com::sun::star::awt::Size m_aSizeToSet; // this size might be different from the cached one ( scaling is applied )
160     sal_Int64 m_nAspectToSet;
161 
162 
163     // cache the status of the object
164     // TODO/LATER: may need to cache more than one aspect in future
165     sal_Bool m_bGotStatus;
166     sal_Int64 m_nStatus;
167     sal_Int64 m_nStatusAspect;
168 
169     // embedded object related stuff
170     ::rtl::OUString m_aEntryName;
171     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xParentStorage;
172     ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > m_xObjectStream;
173 
174     // link related stuff
175     ::rtl::OUString m_aLinkURL; // ???
176 
177     // points to own view provider if the the object has no server
178     OwnView_Impl*   m_pOwnView;
179 
180     // whether the object should be initialized from clipboard in case of default initialization
181     sal_Bool m_bFromClipboard;
182 
183     ::rtl::OUString m_aTempURL;
184 
185     ::rtl::OUString m_aTempDumpURL;
186 
187     // STAMPIT solution
188     // the following member is used during verb execution to detect whether the verb execution modifies the object
189     VerbExecutionController m_aVerbExecutionController;
190 
191     // if the following member is set, the object works in wrapper mode
192     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject > m_xWrappedObject;
193     sal_Bool m_bTriedConversion;
194 
195     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xParent;
196 
197 protected:
198 
199     ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > TryToGetAcceptableFormat_Impl(
200                                     const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xStream )
201         throw ( ::com::sun::star::uno::Exception );
202 
203     ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > GetNewFilledTempStream_Impl(
204                                     const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInStream )
205         throw( ::com::sun::star::io::IOException );
206 #ifdef WNT
207     void SwitchComponentToRunningState_Impl();
208 #endif
209     void MakeEventListenerNotification_Impl( const ::rtl::OUString& aEventName );
210 #ifdef WNT
211     void StateChangeNotification_Impl( sal_Bool bBeforeChange, sal_Int32 nOldState, sal_Int32 nNewState );
212     ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > GetStreamForSaving();
213 
214 
215     ::com::sun::star::uno::Sequence< sal_Int32 > GetIntermediateVerbsSequence_Impl( sal_Int32 nNewState );
216 
217     ::com::sun::star::uno::Sequence< sal_Int32 > GetReachableStatesList_Impl(
218                         const ::com::sun::star::uno::Sequence< ::com::sun::star::embed::VerbDescriptor >& aVerbList );
219 #endif
220 
221     void CloseComponent();
222     void Dispose();
223 
224     void SwitchOwnPersistence(
225                 const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xNewParentStorage,
226                 const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xNewObjectStream,
227                 const ::rtl::OUString& aNewName );
228 
229     void SwitchOwnPersistence(
230                 const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xNewParentStorage,
231                 const ::rtl::OUString& aNewName );
232 
233     void GetRidOfComponent();
234 
235     void StoreToLocation_Impl(
236                             const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
237                             const ::rtl::OUString& sEntName,
238                             const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments,
239                             const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lObjArgs,
240                             sal_Bool bSaveAs )
241         throw ( ::com::sun::star::uno::Exception );
242 #ifdef WNT
243     void StoreObjectToStream( ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > xOutStream )
244         throw ( ::com::sun::star::uno::Exception );
245 #endif
246     void InsertVisualCache_Impl(
247             const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xTargetStream,
248             const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xCachedVisualRepresentation )
249         throw ( ::com::sun::star::uno::Exception );
250 
251     void RemoveVisualCache_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xTargetStream )
252         throw ( ::com::sun::star::uno::Exception );
253 
254     void SetVisReplInStream( sal_Bool bExists );
255     sal_Bool HasVisReplInStream();
256 
257     ::com::sun::star::embed::VisualRepresentation GetVisualRepresentationInNativeFormat_Impl(
258                     const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > xCachedVisRepr )
259         throw ( ::com::sun::star::uno::Exception );
260 
261     ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > TryToRetrieveCachedVisualRepresentation_Impl(
262                     const ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream >& xStream,
263                     sal_Bool bAllowRepair50 = sal_False )
264         throw ();
265 #ifdef WNT
266     sal_Bool SaveObject_Impl();
267     sal_Bool OnShowWindow_Impl( sal_Bool bShow );
268     void CreateOleComponent_Impl( OleComponent* pOleComponent = NULL );
269     void CreateOleComponentAndLoad_Impl( OleComponent* pOleComponent = NULL );
270     void CreateOleComponentFromClipboard_Impl( OleComponent* pOleComponent = NULL );
271 #endif
SetObjectIsLink_Impl(sal_Bool bIsLink)272     void SetObjectIsLink_Impl( sal_Bool bIsLink ) { m_bIsLink = bIsLink; }
273 
274 #ifdef WNT
275     ::rtl::OUString CreateTempURLEmpty_Impl();
276     ::rtl::OUString GetTempURL_Impl();
277 #endif
GetContainerName_Impl()278     ::rtl::OUString GetContainerName_Impl() { return m_aContainerName; }
279 
280     // the following 4 methods are related to switch to wrapping mode
281     void MoveListeners();
282     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > CreateTemporarySubstorage( ::rtl::OUString& o_aStorageName );
283     ::rtl::OUString MoveToTemporarySubstream();
284     sal_Bool TryToConvertToOOo();
285 
286 public:
287     // in case a new object must be created the class ID must be specified
288     OleEmbeddedObject( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xFactory,
289                         const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID,
290                         const ::rtl::OUString& aClassName );
291 
292     // in case object will be loaded from a persistent entry or from a file the class ID will be detected on loading
293     // factory can do it for OOo objects, but for OLE objects OS dependent code is required
294     OleEmbeddedObject( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xFactory,
295                         sal_Bool bLink );
296 #ifdef WNT
297     // this constructor let object be initialized from clipboard
298     OleEmbeddedObject( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xFactory );
299 #endif
300 
301     virtual ~OleEmbeddedObject();
302 
303 #ifdef WNT
304     void OnIconChanged_Impl();
305     void OnViewChanged_Impl();
306     void OnClosed_Impl();
307 #endif
308 
309 // XEmbeddedObject
310 
311     virtual void SAL_CALL changeState( sal_Int32 nNewState )
312         throw ( ::com::sun::star::embed::UnreachableStateException,
313                 ::com::sun::star::embed::WrongStateException,
314                 ::com::sun::star::uno::Exception,
315                 ::com::sun::star::uno::RuntimeException );
316 
317     virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getReachableStates()
318         throw ( ::com::sun::star::embed::WrongStateException,
319                 ::com::sun::star::uno::RuntimeException );
320 
321     virtual sal_Int32 SAL_CALL getCurrentState()
322         throw ( ::com::sun::star::embed::WrongStateException,
323                 ::com::sun::star::uno::RuntimeException );
324 
325     virtual void SAL_CALL doVerb( sal_Int32 nVerbID )
326         throw ( ::com::sun::star::lang::IllegalArgumentException,
327                 ::com::sun::star::embed::WrongStateException,
328                 ::com::sun::star::embed::UnreachableStateException,
329                 ::com::sun::star::uno::Exception,
330                 ::com::sun::star::uno::RuntimeException );
331 
332     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::embed::VerbDescriptor > SAL_CALL getSupportedVerbs()
333         throw ( ::com::sun::star::embed::WrongStateException,
334                 ::com::sun::star::uno::RuntimeException );
335 
336     virtual void SAL_CALL setClientSite(
337                 const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedClient >& xClient )
338         throw ( ::com::sun::star::embed::WrongStateException,
339                 ::com::sun::star::uno::RuntimeException );
340 
341     virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedClient > SAL_CALL getClientSite()
342         throw ( ::com::sun::star::embed::WrongStateException,
343                 ::com::sun::star::uno::RuntimeException );
344 
345     virtual void SAL_CALL update()
346         throw ( ::com::sun::star::embed::WrongStateException,
347                 ::com::sun::star::uno::Exception,
348                 ::com::sun::star::uno::RuntimeException );
349 
350     virtual void SAL_CALL setUpdateMode( sal_Int32 nMode )
351         throw ( ::com::sun::star::embed::WrongStateException,
352                 ::com::sun::star::uno::RuntimeException );
353 
354     virtual sal_Int64 SAL_CALL getStatus( sal_Int64 nAspect )
355         throw ( ::com::sun::star::embed::WrongStateException,
356                 ::com::sun::star::uno::RuntimeException );
357 
358     virtual void SAL_CALL setContainerName( const ::rtl::OUString& sName )
359         throw ( ::com::sun::star::uno::RuntimeException );
360 
361 
362 // XVisualObject
363 
364     virtual void SAL_CALL setVisualAreaSize( sal_Int64 nAspect, const ::com::sun::star::awt::Size& aSize )
365         throw ( ::com::sun::star::lang::IllegalArgumentException,
366                 ::com::sun::star::embed::WrongStateException,
367                 ::com::sun::star::uno::Exception,
368                 ::com::sun::star::uno::RuntimeException );
369 
370     virtual ::com::sun::star::awt::Size SAL_CALL getVisualAreaSize( sal_Int64 nAspect )
371         throw ( ::com::sun::star::lang::IllegalArgumentException,
372                 ::com::sun::star::embed::WrongStateException,
373                 ::com::sun::star::uno::Exception,
374                 ::com::sun::star::uno::RuntimeException );
375 
376     virtual ::com::sun::star::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation( ::sal_Int64 nAspect )
377         throw ( ::com::sun::star::lang::IllegalArgumentException,
378                 ::com::sun::star::embed::WrongStateException,
379                 ::com::sun::star::uno::Exception,
380                 ::com::sun::star::uno::RuntimeException );
381 
382     virtual sal_Int32 SAL_CALL getMapUnit( sal_Int64 nAspect )
383         throw ( ::com::sun::star::uno::Exception,
384                 ::com::sun::star::uno::RuntimeException);
385 
386 
387 // XEmbedPersist
388 
389     virtual void SAL_CALL setPersistentEntry(
390                     const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
391                     const ::rtl::OUString& sEntName,
392                     sal_Int32 nEntryConnectionMode,
393                     const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments,
394                     const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lObjArgs )
395         throw ( ::com::sun::star::lang::IllegalArgumentException,
396                 ::com::sun::star::embed::WrongStateException,
397                 ::com::sun::star::io::IOException,
398                 ::com::sun::star::uno::Exception,
399                 ::com::sun::star::uno::RuntimeException );
400 
401     virtual void SAL_CALL storeToEntry( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, const ::rtl::OUString& sEntName, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lObjArgs )
402         throw ( ::com::sun::star::lang::IllegalArgumentException,
403                 ::com::sun::star::embed::WrongStateException,
404                 ::com::sun::star::io::IOException,
405                 ::com::sun::star::uno::Exception,
406                 ::com::sun::star::uno::RuntimeException );
407 
408     virtual void SAL_CALL storeAsEntry(
409                 const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
410                 const ::rtl::OUString& sEntName,
411                 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments,
412                 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lObjArgs )
413         throw ( ::com::sun::star::lang::IllegalArgumentException,
414                 ::com::sun::star::embed::WrongStateException,
415                 ::com::sun::star::io::IOException,
416                 ::com::sun::star::uno::Exception,
417                 ::com::sun::star::uno::RuntimeException );
418 
419     virtual void SAL_CALL saveCompleted( sal_Bool bUseNew )
420         throw ( ::com::sun::star::embed::WrongStateException,
421                 ::com::sun::star::uno::Exception,
422                 ::com::sun::star::uno::RuntimeException );
423 
424     virtual sal_Bool SAL_CALL hasEntry()
425         throw ( ::com::sun::star::embed::WrongStateException,
426                 ::com::sun::star::uno::RuntimeException );
427 
428     virtual ::rtl::OUString SAL_CALL getEntryName()
429         throw ( ::com::sun::star::embed::WrongStateException,
430                 ::com::sun::star::uno::RuntimeException );
431 
432 // XLinkageSupport
433 
434     virtual void SAL_CALL breakLink( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
435                                      const ::rtl::OUString& sEntName )
436         throw ( ::com::sun::star::lang::IllegalArgumentException,
437                 ::com::sun::star::embed::WrongStateException,
438                 ::com::sun::star::io::IOException,
439                 ::com::sun::star::uno::Exception,
440                 ::com::sun::star::uno::RuntimeException );
441 
442     virtual sal_Bool SAL_CALL isLink()
443         throw ( ::com::sun::star::embed::WrongStateException,
444                 ::com::sun::star::uno::RuntimeException);
445 
446     virtual ::rtl::OUString SAL_CALL getLinkURL()
447         throw ( ::com::sun::star::embed::WrongStateException,
448                 ::com::sun::star::uno::Exception,
449                 ::com::sun::star::uno::RuntimeException);
450 
451 // XCommonEmbedPersist
452     virtual void SAL_CALL storeOwn()
453         throw ( ::com::sun::star::embed::WrongStateException,
454                 ::com::sun::star::io::IOException,
455                 ::com::sun::star::uno::Exception,
456                 ::com::sun::star::uno::RuntimeException );
457 
458     virtual sal_Bool SAL_CALL isReadonly()
459         throw ( ::com::sun::star::embed::WrongStateException,
460                 ::com::sun::star::uno::RuntimeException );
461 
462     virtual void SAL_CALL reload(
463                 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments,
464                 const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lObjArgs )
465         throw ( ::com::sun::star::lang::IllegalArgumentException,
466                 ::com::sun::star::embed::WrongStateException,
467                 ::com::sun::star::io::IOException,
468                 ::com::sun::star::uno::Exception,
469                 ::com::sun::star::uno::RuntimeException );
470 
471 // XClassifiedObject
472 
473     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getClassID()
474         throw ( ::com::sun::star::uno::RuntimeException );
475 
476     virtual ::rtl::OUString SAL_CALL getClassName()
477         throw ( ::com::sun::star::uno::RuntimeException );
478 
479     virtual void SAL_CALL setClassInfo(
480                 const ::com::sun::star::uno::Sequence< sal_Int8 >& aClassID, const ::rtl::OUString& aClassName )
481         throw ( ::com::sun::star::lang::NoSupportException,
482                 ::com::sun::star::uno::RuntimeException );
483 
484 // XStateChangeBroadcaster
485     virtual void SAL_CALL addStateChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStateChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
486     virtual void SAL_CALL removeStateChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStateChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
487 
488 
489 // XComponentSupplier
490 
491     virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > SAL_CALL getComponent()
492         throw ( ::com::sun::star::uno::RuntimeException );
493 
494 // XCloseable
495 
496     virtual void SAL_CALL close( sal_Bool DeliverOwnership )
497         throw ( ::com::sun::star::util::CloseVetoException,
498                 ::com::sun::star::uno::RuntimeException );
499 
500     virtual void SAL_CALL addCloseListener(
501                 const ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseListener >& Listener )
502         throw ( ::com::sun::star::uno::RuntimeException );
503 
504     virtual void SAL_CALL removeCloseListener(
505                 const ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseListener >& Listener )
506         throw ( ::com::sun::star::uno::RuntimeException );
507 
508 // XEventBroadcaster
509     virtual void SAL_CALL addEventListener(
510                 const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventListener >& Listener )
511         throw ( ::com::sun::star::uno::RuntimeException );
512 
513     virtual void SAL_CALL removeEventListener(
514                 const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventListener >& Listener )
515         throw ( ::com::sun::star::uno::RuntimeException );
516 
517 // XInplaceObject ( only for wrapping scenario here )
518 
519     virtual void SAL_CALL setObjectRectangles( const ::com::sun::star::awt::Rectangle& aPosRect,
520                                           const ::com::sun::star::awt::Rectangle& aClipRect )
521         throw ( ::com::sun::star::embed::WrongStateException,
522                 ::com::sun::star::uno::Exception,
523                 ::com::sun::star::uno::RuntimeException );
524 
525     virtual void SAL_CALL enableModeless( sal_Bool bEnable )
526         throw ( ::com::sun::star::embed::WrongStateException,
527                 ::com::sun::star::uno::Exception,
528                 ::com::sun::star::uno::RuntimeException );
529 
530     virtual void SAL_CALL translateAccelerators(
531                     const ::com::sun::star::uno::Sequence< ::com::sun::star::awt::KeyEvent >& aKeys )
532         throw ( ::com::sun::star::embed::WrongStateException,
533                 ::com::sun::star::uno::RuntimeException );
534 
535     // XChild ( only for wrapping scenario here )
536     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent(  ) throw (::com::sun::star::uno::RuntimeException);
537     virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
538 
539 };
540 
541 #endif
542 
543