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 #ifndef _UNOFRAME_HXX 24 #define _UNOFRAME_HXX 25 26 #include <com/sun/star/beans/XPropertyState.hpp> 27 #include <com/sun/star/container/XNamed.hpp> 28 #include <com/sun/star/container/XEnumerationAccess.hpp> 29 #include <com/sun/star/document/XEmbeddedObjectSupplier2.hpp> 30 #include <com/sun/star/text/XTextFrame.hpp> 31 #include <com/sun/star/drawing/XShape.hpp> 32 #include <com/sun/star/util/XModifyListener.hpp> 33 #include <com/sun/star/frame/XModel.hpp> 34 #include <com/sun/star/document/XEventsSupplier.hpp> 35 36 #include <cppuhelper/implbase1.hxx> 37 #include <cppuhelper/implbase3.hxx> 38 #include <cppuhelper/implbase6.hxx> 39 40 #include <sfx2/objsh.hxx> 41 42 #include <flyenum.hxx> 43 #include <frmfmt.hxx> 44 #include <unoevtlstnr.hxx> 45 #include <unotext.hxx> 46 47 48 class SfxItemPropertSet; 49 class SdrObject; 50 class SwDoc; 51 class SwFmt; 52 class SwFlyFrmFmt; 53 54 class BaseFrameProperties_Impl; 55 class SwXFrame : public cppu::WeakImplHelper6 56 < 57 ::com::sun::star::lang::XServiceInfo, 58 ::com::sun::star::beans::XPropertySet, 59 ::com::sun::star::beans::XPropertyState, 60 ::com::sun::star::drawing::XShape, 61 ::com::sun::star::container::XNamed, 62 ::com::sun::star::lang::XUnoTunnel 63 >, 64 public SwClient 65 { 66 SwEventListenerContainer aLstnrCntnr; 67 const SfxItemPropertySet* m_pPropSet; 68 SwDoc* m_pDoc; 69 70 const FlyCntType eType; 71 72 // Descriptor-interface 73 BaseFrameProperties_Impl* pProps; 74 sal_Bool bIsDescriptor; 75 String sName; 76 77 SwPaM* m_pCopySource; 78 79 protected: 80 com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > mxStyleData; 81 com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > mxStyleFamily; 82 virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); 83 84 virtual ~SwXFrame(); 85 public: 86 SwXFrame(FlyCntType eSet, 87 const SfxItemPropertySet* pPropSet, 88 SwDoc *pDoc ); //Descriptor-If 89 SwXFrame(SwFrmFmt& rFrmFmt, FlyCntType eSet, 90 const SfxItemPropertySet* pPropSet); 91 92 93 static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId(); 94 95 //XUnoTunnel 96 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ); 97 98 TYPEINFO(); 99 100 //XNamed 101 virtual rtl::OUString SAL_CALL getName(void); 102 virtual void SAL_CALL setName(const rtl::OUString& Name_); 103 104 //XPropertySet 105 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ); 106 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ); 107 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ); 108 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ); 109 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ); 110 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ); 111 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ); 112 113 //XPropertyState 114 virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ); 115 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyName ); 116 virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ); 117 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ); 118 119 //XShape 120 virtual ::com::sun::star::awt::Point SAL_CALL getPosition( ); 121 virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ); 122 virtual ::com::sun::star::awt::Size SAL_CALL getSize( ); 123 virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ); 124 125 //XShapeDescriptor 126 virtual rtl::OUString SAL_CALL getShapeType(void); 127 128 //Basisimplementierung 129 //XComponent 130 virtual void SAL_CALL dispose( ); 131 virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ); 132 virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ); 133 134 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getAnchor(void); 135 136 //XServiceInfo 137 virtual rtl::OUString SAL_CALL getImplementationName(void); 138 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName); 139 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void); 140 141 void attachToRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange); 142 void attach( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xTextRange ); 143 GetFrmFmt() const144 SwFrmFmt* GetFrmFmt() const 145 { 146 return PTR_CAST ( SwFrmFmt, GetRegisteredIn() ); 147 } GetFlyCntType() const148 FlyCntType GetFlyCntType()const {return eType;} 149 IsDescriptor() const150 sal_Bool IsDescriptor() const {return bIsDescriptor;} 151 void ResetDescriptor(); 152 //copy text from a given source PaM 153 void SetSelection(SwPaM& rCopySource); 154 static SW_DLLPUBLIC SdrObject *GetOrCreateSdrObject( SwFlyFrmFmt *pFmt ); 155 }; 156 157 typedef cppu::WeakImplHelper3 158 < 159 ::com::sun::star::text::XTextFrame, 160 ::com::sun::star::container::XEnumerationAccess, 161 ::com::sun::star::document::XEventsSupplier 162 > 163 SwXTextFrameBaseClass; 164 165 class SwXTextFrame : public SwXTextFrameBaseClass, 166 public SwXText, 167 public SwXFrame 168 { 169 const SfxItemPropertSet* _pPropSet; 170 171 protected: 172 virtual const SwStartNode *GetStartNode() const; 173 174 virtual ::com::sun::star::uno::Reference< 175 ::com::sun::star::text::XTextCursor > 176 CreateCursor(); 177 178 virtual ~SwXTextFrame(); 179 public: 180 SwXTextFrame(SwDoc *pDoc); 181 SwXTextFrame(SwFrmFmt& rFmt); 182 183 // FIXME: EVIL HACK: make available for SwXFrame::attachToRange SetDoc(SwDoc * const pDoc)184 void SetDoc(SwDoc *const pDoc) { SwXText::SetDoc(pDoc); }; 185 186 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ); 187 virtual void SAL_CALL acquire( ) throw(); 188 virtual void SAL_CALL release( ) throw(); 189 190 //XTypeProvider 191 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ); 192 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ); 193 194 //XTextFrame 195 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText(void); 196 197 //XText 198 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor(void); 199 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursorByRange(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & aTextPosition); 200 201 //XEnumerationAccess - frueher XParagraphEnumerationAccess 202 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration(void); 203 204 //XElementAccess 205 virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ); 206 virtual sal_Bool SAL_CALL hasElements( ); 207 208 //XTextContent 209 virtual void SAL_CALL attach( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xTextRange ); 210 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getAnchor( ); 211 212 //XComponent 213 virtual void SAL_CALL dispose( ); 214 virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ); 215 virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ); 216 217 //XServiceInfo 218 virtual rtl::OUString SAL_CALL getImplementationName(void); 219 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName); 220 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void); 221 222 // XEventsSupplier 223 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents( ); 224 225 //XUnoTunnel 226 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ); 227 228 //XPropertySet 229 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ); 230 231 void * SAL_CALL operator new( size_t ) throw(); 232 void SAL_CALL operator delete( void * ) throw(); 233 }; 234 235 typedef cppu::WeakImplHelper2 236 < 237 ::com::sun::star::text::XTextContent, 238 ::com::sun::star::document::XEventsSupplier 239 > 240 SwXTextGraphicObjectBaseClass; 241 class SwXTextGraphicObject : public SwXTextGraphicObjectBaseClass, 242 public SwXFrame 243 { 244 protected: 245 virtual ~SwXTextGraphicObject(); 246 public: 247 SwXTextGraphicObject( SwDoc *pDoc ); 248 SwXTextGraphicObject(SwFrmFmt& rFmt); 249 250 251 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ); 252 virtual void SAL_CALL acquire( ) throw(); 253 virtual void SAL_CALL release( ) throw(); 254 255 //XTypeProvider 256 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ); 257 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ); 258 259 //XTextContent 260 virtual void SAL_CALL attach(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange); 261 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getAnchor(void); 262 263 //XComponent 264 virtual void SAL_CALL dispose(void); 265 virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener); 266 virtual void SAL_CALL removeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener); 267 268 //XServiceInfo 269 virtual rtl::OUString SAL_CALL getImplementationName(void); 270 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName); 271 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void); 272 273 // XEventsSupplier 274 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents( ); 275 void * SAL_CALL operator new( size_t ) throw(); 276 void SAL_CALL operator delete( void * ) throw(); 277 }; 278 /*-----------------20.02.98 11:28------------------- 279 280 --------------------------------------------------*/ 281 class SwOLENode; 282 typedef cppu::WeakImplHelper3 283 < 284 ::com::sun::star::text::XTextContent, 285 ::com::sun::star::document::XEmbeddedObjectSupplier2, 286 ::com::sun::star::document::XEventsSupplier 287 >SwXTextEmbeddedObjectBaseClass; 288 289 class SwXTextEmbeddedObject : public SwXTextEmbeddedObjectBaseClass, 290 public SwXFrame 291 { 292 protected: 293 virtual ~SwXTextEmbeddedObject(); 294 295 public: 296 SwXTextEmbeddedObject( SwDoc *pDoc ); 297 SwXTextEmbeddedObject(SwFrmFmt& rFmt); 298 299 300 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ); 301 virtual void SAL_CALL acquire( ) throw(); 302 virtual void SAL_CALL release( ) throw(); 303 304 //XTypeProvider 305 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ); 306 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ); 307 308 //XTextContent 309 virtual void SAL_CALL attach(const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > & xTextRange); 310 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getAnchor(void); 311 312 //XComponent 313 virtual void SAL_CALL dispose(void); 314 virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener); 315 virtual void SAL_CALL removeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener > & aListener); 316 317 //XEmbeddedObjectSupplier2 318 virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL getEmbeddedObject(void); 319 virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject > SAL_CALL getExtendedControlOverEmbeddedObject(void); 320 virtual ::sal_Int64 SAL_CALL getAspect(); 321 virtual void SAL_CALL setAspect( ::sal_Int64 _aspect ); 322 virtual ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > SAL_CALL getReplacementGraphic(); 323 324 //XServiceInfo 325 virtual rtl::OUString SAL_CALL getImplementationName(void); 326 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName); 327 virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void); 328 329 // XEventsSupplier 330 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents( ); 331 void * SAL_CALL operator new( size_t ) throw(); 332 void SAL_CALL operator delete( void * ) throw(); 333 }; 334 335 336 337 class SwXOLEListener : public cppu::WeakImplHelper1 338 < 339 ::com::sun::star::util::XModifyListener 340 >, 341 public SwClient 342 { 343 ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > xOLEModel; 344 // SfxObjectShell* GetObjShell( const SwFmt& rFmt, 345 // SwOLENode** ppNd = 0 ) const; GetFmt() const346 SwFmt* GetFmt() const { return (SwFmt*)GetRegisteredIn(); } 347 public: 348 SwXOLEListener(SwFmt& rOLEFmt, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > xOLE); 349 ~SwXOLEListener(); 350 TYPEINFO(); 351 352 // ::com::sun::star::lang::XEventListener 353 virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ); 354 355 // ::com::sun::star::util::XModifyListener 356 virtual void SAL_CALL modified( const ::com::sun::star::lang::EventObject& aEvent ); 357 358 protected: 359 virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); 360 }; 361 362 363 364 #endif 365