xref: /trunk/main/sc/inc/styleuno.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
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