1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef SC_STYLEUNO_HXX 29 #define SC_STYLEUNO_HXX 30 31 #include <svl/itemprop.hxx> 32 #include <svl/lstner.hxx> 33 #include <rsc/rscsfx.hxx> 34 #include <com/sun/star/container/XIndexAccess.hpp> 35 #include <com/sun/star/style/XStyle.hpp> 36 #include <com/sun/star/style/XStyleLoader.hpp> 37 #include <com/sun/star/lang/XServiceInfo.hpp> 38 #include <com/sun/star/container/XNameContainer.hpp> 39 #include <com/sun/star/container/XIndexReplace.hpp> 40 #include <com/sun/star/beans/XPropertySet.hpp> 41 #include <com/sun/star/beans/XMultiPropertySet.hpp> 42 #include <com/sun/star/beans/XPropertyState.hpp> 43 #include <com/sun/star/beans/XMultiPropertyStates.hpp> 44 #include <com/sun/star/lang/XUnoTunnel.hpp> 45 //#include <cppuhelper/implbase3.hxx> 46 #include <cppuhelper/implbase4.hxx> 47 #include <cppuhelper/implbase7.hxx> 48 49 class SfxStyleSheetBase; 50 class ScDocShell; 51 52 class ScStyleFamilyObj; 53 class ScStyleObj; 54 55 56 class ScStyleNameConversion 57 { 58 public: 59 static String DisplayToProgrammaticName( const String& rDispName, sal_uInt16 nType ); 60 static String ProgrammaticToDisplayName( const String& rProgName, sal_uInt16 nType ); 61 }; 62 63 64 class ScStyleFamiliesObj : public ::cppu::WeakImplHelper4< 65 ::com::sun::star::container::XIndexAccess, 66 ::com::sun::star::container::XNameAccess, 67 ::com::sun::star::style::XStyleLoader, 68 ::com::sun::star::lang::XServiceInfo >, 69 public SfxListener 70 { 71 private: 72 ScDocShell* pDocShell; 73 74 ScStyleFamilyObj* GetObjectByType_Impl(sal_uInt16 Type) const; 75 ScStyleFamilyObj* GetObjectByIndex_Impl(sal_uInt32 nIndex) const; 76 ScStyleFamilyObj* GetObjectByName_Impl(const rtl::OUString& aName) const; 77 78 public: 79 ScStyleFamiliesObj(ScDocShell* pDocSh); 80 virtual ~ScStyleFamiliesObj(); 81 82 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 83 84 // XIndexAccess 85 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 86 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 87 throw(::com::sun::star::lang::IndexOutOfBoundsException, 88 ::com::sun::star::lang::WrappedTargetException, 89 ::com::sun::star::uno::RuntimeException); 90 91 // XNameAccess 92 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 93 throw(::com::sun::star::container::NoSuchElementException, 94 ::com::sun::star::lang::WrappedTargetException, 95 ::com::sun::star::uno::RuntimeException); 96 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 97 throw(::com::sun::star::uno::RuntimeException); 98 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 99 throw(::com::sun::star::uno::RuntimeException); 100 101 // XElementAccess 102 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 103 throw(::com::sun::star::uno::RuntimeException); 104 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 105 106 // XStyleLoader 107 virtual void SAL_CALL loadStylesFromURL( const ::rtl::OUString& URL, 108 const ::com::sun::star::uno::Sequence< 109 ::com::sun::star::beans::PropertyValue >& aOptions ) 110 throw(::com::sun::star::io::IOException, 111 ::com::sun::star::uno::RuntimeException); 112 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL 113 getStyleLoaderOptions() throw(::com::sun::star::uno::RuntimeException); 114 115 // XServiceInfo 116 virtual ::rtl::OUString SAL_CALL getImplementationName() 117 throw(::com::sun::star::uno::RuntimeException); 118 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 119 throw(::com::sun::star::uno::RuntimeException); 120 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 121 throw(::com::sun::star::uno::RuntimeException); 122 }; 123 124 125 class ScStyleFamilyObj : public ::cppu::WeakImplHelper4< 126 ::com::sun::star::container::XNameContainer, 127 ::com::sun::star::container::XIndexAccess, 128 ::com::sun::star::beans::XPropertySet, 129 ::com::sun::star::lang::XServiceInfo >, 130 public SfxListener 131 { 132 private: 133 ScDocShell* pDocShell; 134 SfxStyleFamily eFamily; // Familie 135 136 ScStyleObj* GetObjectByIndex_Impl(sal_uInt32 nIndex); 137 ScStyleObj* GetObjectByName_Impl(const rtl::OUString& Name); 138 139 public: 140 ScStyleFamilyObj(ScDocShell* pDocSh, SfxStyleFamily eFam); 141 virtual ~ScStyleFamilyObj(); 142 143 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 144 145 // XNameContainer 146 virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, 147 const ::com::sun::star::uno::Any& aElement ) 148 throw(::com::sun::star::lang::IllegalArgumentException, 149 ::com::sun::star::container::ElementExistException, 150 ::com::sun::star::lang::WrappedTargetException, 151 ::com::sun::star::uno::RuntimeException); 152 virtual void SAL_CALL removeByName( const ::rtl::OUString& Name ) 153 throw(::com::sun::star::container::NoSuchElementException, 154 ::com::sun::star::lang::WrappedTargetException, 155 ::com::sun::star::uno::RuntimeException); 156 157 // XNameReplace 158 virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, 159 const ::com::sun::star::uno::Any& aElement ) 160 throw(::com::sun::star::lang::IllegalArgumentException, 161 ::com::sun::star::container::NoSuchElementException, 162 ::com::sun::star::lang::WrappedTargetException, 163 ::com::sun::star::uno::RuntimeException); 164 165 // XNameAccess 166 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) 167 throw(::com::sun::star::container::NoSuchElementException, 168 ::com::sun::star::lang::WrappedTargetException, 169 ::com::sun::star::uno::RuntimeException); 170 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() 171 throw(::com::sun::star::uno::RuntimeException); 172 virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) 173 throw(::com::sun::star::uno::RuntimeException); 174 175 // XIndexAccess 176 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException); 177 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) 178 throw(::com::sun::star::lang::IndexOutOfBoundsException, 179 ::com::sun::star::lang::WrappedTargetException, 180 ::com::sun::star::uno::RuntimeException); 181 182 // XElementAccess 183 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 184 throw(::com::sun::star::uno::RuntimeException); 185 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); 186 187 // XPropertySet 188 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() 189 throw (::com::sun::star::uno::RuntimeException); 190 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) 191 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 192 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) 193 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 194 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 195 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 196 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 197 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 198 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 199 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 200 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 201 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 202 203 // XServiceInfo 204 virtual ::rtl::OUString SAL_CALL getImplementationName() 205 throw(::com::sun::star::uno::RuntimeException); 206 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 207 throw(::com::sun::star::uno::RuntimeException); 208 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 209 throw(::com::sun::star::uno::RuntimeException); 210 }; 211 212 213 class ScStyleObj : public ::cppu::WeakImplHelper7< 214 ::com::sun::star::style::XStyle, 215 ::com::sun::star::beans::XPropertySet, 216 ::com::sun::star::beans::XMultiPropertySet, 217 ::com::sun::star::beans::XPropertyState, 218 ::com::sun::star::beans::XMultiPropertyStates, 219 ::com::sun::star::lang::XUnoTunnel, 220 ::com::sun::star::lang::XServiceInfo >, 221 public SfxListener 222 { 223 private: 224 const SfxItemPropertySet* pPropSet; 225 ScDocShell* pDocShell; 226 SfxStyleFamily eFamily; // Familie 227 String aStyleName; 228 229 SfxStyleSheetBase* GetStyle_Impl(); 230 const SfxItemSet* GetStyleItemSet_Impl( const ::rtl::OUString& rPropName, const SfxItemPropertySimpleEntry*& rpEntry ); 231 void SetOnePropertyValue( const ::rtl::OUString& rPropertyName, 232 const SfxItemPropertySimpleEntry* pEntry, 233 const ::com::sun::star::uno::Any* pValue ) 234 throw(::com::sun::star::lang::IllegalArgumentException, 235 ::com::sun::star::uno::RuntimeException); 236 237 ScStyleObj(); // disabled 238 public: 239 ScStyleObj(ScDocShell* pDocSh, SfxStyleFamily eFam, const String& rName); 240 virtual ~ScStyleObj(); 241 242 // per getImplementation gerufen: 243 sal_Bool IsInserted() const { return pDocShell != NULL; } 244 SfxStyleFamily GetFamily() const { return eFamily; } 245 void InitDoc( ScDocShell* pNewDocSh, const String& rNewName ); 246 247 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 248 249 static ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexReplace > 250 CreateEmptyNumberingRules(); 251 252 // XStyle 253 virtual sal_Bool SAL_CALL isUserDefined() throw(::com::sun::star::uno::RuntimeException); 254 virtual sal_Bool SAL_CALL isInUse() throw(::com::sun::star::uno::RuntimeException); 255 virtual ::rtl::OUString SAL_CALL getParentStyle() throw(::com::sun::star::uno::RuntimeException); 256 virtual void SAL_CALL setParentStyle( const ::rtl::OUString& aParentStyle ) 257 throw(::com::sun::star::container::NoSuchElementException, 258 ::com::sun::star::uno::RuntimeException); 259 260 // XNamed 261 virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException); 262 virtual void SAL_CALL setName( const ::rtl::OUString& aName ) 263 throw(::com::sun::star::uno::RuntimeException); 264 265 // XPropertySet 266 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > 267 SAL_CALL getPropertySetInfo() 268 throw(::com::sun::star::uno::RuntimeException); 269 virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, 270 const ::com::sun::star::uno::Any& aValue ) 271 throw(::com::sun::star::beans::UnknownPropertyException, 272 ::com::sun::star::beans::PropertyVetoException, 273 ::com::sun::star::lang::IllegalArgumentException, 274 ::com::sun::star::lang::WrappedTargetException, 275 ::com::sun::star::uno::RuntimeException); 276 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 277 const ::rtl::OUString& PropertyName ) 278 throw(::com::sun::star::beans::UnknownPropertyException, 279 ::com::sun::star::lang::WrappedTargetException, 280 ::com::sun::star::uno::RuntimeException); 281 virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, 282 const ::com::sun::star::uno::Reference< 283 ::com::sun::star::beans::XPropertyChangeListener >& xListener ) 284 throw(::com::sun::star::beans::UnknownPropertyException, 285 ::com::sun::star::lang::WrappedTargetException, 286 ::com::sun::star::uno::RuntimeException); 287 virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, 288 const ::com::sun::star::uno::Reference< 289 ::com::sun::star::beans::XPropertyChangeListener >& aListener ) 290 throw(::com::sun::star::beans::UnknownPropertyException, 291 ::com::sun::star::lang::WrappedTargetException, 292 ::com::sun::star::uno::RuntimeException); 293 virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, 294 const ::com::sun::star::uno::Reference< 295 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 296 throw(::com::sun::star::beans::UnknownPropertyException, 297 ::com::sun::star::lang::WrappedTargetException, 298 ::com::sun::star::uno::RuntimeException); 299 virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, 300 const ::com::sun::star::uno::Reference< 301 ::com::sun::star::beans::XVetoableChangeListener >& aListener ) 302 throw(::com::sun::star::beans::UnknownPropertyException, 303 ::com::sun::star::lang::WrappedTargetException, 304 ::com::sun::star::uno::RuntimeException); 305 306 // XMultiPropertySet 307 virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 308 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) 309 throw (::com::sun::star::beans::PropertyVetoException, 310 ::com::sun::star::lang::IllegalArgumentException, 311 ::com::sun::star::lang::WrappedTargetException, 312 ::com::sun::star::uno::RuntimeException); 313 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL 314 getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) 315 throw (::com::sun::star::uno::RuntimeException); 316 virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 317 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 318 throw (::com::sun::star::uno::RuntimeException); 319 virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 320 throw (::com::sun::star::uno::RuntimeException); 321 virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, 322 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) 323 throw (::com::sun::star::uno::RuntimeException); 324 325 // XPropertyState 326 virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( 327 const ::rtl::OUString& PropertyName ) 328 throw(::com::sun::star::beans::UnknownPropertyException, 329 ::com::sun::star::uno::RuntimeException); 330 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL 331 getPropertyStates( const ::com::sun::star::uno::Sequence< 332 ::rtl::OUString >& aPropertyName ) 333 throw(::com::sun::star::beans::UnknownPropertyException, 334 ::com::sun::star::uno::RuntimeException); 335 virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) 336 throw(::com::sun::star::beans::UnknownPropertyException, 337 ::com::sun::star::uno::RuntimeException); 338 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( 339 const ::rtl::OUString& aPropertyName ) 340 throw(::com::sun::star::beans::UnknownPropertyException, 341 ::com::sun::star::lang::WrappedTargetException, 342 ::com::sun::star::uno::RuntimeException); 343 344 // XMultiPropertyStates 345 // getPropertyStates already defined for XPropertyState 346 virtual void SAL_CALL setAllPropertiesToDefault() throw (::com::sun::star::uno::RuntimeException); 347 virtual void SAL_CALL setPropertiesToDefault( const ::com::sun::star::uno::Sequence< 348 ::rtl::OUString >& aPropertyNames ) 349 throw (::com::sun::star::beans::UnknownPropertyException, 350 ::com::sun::star::uno::RuntimeException); 351 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL 352 getPropertyDefaults( const ::com::sun::star::uno::Sequence< 353 ::rtl::OUString >& aPropertyNames ) 354 throw (::com::sun::star::beans::UnknownPropertyException, 355 ::com::sun::star::lang::WrappedTargetException, 356 ::com::sun::star::uno::RuntimeException); 357 358 // XServiceInfo 359 virtual ::rtl::OUString SAL_CALL getImplementationName() 360 throw(::com::sun::star::uno::RuntimeException); 361 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 362 throw(::com::sun::star::uno::RuntimeException); 363 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() 364 throw(::com::sun::star::uno::RuntimeException); 365 366 // XUnoTunnel 367 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< 368 sal_Int8 >& aIdentifier ) 369 throw(::com::sun::star::uno::RuntimeException); 370 371 static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId(); 372 static ScStyleObj* getImplementation( const ::com::sun::star::uno::Reference< 373 ::com::sun::star::uno::XInterface> xObj ); 374 375 }; 376 377 #endif 378 379