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 SC_LINKUNO_HXX 25 #define SC_LINKUNO_HXX 26 27 #include <svl/lstner.hxx> 28 #include <svl/itemprop.hxx> 29 #include <com/sun/star/sheet/XDDELink.hpp> 30 #include <com/sun/star/sheet/XDDELinkResults.hpp> 31 #include <com/sun/star/sheet/XDDELinks.hpp> 32 #include <com/sun/star/sheet/XExternalDocLink.hpp> 33 #include <com/sun/star/sheet/XExternalDocLinks.hpp> 34 #include <com/sun/star/sheet/XExternalSheetCache.hpp> 35 #include <com/sun/star/sheet/XAreaLink.hpp> 36 #include <com/sun/star/sheet/XAreaLinks.hpp> 37 #include <com/sun/star/util/XRefreshable.hpp> 38 #include <com/sun/star/lang/XServiceInfo.hpp> 39 #include <com/sun/star/beans/XPropertySet.hpp> 40 #include <com/sun/star/container/XEnumerationAccess.hpp> 41 #include <com/sun/star/container/XNameAccess.hpp> 42 #include <com/sun/star/container/XIndexAccess.hpp> 43 #include <com/sun/star/container/XNamed.hpp> 44 #include <cppuhelper/implbase1.hxx> 45 #include <cppuhelper/implbase3.hxx> 46 #include <cppuhelper/implbase4.hxx> 47 #include <cppuhelper/implbase5.hxx> 48 49 #include "externalrefmgr.hxx" 50 51 #include <hash_map> 52 #include <vector> 53 54 class ScAreaLink; 55 class ScDocShell; 56 class ScTableLink; 57 58 typedef ::com::sun::star::uno::Reference< 59 ::com::sun::star::util::XRefreshListener >* XRefreshListenerPtr; 60 SV_DECL_PTRARR_DEL( XRefreshListenerArr_Impl, XRefreshListenerPtr, 4, 4 ) 61 62 63 64 class ScSheetLinkObj : public cppu::WeakImplHelper4< 65 com::sun::star::container::XNamed, 66 com::sun::star::util::XRefreshable, 67 com::sun::star::beans::XPropertySet, 68 com::sun::star::lang::XServiceInfo >, 69 public SfxListener 70 { 71 private: 72 SfxItemPropertySet aPropSet; 73 ScDocShell* pDocShell; 74 String aFileName; 75 XRefreshListenerArr_Impl aRefreshListeners; 76 77 ScTableLink* GetLink_Impl() const; 78 void Refreshed_Impl(); 79 void ModifyRefreshDelay_Impl( sal_Int32 nRefresh ); 80 81 public: 82 ScSheetLinkObj(ScDocShell* pDocSh, const String& rName); 83 virtual ~ScSheetLinkObj(); 84 85 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 86 87 // XNamed 88 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 89 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 90 throw(::com::sun::star::uno::RuntimeException); 91 92 // XRefreshable 93 virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException); 94 virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference< 95 ::com::sun::star::util::XRefreshListener >& l ) 96 throw(::com::sun::star::uno::RuntimeException); 97 virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference< 98 ::com::sun::star::util::XRefreshListener >& l ) 99 throw(::com::sun::star::uno::RuntimeException); 100 101 // XPropertySet 102 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 103 SAL_CALL getPropertySetInfo( ) 104 throw(::com::sun::star::uno::RuntimeException); 105 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 106 const ::com::sun::star::uno::Any& aValue ) 107 throw(::com::sun::star::beans::UnknownPropertyException, 108 ::com::sun::star::beans::PropertyVetoException, 109 ::com::sun::star::lang::IllegalArgumentException, 110 ::com::sun::star::lang::WrappedTargetException, 111 ::com::sun::star::uno::RuntimeException); 112 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 113 const ::rtl::OUString& PropertyName ) 114 throw(::com::sun::star::beans::UnknownPropertyException, 115 ::com::sun::star::lang::WrappedTargetException, 116 ::com::sun::star::uno::RuntimeException); 117 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 118 const ::com::sun::star::uno::Reference< 119 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 120 throw(::com::sun::star::beans::UnknownPropertyException, 121 ::com::sun::star::lang::WrappedTargetException, 122 ::com::sun::star::uno::RuntimeException); 123 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 124 const ::com::sun::star::uno::Reference< 125 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 126 throw(::com::sun::star::beans::UnknownPropertyException, 127 ::com::sun::star::lang::WrappedTargetException, 128 ::com::sun::star::uno::RuntimeException); 129 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 130 const ::com::sun::star::uno::Reference< 131 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 132 throw(::com::sun::star::beans::UnknownPropertyException, 133 ::com::sun::star::lang::WrappedTargetException, 134 ::com::sun::star::uno::RuntimeException); 135 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 136 const ::com::sun::star::uno::Reference< 137 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 138 throw(::com::sun::star::beans::UnknownPropertyException, 139 ::com::sun::star::lang::WrappedTargetException, 140 ::com::sun::star::uno::RuntimeException); 141 142 // aus get/setPropertyValue gerufen: 143 ::rtl::OUString getFileName(void) const; 144 void setFileName(const ::rtl::OUString& FileName); 145 ::rtl::OUString getFilter(void) const; 146 void setFilter(const ::rtl::OUString& Filter); 147 ::rtl::OUString getFilterOptions(void) const; 148 void setFilterOptions(const ::rtl::OUString& FilterOptions); 149 sal_Int32 getRefreshDelay(void) const; 150 void setRefreshDelay(sal_Int32 nRefreshDelay); 151 152 // XServiceInfo 153 virtual ::rtl::OUString SAL_CALL getImplementationName() 154 throw(::com::sun::star::uno::RuntimeException); 155 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 156 throw(::com::sun::star::uno::RuntimeException); 157 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 158 throw(::com::sun::star::uno::RuntimeException); 159 }; 160 161 162 class ScSheetLinksObj : public cppu::WeakImplHelper4< 163 com::sun::star::container::XNameAccess, 164 com::sun::star::container::XEnumerationAccess, 165 com::sun::star::container::XIndexAccess, 166 com::sun::star::lang::XServiceInfo >, 167 public SfxListener 168 { 169 private: 170 ScDocShell* pDocShell; 171 172 ScSheetLinkObj* GetObjectByIndex_Impl(sal_Int32 nIndex); 173 ScSheetLinkObj* GetObjectByName_Impl(const ::rtl::OUString& aName); 174 175 public: 176 ScSheetLinksObj(ScDocShell* pDocSh); 177 virtual ~ScSheetLinksObj(); 178 179 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 180 181 // XNameAccess 182 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 183 throw(::com::sun::star::container::NoSuchElementException, 184 ::com::sun::star::lang::WrappedTargetException, 185 ::com::sun::star::uno::RuntimeException); 186 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 187 throw(::com::sun::star::uno::RuntimeException); 188 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 189 throw(::com::sun::star::uno::RuntimeException); 190 191 // XIndexAccess 192 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 193 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 194 throw(::com::sun::star::lang::IndexOutOfBoundsException, 195 ::com::sun::star::lang::WrappedTargetException, 196 ::com::sun::star::uno::RuntimeException); 197 198 // XEnumerationAccess 199 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 200 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 201 202 // XElementAccess 203 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 204 throw(::com::sun::star::uno::RuntimeException); 205 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 206 207 // XServiceInfo 208 virtual ::rtl::OUString SAL_CALL getImplementationName() 209 throw(::com::sun::star::uno::RuntimeException); 210 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 211 throw(::com::sun::star::uno::RuntimeException); 212 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 213 throw(::com::sun::star::uno::RuntimeException); 214 }; 215 216 217 class ScAreaLinkObj : public cppu::WeakImplHelper4< 218 com::sun::star::sheet::XAreaLink, 219 com::sun::star::util::XRefreshable, 220 com::sun::star::beans::XPropertySet, 221 com::sun::star::lang::XServiceInfo >, 222 public SfxListener 223 { 224 private: 225 SfxItemPropertySet aPropSet; 226 ScDocShell* pDocShell; 227 sal_uInt16 nPos; 228 XRefreshListenerArr_Impl aRefreshListeners; 229 230 void Modify_Impl( const ::rtl::OUString* pNewFile, const ::rtl::OUString* pNewFilter, 231 const ::rtl::OUString* pNewOptions, const ::rtl::OUString* pNewSource, 232 const com::sun::star::table::CellRangeAddress* pNewDest ); 233 void ModifyRefreshDelay_Impl( sal_Int32 nRefresh ); 234 void Refreshed_Impl(); 235 236 public: 237 ScAreaLinkObj(ScDocShell* pDocSh, sal_uInt16 nP); 238 virtual ~ScAreaLinkObj(); 239 240 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 241 242 // XRefreshable 243 virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException); 244 virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference< 245 ::com::sun::star::util::XRefreshListener >& l ) 246 throw(::com::sun::star::uno::RuntimeException); 247 virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference< 248 ::com::sun::star::util::XRefreshListener >& l ) 249 throw(::com::sun::star::uno::RuntimeException); 250 251 // XPropertySet 252 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 253 SAL_CALL getPropertySetInfo( ) 254 throw(::com::sun::star::uno::RuntimeException); 255 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 256 const ::com::sun::star::uno::Any& aValue ) 257 throw(::com::sun::star::beans::UnknownPropertyException, 258 ::com::sun::star::beans::PropertyVetoException, 259 ::com::sun::star::lang::IllegalArgumentException, 260 ::com::sun::star::lang::WrappedTargetException, 261 ::com::sun::star::uno::RuntimeException); 262 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 263 const ::rtl::OUString& PropertyName ) 264 throw(::com::sun::star::beans::UnknownPropertyException, 265 ::com::sun::star::lang::WrappedTargetException, 266 ::com::sun::star::uno::RuntimeException); 267 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 268 const ::com::sun::star::uno::Reference< 269 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 270 throw(::com::sun::star::beans::UnknownPropertyException, 271 ::com::sun::star::lang::WrappedTargetException, 272 ::com::sun::star::uno::RuntimeException); 273 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 274 const ::com::sun::star::uno::Reference< 275 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 276 throw(::com::sun::star::beans::UnknownPropertyException, 277 ::com::sun::star::lang::WrappedTargetException, 278 ::com::sun::star::uno::RuntimeException); 279 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 280 const ::com::sun::star::uno::Reference< 281 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 282 throw(::com::sun::star::beans::UnknownPropertyException, 283 ::com::sun::star::lang::WrappedTargetException, 284 ::com::sun::star::uno::RuntimeException); 285 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 286 const ::com::sun::star::uno::Reference< 287 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 288 throw(::com::sun::star::beans::UnknownPropertyException, 289 ::com::sun::star::lang::WrappedTargetException, 290 ::com::sun::star::uno::RuntimeException); 291 292 // aus get/setPropertyValue gerufen: 293 ::rtl::OUString getFileName(void) const; 294 void setFileName(const ::rtl::OUString& FileName); 295 ::rtl::OUString getFilter(void) const; 296 void setFilter(const ::rtl::OUString& Filter); 297 ::rtl::OUString getFilterOptions(void) const; 298 void setFilterOptions(const ::rtl::OUString& FilterOptions); 299 sal_Int32 getRefreshDelay(void) const; 300 void setRefreshDelay(sal_Int32 nRefreshDelay); 301 302 // XAreaLink 303 virtual ::rtl::OUString SAL_CALL getSourceArea() throw(::com::sun::star::uno::RuntimeException); 304 virtual void SAL_CALL setSourceArea( const ::rtl::OUString& aSourceArea ) 305 throw(::com::sun::star::uno::RuntimeException); 306 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getDestArea() 307 throw(::com::sun::star::uno::RuntimeException); 308 virtual void SAL_CALL setDestArea( const ::com::sun::star::table::CellRangeAddress& aDestArea ) 309 throw(::com::sun::star::uno::RuntimeException); 310 311 // XServiceInfo 312 virtual ::rtl::OUString SAL_CALL getImplementationName() 313 throw(::com::sun::star::uno::RuntimeException); 314 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 315 throw(::com::sun::star::uno::RuntimeException); 316 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 317 throw(::com::sun::star::uno::RuntimeException); 318 }; 319 320 321 class ScAreaLinksObj : public cppu::WeakImplHelper3< 322 com::sun::star::sheet::XAreaLinks, 323 com::sun::star::container::XEnumerationAccess, 324 com::sun::star::lang::XServiceInfo >, 325 public SfxListener 326 { 327 private: 328 ScDocShell* pDocShell; 329 330 ScAreaLinkObj* GetObjectByIndex_Impl(sal_Int32 nIndex); 331 332 public: 333 ScAreaLinksObj(ScDocShell* pDocSh); 334 virtual ~ScAreaLinksObj(); 335 336 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 337 338 // XAreaLinks 339 virtual void SAL_CALL insertAtPosition( const ::com::sun::star::table::CellAddress& aDestPos, 340 const ::rtl::OUString& aFileName, 341 const ::rtl::OUString& aSourceArea, 342 const ::rtl::OUString& aFilter, 343 const ::rtl::OUString& aFilterOptions ) 344 throw(::com::sun::star::uno::RuntimeException); 345 virtual void SAL_CALL removeByIndex( sal_Int32 nIndex ) 346 throw(::com::sun::star::uno::RuntimeException); 347 348 // XIndexAccess 349 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 350 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 351 throw(::com::sun::star::lang::IndexOutOfBoundsException, 352 ::com::sun::star::lang::WrappedTargetException, 353 ::com::sun::star::uno::RuntimeException); 354 355 // XEnumerationAccess 356 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 357 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 358 359 // XElementAccess 360 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 361 throw(::com::sun::star::uno::RuntimeException); 362 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 363 364 // XServiceInfo 365 virtual ::rtl::OUString SAL_CALL getImplementationName() 366 throw(::com::sun::star::uno::RuntimeException); 367 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 368 throw(::com::sun::star::uno::RuntimeException); 369 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 370 throw(::com::sun::star::uno::RuntimeException); 371 }; 372 373 374 //! order of XNamed and DDELink changed to avoid "duplicate comdat" symbols 375 376 class ScDDELinkObj : public cppu::WeakImplHelper5< 377 com::sun::star::sheet::XDDELink, 378 com::sun::star::container::XNamed, 379 com::sun::star::util::XRefreshable, 380 com::sun::star::sheet::XDDELinkResults, 381 com::sun::star::lang::XServiceInfo >, 382 public SfxListener 383 { 384 private: 385 ScDocShell* pDocShell; 386 String aAppl; 387 String aTopic; 388 String aItem; 389 XRefreshListenerArr_Impl aRefreshListeners; 390 391 void Refreshed_Impl(); 392 393 public: 394 ScDDELinkObj(ScDocShell* pDocSh, const String& rA, 395 const String& rT, const String& rI); 396 virtual ~ScDDELinkObj(); 397 398 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 399 400 // XNamed 401 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 402 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 403 throw(::com::sun::star::uno::RuntimeException); 404 405 // XDDELink 406 virtual ::rtl::OUString SAL_CALL getApplication() throw(::com::sun::star::uno::RuntimeException); 407 virtual ::rtl::OUString SAL_CALL getTopic() throw(::com::sun::star::uno::RuntimeException); 408 virtual ::rtl::OUString SAL_CALL getItem() throw(::com::sun::star::uno::RuntimeException); 409 410 // XRefreshable 411 virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException); 412 virtual void SAL_CALL addRefreshListener( const ::com::sun::star::uno::Reference< 413 ::com::sun::star::util::XRefreshListener >& l ) 414 throw(::com::sun::star::uno::RuntimeException); 415 virtual void SAL_CALL removeRefreshListener( const ::com::sun::star::uno::Reference< 416 ::com::sun::star::util::XRefreshListener >& l ) 417 throw(::com::sun::star::uno::RuntimeException); 418 419 // XDDELinkResults 420 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > > 421 SAL_CALL getResults( ) 422 throw (::com::sun::star::uno::RuntimeException); 423 virtual void SAL_CALL setResults( 424 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > >& aResults ) 425 throw (::com::sun::star::uno::RuntimeException); 426 427 // XServiceInfo 428 virtual ::rtl::OUString SAL_CALL getImplementationName() 429 throw(::com::sun::star::uno::RuntimeException); 430 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 431 throw(::com::sun::star::uno::RuntimeException); 432 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 433 throw(::com::sun::star::uno::RuntimeException); 434 }; 435 436 437 class ScDDELinksObj : public cppu::WeakImplHelper4< 438 com::sun::star::container::XEnumerationAccess, 439 com::sun::star::container::XIndexAccess, 440 com::sun::star::sheet::XDDELinks, 441 com::sun::star::lang::XServiceInfo >, 442 public SfxListener 443 { 444 private: 445 ScDocShell* pDocShell; 446 447 ScDDELinkObj* GetObjectByIndex_Impl(sal_Int32 nIndex); 448 ScDDELinkObj* GetObjectByName_Impl(const ::rtl::OUString& aName); 449 450 public: 451 ScDDELinksObj(ScDocShell* pDocSh); 452 virtual ~ScDDELinksObj(); 453 454 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 455 456 // XNameAccess 457 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 458 throw(::com::sun::star::container::NoSuchElementException, 459 ::com::sun::star::lang::WrappedTargetException, 460 ::com::sun::star::uno::RuntimeException); 461 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 462 throw(::com::sun::star::uno::RuntimeException); 463 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 464 throw(::com::sun::star::uno::RuntimeException); 465 466 // XIndexAccess 467 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 468 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 469 throw(::com::sun::star::lang::IndexOutOfBoundsException, 470 ::com::sun::star::lang::WrappedTargetException, 471 ::com::sun::star::uno::RuntimeException); 472 473 // XEnumerationAccess 474 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 475 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 476 477 // XElementAccess 478 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 479 throw(::com::sun::star::uno::RuntimeException); 480 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 481 482 // XDDELinks 483 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDDELink > SAL_CALL addDDELink( 484 const ::rtl::OUString& aApplication, const ::rtl::OUString& aTopic, 485 const ::rtl::OUString& aItem, ::com::sun::star::sheet::DDELinkMode nMode ) 486 throw (::com::sun::star::uno::RuntimeException); 487 488 // XServiceInfo 489 virtual ::rtl::OUString SAL_CALL getImplementationName() 490 throw(::com::sun::star::uno::RuntimeException); 491 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 492 throw(::com::sun::star::uno::RuntimeException); 493 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 494 throw(::com::sun::star::uno::RuntimeException); 495 }; 496 497 // ============================================================================ 498 499 class ScExternalSheetCacheObj : public cppu::WeakImplHelper1< ::com::sun::star::sheet::XExternalSheetCache > 500 { 501 public: 502 explicit ScExternalSheetCacheObj(ScExternalRefCache::TableTypeRef pTable, size_t nIndex); 503 ~ScExternalSheetCacheObj(); 504 505 // XExternalSheetCache 506 virtual void SAL_CALL setCellValue( 507 sal_Int32 nCol, sal_Int32 nRow, const ::com::sun::star::uno::Any& rAny) 508 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 509 510 virtual ::com::sun::star::uno::Any SAL_CALL getCellValue(sal_Int32 nCol, sal_Int32 nRow) 511 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 512 513 virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getAllRows() 514 throw (::com::sun::star::uno::RuntimeException); 515 516 virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getAllColumns(sal_Int32 nRow) 517 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 518 519 // Attributes 520 virtual sal_Int32 SAL_CALL getTokenIndex() 521 throw (::com::sun::star::uno::RuntimeException); 522 523 private: 524 ScExternalSheetCacheObj(); 525 ScExternalSheetCacheObj(const ScExternalSheetCacheObj&); 526 527 private: 528 ScExternalRefCache::TableTypeRef mpTable; 529 size_t mnIndex; 530 }; 531 532 // ============================================================================ 533 534 class ScExternalDocLinkObj : public cppu::WeakImplHelper1< ::com::sun::star::sheet::XExternalDocLink > 535 { 536 public: 537 ScExternalDocLinkObj(ScExternalRefManager* pRefMgr, sal_uInt16 nFileId); 538 ~ScExternalDocLinkObj(); 539 540 // XExternalDocLink 541 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XExternalSheetCache > 542 SAL_CALL addSheetCache( const ::rtl::OUString& aSheetName, sal_Bool bDynamicCache ) 543 throw (::com::sun::star::uno::RuntimeException); 544 545 // XNameAccess 546 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 547 throw(::com::sun::star::container::NoSuchElementException, 548 ::com::sun::star::lang::WrappedTargetException, 549 ::com::sun::star::uno::RuntimeException); 550 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 551 throw(::com::sun::star::uno::RuntimeException); 552 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 553 throw(::com::sun::star::uno::RuntimeException); 554 555 // XIndexAccess 556 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 557 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 nIndex ) 558 throw(::com::sun::star::lang::IndexOutOfBoundsException, 559 ::com::sun::star::lang::WrappedTargetException, 560 ::com::sun::star::uno::RuntimeException); 561 562 // XEnumerationAccess 563 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 564 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 565 566 // XElementAccess 567 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 568 throw(::com::sun::star::uno::RuntimeException); 569 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 570 571 // Attributes 572 virtual sal_Int32 SAL_CALL getTokenIndex() 573 throw (::com::sun::star::uno::RuntimeException); 574 575 private: 576 ScExternalRefManager* mpRefMgr; 577 sal_uInt16 mnFileId; 578 }; 579 580 // ============================================================================ 581 582 /** This is the UNO API equivalent of ScExternalRefManager. */ 583 class ScExternalDocLinksObj : public cppu::WeakImplHelper1< ::com::sun::star::sheet::XExternalDocLinks > 584 { 585 public: 586 ScExternalDocLinksObj(ScDocShell* pDocShell); 587 ~ScExternalDocLinksObj(); 588 589 // XExternalDocLinks 590 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XExternalDocLink > 591 SAL_CALL addDocLink( const ::rtl::OUString& aDocName ) 592 throw (::com::sun::star::uno::RuntimeException); 593 594 // XNameAccess 595 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 596 throw(::com::sun::star::container::NoSuchElementException, 597 ::com::sun::star::lang::WrappedTargetException, 598 ::com::sun::star::uno::RuntimeException); 599 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 600 throw(::com::sun::star::uno::RuntimeException); 601 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 602 throw(::com::sun::star::uno::RuntimeException); 603 604 // XIndexAccess 605 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 606 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 nIndex ) 607 throw(::com::sun::star::lang::IndexOutOfBoundsException, 608 ::com::sun::star::lang::WrappedTargetException, 609 ::com::sun::star::uno::RuntimeException); 610 611 // XEnumerationAccess 612 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL 613 createEnumeration() throw(::com::sun::star::uno::RuntimeException); 614 615 // XElementAccess 616 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 617 throw(::com::sun::star::uno::RuntimeException); 618 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 619 620 private: 621 ScExternalDocLinksObj(); 622 ScExternalDocLinksObj(const ScExternalDocLinksObj&); 623 624 private: 625 ScDocShell* mpDocShell; 626 ScExternalRefManager* mpRefMgr; 627 }; 628 629 #endif 630 631