xref: /AOO41X/main/sc/inc/dapiuno.hxx (revision 38d50f7b14e1cf975d8c6468d9633894cd59b523)
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_DAPIUNO_HXX
25 #define SC_DAPIUNO_HXX
26 
27 #include "global.hxx"
28 #include "dpobject.hxx"
29 #include "rangeutl.hxx"     // ScArea
30 #include "cellsuno.hxx"     // for XModifyListenerArr_Impl
31 
32 #include <svl/lstner.hxx>
33 #include <svl/itemprop.hxx>
34 
35 #include <com/sun/star/lang/XServiceInfo.hpp>
36 #include <com/sun/star/lang/XUnoTunnel.hpp>
37 #include <com/sun/star/beans/XPropertySet.hpp>
38 #include <com/sun/star/container/XEnumerationAccess.hpp>
39 #include <com/sun/star/container/XNameContainer.hpp>
40 #include <com/sun/star/util/XModifyBroadcaster.hpp>
41 
42 #include <com/sun/star/sheet/DataPilotFieldAutoShowInfo.hpp>
43 #include <com/sun/star/sheet/DataPilotFieldGroupInfo.hpp>
44 #include <com/sun/star/sheet/DataPilotFieldLayoutInfo.hpp>
45 #include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
46 #include <com/sun/star/sheet/DataPilotFieldReference.hpp>
47 #include <com/sun/star/sheet/DataPilotFieldSortInfo.hpp>
48 #include <com/sun/star/sheet/GeneralFunction.hpp>
49 #include <com/sun/star/sheet/XDataPilotDataLayoutFieldSupplier.hpp>
50 #include <com/sun/star/sheet/XDataPilotDescriptor.hpp>
51 #include <com/sun/star/sheet/XDataPilotField.hpp>
52 #include <com/sun/star/sheet/XDataPilotFieldGrouping.hpp>
53 #include <com/sun/star/sheet/XDataPilotTable.hpp>
54 #include <com/sun/star/sheet/XDataPilotTable2.hpp>
55 #include <com/sun/star/sheet/XDataPilotTables.hpp>
56 
57 #include <cppuhelper/implbase2.hxx>
58 #include <cppuhelper/implbase3.hxx>
59 #include <cppuhelper/implbase4.hxx>
60 #include <cppuhelper/implbase5.hxx>
61 
62 #include <memory>
63 #include <vector>
64 
65 namespace com { namespace sun { namespace star { namespace sheet {
66     struct DataPilotFieldFilter;
67     struct DataPilotTablePositionData;
68 }}}}
69 
70 class ScDocShell;
71 class ScDPSaveDimension;
72 class ScDPSaveGroupDimension;
73 class ScDPSaveNumGroupDimension;
74 struct ScDPNumGroupInfo;
75 
76 class ScDataPilotTableObj;
77 class ScDataPilotFieldObj;
78 class ScDataPilotItemObj;
79 
80 
81 class ScDataPilotConversion
82 {
83 public:
84     static com::sun::star::sheet::GeneralFunction   FirstFunc( sal_uInt16 nBits );
85     static sal_uInt16           FunctionBit( com::sun::star::sheet::GeneralFunction eFunc );
86 
87     static void         FillGroupInfo(
88                             ::com::sun::star::sheet::DataPilotFieldGroupInfo& rInfo,
89                             const ScDPNumGroupInfo& rGroupInfo );
90 };
91 
92 // ============================================================================
93 
94 /** DataPilotTables collection per sheet. */
95 class ScDataPilotTablesObj : public cppu::WeakImplHelper4<
96                                         com::sun::star::sheet::XDataPilotTables,
97                                         com::sun::star::container::XEnumerationAccess,
98                                         com::sun::star::container::XIndexAccess,
99                                         com::sun::star::lang::XServiceInfo>,
100                                     public SfxListener
101 {
102 private:
103     ScDocShell*             pDocShell;
104     SCTAB                   nTab;
105 
106     ScDataPilotTableObj*    GetObjectByIndex_Impl( sal_Int32 nIndex );
107     ScDataPilotTableObj*    GetObjectByName_Impl(const ::rtl::OUString& aName);
108 
109 public:
110                             ScDataPilotTablesObj(ScDocShell* pDocSh, SCTAB nT);
111     virtual                 ~ScDataPilotTablesObj();
112 
113     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
114 
115                             // XDataPilotTables
116     virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotDescriptor > SAL_CALL
117                             createDataPilotDescriptor() throw(::com::sun::star::uno::RuntimeException);
118     virtual void SAL_CALL   insertNewByName( const ::rtl::OUString& aName,
119                                     const ::com::sun::star::table::CellAddress& aOutputAddress,
120                                     const ::com::sun::star::uno::Reference<
121                                         ::com::sun::star::sheet::XDataPilotDescriptor >& xDescriptor )
122                                     throw(::com::sun::star::uno::RuntimeException);
123     virtual void SAL_CALL   removeByName( const ::rtl::OUString& aName )
124                                     throw(::com::sun::star::uno::RuntimeException);
125 
126                             // XNameAccess
127     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
128                                 throw(::com::sun::star::container::NoSuchElementException,
129                                     ::com::sun::star::lang::WrappedTargetException,
130                                     ::com::sun::star::uno::RuntimeException);
131     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
132                                 throw(::com::sun::star::uno::RuntimeException);
133     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
134                                 throw(::com::sun::star::uno::RuntimeException);
135 
136                             // XIndexAccess
137     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
138     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
139                                 throw(::com::sun::star::lang::IndexOutOfBoundsException,
140                                     ::com::sun::star::lang::WrappedTargetException,
141                                     ::com::sun::star::uno::RuntimeException);
142 
143                             // XEnumerationAccess
144     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
145                             createEnumeration() throw(::com::sun::star::uno::RuntimeException);
146 
147                             // XElementAccess
148     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
149                                 throw(::com::sun::star::uno::RuntimeException);
150     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
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 
163 //  ScDataPilotDescriptorBase is never instantiated directly
164 class ScDataPilotDescriptorBase : public com::sun::star::sheet::XDataPilotDescriptor,
165                                   public com::sun::star::beans::XPropertySet,
166                                   public com::sun::star::sheet::XDataPilotDataLayoutFieldSupplier,
167                                   public com::sun::star::lang::XServiceInfo,
168                                   public com::sun::star::lang::XUnoTunnel,
169                                   public com::sun::star::lang::XTypeProvider,
170                                   public cppu::OWeakObject,
171                                   public SfxListener
172 {
173 private:
174     SfxItemPropertySet  maPropSet;
175     ScDocShell*         pDocShell;
176 
177 public:
178                             ScDataPilotDescriptorBase(ScDocShell* pDocSh);
179     virtual                 ~ScDataPilotDescriptorBase();
180 
181     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
182                                 const ::com::sun::star::uno::Type & rType )
183                                     throw(::com::sun::star::uno::RuntimeException);
184     virtual void SAL_CALL   acquire() throw();
185     virtual void SAL_CALL   release() throw();
186 
187     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
188 
GetDocShell() const189     ScDocShell*             GetDocShell() const     { return pDocShell; }
190 
191                             // in den Ableitungen:
192     virtual ScDPObject* GetDPObject() const = 0;
193     virtual void SetDPObject(ScDPObject* pDPObj) = 0;
194 
195                             // XDataPilotDescriptor
196                             //  getName, setName, getTag, setTag in derived classes
197 
198     virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getSourceRange()
199                                 throw(::com::sun::star::uno::RuntimeException);
200     virtual void SAL_CALL setSourceRange( const ::com::sun::star::table::CellRangeAddress& aSourceRange )
201                                 throw(::com::sun::star::uno::RuntimeException);
202     virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
203                             getFilterDescriptor() throw(::com::sun::star::uno::RuntimeException);
204     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
205                             getDataPilotFields() throw(::com::sun::star::uno::RuntimeException);
206     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
207                             getColumnFields() throw(::com::sun::star::uno::RuntimeException);
208     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
209                             getRowFields() throw(::com::sun::star::uno::RuntimeException);
210     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
211                             getPageFields() throw(::com::sun::star::uno::RuntimeException);
212     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
213                             getDataFields() throw(::com::sun::star::uno::RuntimeException);
214     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
215                             getHiddenFields() throw(::com::sun::star::uno::RuntimeException);
216 
217                             // XPropertySet
218     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
219                             SAL_CALL getPropertySetInfo(  )
220                                 throw(::com::sun::star::uno::RuntimeException);
221     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
222                                     const ::com::sun::star::uno::Any& aValue )
223                                 throw(::com::sun::star::beans::UnknownPropertyException,
224                                     ::com::sun::star::beans::PropertyVetoException,
225                                     ::com::sun::star::lang::IllegalArgumentException,
226                                     ::com::sun::star::lang::WrappedTargetException,
227                                     ::com::sun::star::uno::RuntimeException);
228     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
229                                     const ::rtl::OUString& PropertyName )
230                                 throw(::com::sun::star::beans::UnknownPropertyException,
231                                     ::com::sun::star::lang::WrappedTargetException,
232                                     ::com::sun::star::uno::RuntimeException);
233     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
234                                     const ::com::sun::star::uno::Reference<
235                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener )
236                                 throw(::com::sun::star::beans::UnknownPropertyException,
237                                     ::com::sun::star::lang::WrappedTargetException,
238                                     ::com::sun::star::uno::RuntimeException);
239     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
240                                     const ::com::sun::star::uno::Reference<
241                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener )
242                                 throw(::com::sun::star::beans::UnknownPropertyException,
243                                     ::com::sun::star::lang::WrappedTargetException,
244                                     ::com::sun::star::uno::RuntimeException);
245     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
246                                     const ::com::sun::star::uno::Reference<
247                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
248                                 throw(::com::sun::star::beans::UnknownPropertyException,
249                                     ::com::sun::star::lang::WrappedTargetException,
250                                     ::com::sun::star::uno::RuntimeException);
251     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
252                                     const ::com::sun::star::uno::Reference<
253                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
254                                 throw(::com::sun::star::beans::UnknownPropertyException,
255                                     ::com::sun::star::lang::WrappedTargetException,
256                                     ::com::sun::star::uno::RuntimeException);
257 
258                             // XDataPilotDataLayoutFieldSupplier
259     virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotField >
260                             SAL_CALL getDataLayoutField()
261                                 throw(::com::sun::star::uno::RuntimeException);
262 
263                             // XUnoTunnel
264     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
265                                     sal_Int8 >& aIdentifier )
266                                 throw(::com::sun::star::uno::RuntimeException);
267 
268     static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
269     static ScDataPilotDescriptorBase* getImplementation( const com::sun::star::uno::Reference<
270                                     com::sun::star::sheet::XDataPilotDescriptor> xObj );
271 
272                             // XTypeProvider (overloaded in ScDataPilotTableObj)
273     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
274                                 throw(::com::sun::star::uno::RuntimeException);
275     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
276                                 throw(::com::sun::star::uno::RuntimeException);
277 
278                             // XServiceInfo is in derived classes
279 };
280 
281 // ============================================================================
282 
283 class ScDataPilotDescriptor : public ScDataPilotDescriptorBase
284 {
285 private:
286     ScDPObject*             mpDPObject;
287 
288 public:
289                             ScDataPilotDescriptor(ScDocShell* pDocSh);
290     virtual                 ~ScDataPilotDescriptor();
291 
292     virtual ScDPObject* GetDPObject() const;
293     virtual void SetDPObject(ScDPObject* pDPObj);
294 
295                             // rest of XDataPilotDescriptor (incl. XNamed)
296     virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
297     virtual void SAL_CALL   setName( const ::rtl::OUString& aName )
298                                 throw(::com::sun::star::uno::RuntimeException);
299     virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException);
300     virtual void SAL_CALL   setTag( const ::rtl::OUString& aTag )
301                                 throw(::com::sun::star::uno::RuntimeException);
302 
303                             // XServiceInfo
304     virtual ::rtl::OUString SAL_CALL getImplementationName()
305                                 throw(::com::sun::star::uno::RuntimeException);
306     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
307                                 throw(::com::sun::star::uno::RuntimeException);
308     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
309                                 throw(::com::sun::star::uno::RuntimeException);
310 };
311 
312 // ============================================================================
313 
314 class ScDataPilotTableObj : public ScDataPilotDescriptorBase,
315                             public com::sun::star::sheet::XDataPilotTable2,
316                             public com::sun::star::util::XModifyBroadcaster
317 {
318 private:
319     SCTAB                   nTab;
320     String                  aName;
321     XModifyListenerArr_Impl aModifyListeners;
322 
323     void                    Refreshed_Impl();
324 
325 public:
326                             ScDataPilotTableObj(ScDocShell* pDocSh, SCTAB nT, const String& rN);
327     virtual                 ~ScDataPilotTableObj();
328 
329     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
330                                 const ::com::sun::star::uno::Type & rType )
331                                     throw(::com::sun::star::uno::RuntimeException);
332     virtual void SAL_CALL   acquire() throw();
333     virtual void SAL_CALL   release() throw();
334 
335     virtual void            Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
336 
337     virtual ScDPObject* GetDPObject() const;
338     virtual void SetDPObject(ScDPObject* pDPObj);
339 
340                             // rest of XDataPilotDescriptor (incl. XNamed)
341     virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
342     virtual void SAL_CALL   setName( const ::rtl::OUString& aName )
343                                 throw(::com::sun::star::uno::RuntimeException);
344     virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException);
345     virtual void SAL_CALL   setTag( const ::rtl::OUString& aTag )
346                                 throw(::com::sun::star::uno::RuntimeException);
347 
348                             // XDataPilotTable
349     virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getOutputRange()
350                                 throw(::com::sun::star::uno::RuntimeException);
351     virtual void SAL_CALL   refresh() throw(::com::sun::star::uno::RuntimeException);
352 
353                             // XDataPilotTable2
354     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > >
355         SAL_CALL getDrillDownData(const ::com::sun::star::table::CellAddress& aAddr)
356                                 throw(::com::sun::star::uno::RuntimeException);
357 
358     virtual ::com::sun::star::sheet::DataPilotTablePositionData
359         SAL_CALL getPositionData(const ::com::sun::star::table::CellAddress& aAddr)
360                                 throw(::com::sun::star::uno::RuntimeException);
361 
362     virtual void SAL_CALL insertDrillDownSheet(const ::com::sun::star::table::CellAddress& aAddr)
363                                 throw(::com::sun::star::uno::RuntimeException);
364 
365     virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getOutputRangeByType( sal_Int32 nType )
366                                 throw(::com::sun::star::lang::IllegalArgumentException,
367                                       ::com::sun::star::uno::RuntimeException);
368 
369                             // XModifyBroadcaster
370     virtual void SAL_CALL   addModifyListener( const ::com::sun::star::uno::Reference<
371                                                 ::com::sun::star::util::XModifyListener >& aListener )
372                                 throw (::com::sun::star::uno::RuntimeException);
373     virtual void SAL_CALL   removeModifyListener( const ::com::sun::star::uno::Reference<
374                                                 ::com::sun::star::util::XModifyListener >& aListener )
375                                 throw (::com::sun::star::uno::RuntimeException);
376 
377                             // XTypeProvider (overloaded)
378     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
379                                 throw(::com::sun::star::uno::RuntimeException);
380     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
381                                 throw(::com::sun::star::uno::RuntimeException);
382 
383                             // XServiceInfo
384     virtual ::rtl::OUString SAL_CALL getImplementationName()
385                                 throw(::com::sun::star::uno::RuntimeException);
386     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
387                                 throw(::com::sun::star::uno::RuntimeException);
388     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
389                                 throw(::com::sun::star::uno::RuntimeException);
390 };
391 
392 // ============================================================================
393 
394 struct ScFieldIdentifier
395 {
396     ::rtl::OUString     maFieldName;    /// Source field name.
397     sal_Int32           mnFieldIdx;     /// Field index (if several fields with same name exist).
398     bool                mbDataLayout;   /// True = data layout field collecting all data fields as items.
399 
ScFieldIdentifierScFieldIdentifier400     inline explicit     ScFieldIdentifier() :
401                             mnFieldIdx( 0 ), mbDataLayout( false ) {}
402 
ScFieldIdentifierScFieldIdentifier403     inline explicit     ScFieldIdentifier( const ::rtl::OUString& rFieldName, sal_Int32 nFieldIdx, bool bDataLayout ) :
404                             maFieldName( rFieldName ), mnFieldIdx( nFieldIdx ), mbDataLayout( bDataLayout ) {}
405 };
406 
407 // ============================================================================
408 
409 /** Base class of all implementation objects based on a DataPilot descriptor
410     or DataPilot table object. Wraps acquiring and releasing the parent. */
411 class ScDataPilotChildObjBase
412 {
413 protected:
414     explicit            ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent );
415     explicit            ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent, const ScFieldIdentifier& rFieldId );
416     virtual             ~ScDataPilotChildObjBase();
417 
418     /** Returns the wrapped DataPilot object (calls GetDPObject() at parent). */
419     ScDPObject*         GetDPObject() const;
420     /** Sets the passed DataPilot object (calls SetDPObject() at parent). */
421     void                SetDPObject( ScDPObject* pDPObject );
422 
423     /** Returns the DataPilot dimension object related to the field described by maFieldId. */
424     ScDPSaveDimension*  GetDPDimension( ScDPObject** ppDPObject = 0 ) const;
425 
426     /** Returns the number of members for the field described by maFieldId. */
427     sal_Int32           GetMemberCount() const;
428     /** Returns the collection of members for the field described by maFieldId. */
429     ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
430                         GetMembers() const;
431 
432 protected:
433     ScDataPilotDescriptorBase& mrParent;
434     ScFieldIdentifier   maFieldId;
435 
436 private:
437     ScDataPilotChildObjBase& operator=( const ScDataPilotChildObjBase& );
438 };
439 
440 // ============================================================================
441 
442 typedef ::cppu::WeakImplHelper4
443 <
444     ::com::sun::star::container::XEnumerationAccess,
445     ::com::sun::star::container::XIndexAccess,
446     ::com::sun::star::container::XNameAccess,
447     ::com::sun::star::lang::XServiceInfo
448 >
449 ScDataPilotFieldsObjImpl;
450 
451 /** Collection of all DataPilot fields, or of all fields from a specific dimension. */
452 class ScDataPilotFieldsObj : public ScDataPilotChildObjBase, public ScDataPilotFieldsObjImpl
453 {
454 public:
455     explicit            ScDataPilotFieldsObj(
456                             ScDataPilotDescriptorBase& rParent );
457 
458     explicit            ScDataPilotFieldsObj(
459                             ScDataPilotDescriptorBase& rParent,
460                             ::com::sun::star::sheet::DataPilotFieldOrientation eOrient );
461 
462     virtual             ~ScDataPilotFieldsObj();
463 
464                             // XNameAccess
465     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
466                                 throw(::com::sun::star::container::NoSuchElementException,
467                                     ::com::sun::star::lang::WrappedTargetException,
468                                     ::com::sun::star::uno::RuntimeException);
469     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
470                                 throw(::com::sun::star::uno::RuntimeException);
471     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
472                                 throw(::com::sun::star::uno::RuntimeException);
473 
474                             // XIndexAccess
475     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
476     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
477                                 throw(::com::sun::star::lang::IndexOutOfBoundsException,
478                                     ::com::sun::star::lang::WrappedTargetException,
479                                     ::com::sun::star::uno::RuntimeException);
480 
481                             // XEnumerationAccess
482     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
483                             createEnumeration() throw(::com::sun::star::uno::RuntimeException);
484 
485                             // XElementAccess
486     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
487                                 throw(::com::sun::star::uno::RuntimeException);
488     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
489 
490                             // XServiceInfo
491     virtual ::rtl::OUString SAL_CALL getImplementationName()
492                                 throw(::com::sun::star::uno::RuntimeException);
493     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
494                                 throw(::com::sun::star::uno::RuntimeException);
495     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
496                                 throw(::com::sun::star::uno::RuntimeException);
497 
498 private:
499     ScDataPilotFieldObj*    GetObjectByIndex_Impl( sal_Int32 nIndex ) const;
500     ScDataPilotFieldObj*    GetObjectByName_Impl( const ::rtl::OUString& rName ) const;
501 
502 private:
503     ::com::sun::star::uno::Any maOrient;    /// Field orientation, no value = all fields.
504 };
505 
506 // ============================================================================
507 
508 typedef ::cppu::WeakImplHelper5
509 <
510     ::com::sun::star::container::XNamed,
511     ::com::sun::star::beans::XPropertySet,
512     ::com::sun::star::sheet::XDataPilotField,
513     ::com::sun::star::sheet::XDataPilotFieldGrouping,
514     ::com::sun::star::lang::XServiceInfo
515 >
516 ScDataPilotFieldObjImpl;
517 
518 /** Implementation of a single DataPilot field. */
519 class ScDataPilotFieldObj : public ScDataPilotChildObjBase, public ScDataPilotFieldObjImpl
520 {
521 public:
522                         ScDataPilotFieldObj(
523                             ScDataPilotDescriptorBase& rParent,
524                             const ScFieldIdentifier& rIdent );
525 
526                         ScDataPilotFieldObj(
527                             ScDataPilotDescriptorBase& rParent,
528                             const ScFieldIdentifier& rIdent,
529                             const ::com::sun::star::uno::Any& rOrient );
530 
531     virtual             ~ScDataPilotFieldObj();
532 
533                             // XNamed
534     virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
535     virtual void SAL_CALL   setName( const ::rtl::OUString& aName )
536                                 throw(::com::sun::star::uno::RuntimeException);
537 
538                             // XPropertySet
539     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
540                             SAL_CALL getPropertySetInfo(  )
541                                 throw(::com::sun::star::uno::RuntimeException);
542     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
543                                     const ::com::sun::star::uno::Any& aValue )
544                                 throw(::com::sun::star::beans::UnknownPropertyException,
545                                     ::com::sun::star::beans::PropertyVetoException,
546                                     ::com::sun::star::lang::IllegalArgumentException,
547                                     ::com::sun::star::lang::WrappedTargetException,
548                                     ::com::sun::star::uno::RuntimeException);
549     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
550                                     const ::rtl::OUString& PropertyName )
551                                 throw(::com::sun::star::beans::UnknownPropertyException,
552                                     ::com::sun::star::lang::WrappedTargetException,
553                                     ::com::sun::star::uno::RuntimeException);
554     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
555                                     const ::com::sun::star::uno::Reference<
556                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener )
557                                 throw(::com::sun::star::beans::UnknownPropertyException,
558                                     ::com::sun::star::lang::WrappedTargetException,
559                                     ::com::sun::star::uno::RuntimeException);
560     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
561                                     const ::com::sun::star::uno::Reference<
562                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener )
563                                 throw(::com::sun::star::beans::UnknownPropertyException,
564                                     ::com::sun::star::lang::WrappedTargetException,
565                                     ::com::sun::star::uno::RuntimeException);
566     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
567                                     const ::com::sun::star::uno::Reference<
568                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
569                                 throw(::com::sun::star::beans::UnknownPropertyException,
570                                     ::com::sun::star::lang::WrappedTargetException,
571                                     ::com::sun::star::uno::RuntimeException);
572     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
573                                     const ::com::sun::star::uno::Reference<
574                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
575                                 throw(::com::sun::star::beans::UnknownPropertyException,
576                                     ::com::sun::star::lang::WrappedTargetException,
577                                     ::com::sun::star::uno::RuntimeException);
578 
579                             // XDatePilotField
580     virtual com::sun::star::uno::Reference<com::sun::star::container::XIndexAccess> SAL_CALL
581                                 getItems() throw (::com::sun::star::uno::RuntimeException);
582 
583                             // nur noch aus Property-Funktionen gerufen:
584     com::sun::star::sheet::DataPilotFieldOrientation getOrientation(void) const;
585     void setOrientation(com::sun::star::sheet::DataPilotFieldOrientation Orientation);
586     com::sun::star::sheet::GeneralFunction getFunction(void) const;
587     void setFunction(com::sun::star::sheet::GeneralFunction Function);
588     com::sun::star::uno::Sequence< com::sun::star::sheet::GeneralFunction > getSubtotals() const;
589     void setSubtotals(const com::sun::star::uno::Sequence< com::sun::star::sheet::GeneralFunction >& rFunctions);
590     rtl::OUString getCurrentPage() const;
591     void setCurrentPage(const rtl::OUString& sPage);
592     sal_Bool getUseCurrentPage() const;
593     void setUseCurrentPage(sal_Bool bUse);
594     const com::sun::star::sheet::DataPilotFieldAutoShowInfo* getAutoShowInfo();
595     void setAutoShowInfo(const com::sun::star::sheet::DataPilotFieldAutoShowInfo* pInfo);
596     const com::sun::star::sheet::DataPilotFieldLayoutInfo* getLayoutInfo();
597     void setLayoutInfo(const com::sun::star::sheet::DataPilotFieldLayoutInfo* pInfo);
598     const com::sun::star::sheet::DataPilotFieldReference* getReference();
599     void setReference(const com::sun::star::sheet::DataPilotFieldReference* pInfo);
600     const com::sun::star::sheet::DataPilotFieldSortInfo* getSortInfo();
601     void setSortInfo(const com::sun::star::sheet::DataPilotFieldSortInfo* pInfo);
602     sal_Bool getShowEmpty() const;
603     void setShowEmpty(sal_Bool bShow);
604 
605     sal_Bool hasGroupInfo();
606     com::sun::star::sheet::DataPilotFieldGroupInfo getGroupInfo();
607     void setGroupInfo(const com::sun::star::sheet::DataPilotFieldGroupInfo* pInfo);
608 
609                             // XDataPilotFieldGrouping
610     sal_Bool HasString(const com::sun::star::uno::Sequence< ::rtl::OUString >& aItems, const ::rtl::OUString& aString);
611     virtual com::sun::star::uno::Reference < com::sun::star::sheet::XDataPilotField > SAL_CALL
612         createNameGroup(const com::sun::star::uno::Sequence< ::rtl::OUString >& aItems)
613              throw (::com::sun::star::uno::RuntimeException,
614                     ::com::sun::star::lang::IllegalArgumentException);
615     virtual com::sun::star::uno::Reference < com::sun::star::sheet::XDataPilotField > SAL_CALL
616         createDateGroup(const com::sun::star::sheet::DataPilotFieldGroupInfo& rInfo)
617              throw (::com::sun::star::uno::RuntimeException,
618                     ::com::sun::star::lang::IllegalArgumentException);
619 
620                             // XServiceInfo
621     virtual ::rtl::OUString SAL_CALL getImplementationName()
622                                 throw(::com::sun::star::uno::RuntimeException);
623     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
624                                 throw(::com::sun::star::uno::RuntimeException);
625     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
626                                 throw(::com::sun::star::uno::RuntimeException);
627 
628 private:
629     ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >
630                         mxItems;
631     SfxItemPropertySet  maPropSet;
632     ::com::sun::star::uno::Any maOrient;
633 };
634 
635 // ============================================================================
636 
637 typedef ::std::vector< ::rtl::OUString > ScFieldGroupMembers;
638 
639 struct ScFieldGroup
640 {
641     ::rtl::OUString     maName;
642     ScFieldGroupMembers maMembers;
643 };
644 
645 typedef ::std::vector< ScFieldGroup > ScFieldGroups;
646 
647 // ============================================================================
648 
649 typedef ::cppu::WeakImplHelper4
650 <
651     ::com::sun::star::container::XNameContainer,
652     ::com::sun::star::container::XEnumerationAccess,
653     ::com::sun::star::container::XIndexAccess,
654     ::com::sun::star::lang::XServiceInfo
655 >
656 ScDataPilotFieldGroupsObjImpl;
657 
658 /** Implementation of all grouped items in a DataPilot field.
659 
660     This is a stand-alone object without any connection to the base DataPilot
661     field. Grouping info has to be written back with the GroupInfo property of
662     the DataPilot field after modifying this object.
663  */
664 class ScDataPilotFieldGroupsObj : public ScDataPilotFieldGroupsObjImpl
665 {
666 public:
667     explicit            ScDataPilotFieldGroupsObj( const ScFieldGroups& rGroups );
668     virtual             ~ScDataPilotFieldGroupsObj();
669 
670                             // XNameAccess
671     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
672                                 throw(::com::sun::star::container::NoSuchElementException,
673                                     ::com::sun::star::lang::WrappedTargetException,
674                                     ::com::sun::star::uno::RuntimeException);
675     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
676                                 throw(::com::sun::star::uno::RuntimeException);
677     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
678                                 throw(::com::sun::star::uno::RuntimeException);
679 
680                                 // XNameReplace
681     virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
682                                 const ::com::sun::star::uno::Any& aElement )
683                                 throw (::com::sun::star::lang::IllegalArgumentException,
684                                     ::com::sun::star::container::NoSuchElementException,
685                                     ::com::sun::star::lang::WrappedTargetException,
686                                     ::com::sun::star::uno::RuntimeException);
687 
688                             // XNameContainer
689     virtual void SAL_CALL insertByName( const ::rtl::OUString& aName,
690                                 const ::com::sun::star::uno::Any& aElement )
691                                 throw (::com::sun::star::lang::IllegalArgumentException,
692                                     ::com::sun::star::container::ElementExistException,
693                                     ::com::sun::star::lang::WrappedTargetException,
694                                     ::com::sun::star::uno::RuntimeException);
695     virtual void SAL_CALL removeByName( const ::rtl::OUString& Name )
696                                 throw (::com::sun::star::container::NoSuchElementException,
697                                     ::com::sun::star::lang::WrappedTargetException,
698                                     ::com::sun::star::uno::RuntimeException);
699 
700                         // XIndexAccess
701     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
702     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
703                                 throw(::com::sun::star::lang::IndexOutOfBoundsException,
704                                     ::com::sun::star::lang::WrappedTargetException,
705                                     ::com::sun::star::uno::RuntimeException);
706 
707                             // XEnumerationAccess
708     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
709                             createEnumeration() throw(::com::sun::star::uno::RuntimeException);
710 
711                             // XElementAccess
712     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
713                                 throw(::com::sun::star::uno::RuntimeException);
714     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
715 
716                             // XServiceInfo
717     virtual ::rtl::OUString SAL_CALL getImplementationName()
718                                 throw(::com::sun::star::uno::RuntimeException);
719     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
720                                 throw(::com::sun::star::uno::RuntimeException);
721     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
722                                 throw(::com::sun::star::uno::RuntimeException);
723 
724     // implementation
725     ScFieldGroup&       getFieldGroup( const ::rtl::OUString& rName ) throw(::com::sun::star::uno::RuntimeException);
726     void                renameFieldGroup( const ::rtl::OUString& rOldName, const ::rtl::OUString& rNewName ) throw(::com::sun::star::uno::RuntimeException);
727 
728 private:
729     ScFieldGroups::iterator implFindByName( const ::rtl::OUString& rName );
730 
731 private:
732     ScFieldGroups       maGroups;
733 };
734 
735 // ============================================================================
736 
737 typedef ::cppu::WeakImplHelper5
738 <
739     ::com::sun::star::container::XNameContainer,
740     ::com::sun::star::container::XEnumerationAccess,
741     ::com::sun::star::container::XIndexAccess,
742     ::com::sun::star::container::XNamed,
743     ::com::sun::star::lang::XServiceInfo
744 >
745 ScDataPilotFieldGroupObjImpl;
746 
747 class ScDataPilotFieldGroupObj : public ScDataPilotFieldGroupObjImpl
748 {
749 public:
750     explicit            ScDataPilotFieldGroupObj( ScDataPilotFieldGroupsObj& rParent, const ::rtl::OUString& rGroupName );
751     virtual             ~ScDataPilotFieldGroupObj();
752 
753                             // XNameAccess
754     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
755                                 throw(::com::sun::star::container::NoSuchElementException,
756                                     ::com::sun::star::lang::WrappedTargetException,
757                                     ::com::sun::star::uno::RuntimeException);
758     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
759                                 throw(::com::sun::star::uno::RuntimeException);
760     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
761                                 throw(::com::sun::star::uno::RuntimeException);
762 
763                                 // XNameReplace
764     virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
765                                 const ::com::sun::star::uno::Any& aElement )
766                                 throw (::com::sun::star::lang::IllegalArgumentException,
767                                     ::com::sun::star::container::NoSuchElementException,
768                                     ::com::sun::star::lang::WrappedTargetException,
769                                     ::com::sun::star::uno::RuntimeException);
770 
771                                 // XNameContainer
772     virtual void SAL_CALL insertByName( const ::rtl::OUString& aName,
773                                 const ::com::sun::star::uno::Any& aElement )
774                                 throw (::com::sun::star::lang::IllegalArgumentException,
775                                     ::com::sun::star::container::ElementExistException,
776                                     ::com::sun::star::lang::WrappedTargetException,
777                                     ::com::sun::star::uno::RuntimeException);
778     virtual void SAL_CALL removeByName( const ::rtl::OUString& Name )
779                                 throw (::com::sun::star::container::NoSuchElementException,
780                                     ::com::sun::star::lang::WrappedTargetException,
781                                     ::com::sun::star::uno::RuntimeException);
782 
783                     // XIndexAccess
784     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
785     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
786                                 throw(::com::sun::star::lang::IndexOutOfBoundsException,
787                                     ::com::sun::star::lang::WrappedTargetException,
788                                     ::com::sun::star::uno::RuntimeException);
789 
790                             // XEnumerationAccess
791     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
792                             createEnumeration() throw(::com::sun::star::uno::RuntimeException);
793 
794                             // XElementAccess
795     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
796                                 throw(::com::sun::star::uno::RuntimeException);
797     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
798 
799                             // XNamed
800     virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
801     virtual void SAL_CALL   setName( const ::rtl::OUString& aName )
802                                 throw(::com::sun::star::uno::RuntimeException);
803 
804                             // XServiceInfo
805     virtual ::rtl::OUString SAL_CALL getImplementationName()
806                                 throw(::com::sun::star::uno::RuntimeException);
807     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
808                                 throw(::com::sun::star::uno::RuntimeException);
809     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
810                                 throw(::com::sun::star::uno::RuntimeException);
811 
812 private:
813     ScDataPilotFieldGroupsObj& mrParent;
814     ::rtl::OUString     maGroupName;
815 };
816 
817 // ============================================================================
818 
819 typedef ::cppu::WeakImplHelper2
820 <
821     ::com::sun::star::container::XNamed,
822     ::com::sun::star::lang::XServiceInfo
823 >
824 ScDataPilotFieldGroupItemObjImpl;
825 
826 class ScDataPilotFieldGroupItemObj : public ScDataPilotFieldGroupItemObjImpl
827 {
828 public:
829     explicit            ScDataPilotFieldGroupItemObj( ScDataPilotFieldGroupObj& rParent, const ::rtl::OUString& rName );
830     virtual             ~ScDataPilotFieldGroupItemObj();
831 
832                             // XNamed
833     virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
834     virtual void SAL_CALL   setName( const ::rtl::OUString& aName )
835                                 throw(::com::sun::star::uno::RuntimeException);
836 
837                             // XServiceInfo
838     virtual ::rtl::OUString SAL_CALL getImplementationName()
839                                 throw(::com::sun::star::uno::RuntimeException);
840     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
841                                 throw(::com::sun::star::uno::RuntimeException);
842     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
843                                 throw(::com::sun::star::uno::RuntimeException);
844 
845 private:
846     ScDataPilotFieldGroupObj& mrParent;
847     ::rtl::OUString     maName;
848 };
849 
850 // ============================================================================
851 
852 typedef ::cppu::WeakImplHelper4
853 <
854     ::com::sun::star::container::XEnumerationAccess,
855     ::com::sun::star::container::XIndexAccess,
856     ::com::sun::star::container::XNameAccess,
857     ::com::sun::star::lang::XServiceInfo
858 >
859 ScDataPilotItemsObjImpl;
860 
861 class ScDataPilotItemsObj : public ScDataPilotChildObjBase, public ScDataPilotItemsObjImpl
862 {
863 public:
864     explicit            ScDataPilotItemsObj( ScDataPilotDescriptorBase& rParent, const ScFieldIdentifier& rFieldId );
865     virtual             ~ScDataPilotItemsObj();
866 
867                             // XNameAccess
868     virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
869                                 throw(::com::sun::star::container::NoSuchElementException,
870                                     ::com::sun::star::lang::WrappedTargetException,
871                                     ::com::sun::star::uno::RuntimeException);
872     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
873                                 throw(::com::sun::star::uno::RuntimeException);
874     virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
875                                 throw(::com::sun::star::uno::RuntimeException);
876 
877                             // XIndexAccess
878     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
879     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
880                                 throw(::com::sun::star::lang::IndexOutOfBoundsException,
881                                     ::com::sun::star::lang::WrappedTargetException,
882                                     ::com::sun::star::uno::RuntimeException);
883 
884                             // XEnumerationAccess
885     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
886                             createEnumeration() throw(::com::sun::star::uno::RuntimeException);
887 
888                             // XElementAccess
889     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
890                                 throw(::com::sun::star::uno::RuntimeException);
891     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
892 
893                             // XServiceInfo
894     virtual ::rtl::OUString SAL_CALL getImplementationName()
895                                 throw(::com::sun::star::uno::RuntimeException);
896     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
897                                 throw(::com::sun::star::uno::RuntimeException);
898     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
899                                 throw(::com::sun::star::uno::RuntimeException);
900 
901 private:
902     ScDataPilotItemObj* GetObjectByIndex_Impl( sal_Int32 nIndex ) const;
903 };
904 
905 // ============================================================================
906 
907 typedef ::cppu::WeakImplHelper3
908 <
909     ::com::sun::star::container::XNamed,
910     ::com::sun::star::beans::XPropertySet,
911     ::com::sun::star::lang::XServiceInfo
912 >
913 ScDataPilotItemObjImpl;
914 
915 class ScDataPilotItemObj : public ScDataPilotChildObjBase, public ScDataPilotItemObjImpl
916 {
917 public:
918     explicit            ScDataPilotItemObj(
919                             ScDataPilotDescriptorBase& rParent,
920                             const ScFieldIdentifier& rFieldId,
921                             sal_Int32 nIndex );
922 
923     virtual             ~ScDataPilotItemObj();
924 
925                             // XNamed
926     virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
927     virtual void SAL_CALL   setName( const ::rtl::OUString& aName )
928                                 throw(::com::sun::star::uno::RuntimeException);
929 
930                             // XPropertySet
931     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
932                             SAL_CALL getPropertySetInfo(  )
933                                 throw(::com::sun::star::uno::RuntimeException);
934     virtual void SAL_CALL   setPropertyValue( const ::rtl::OUString& aPropertyName,
935                                     const ::com::sun::star::uno::Any& aValue )
936                                 throw(::com::sun::star::beans::UnknownPropertyException,
937                                     ::com::sun::star::beans::PropertyVetoException,
938                                     ::com::sun::star::lang::IllegalArgumentException,
939                                     ::com::sun::star::lang::WrappedTargetException,
940                                     ::com::sun::star::uno::RuntimeException);
941     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
942                                     const ::rtl::OUString& PropertyName )
943                                 throw(::com::sun::star::beans::UnknownPropertyException,
944                                     ::com::sun::star::lang::WrappedTargetException,
945                                     ::com::sun::star::uno::RuntimeException);
946     virtual void SAL_CALL   addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
947                                     const ::com::sun::star::uno::Reference<
948                                         ::com::sun::star::beans::XPropertyChangeListener >& xListener )
949                                 throw(::com::sun::star::beans::UnknownPropertyException,
950                                     ::com::sun::star::lang::WrappedTargetException,
951                                     ::com::sun::star::uno::RuntimeException);
952     virtual void SAL_CALL   removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
953                                     const ::com::sun::star::uno::Reference<
954                                         ::com::sun::star::beans::XPropertyChangeListener >& aListener )
955                                 throw(::com::sun::star::beans::UnknownPropertyException,
956                                     ::com::sun::star::lang::WrappedTargetException,
957                                     ::com::sun::star::uno::RuntimeException);
958     virtual void SAL_CALL   addVetoableChangeListener( const ::rtl::OUString& PropertyName,
959                                     const ::com::sun::star::uno::Reference<
960                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
961                                 throw(::com::sun::star::beans::UnknownPropertyException,
962                                     ::com::sun::star::lang::WrappedTargetException,
963                                     ::com::sun::star::uno::RuntimeException);
964     virtual void SAL_CALL   removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
965                                     const ::com::sun::star::uno::Reference<
966                                         ::com::sun::star::beans::XVetoableChangeListener >& aListener )
967                                 throw(::com::sun::star::beans::UnknownPropertyException,
968                                     ::com::sun::star::lang::WrappedTargetException,
969                                     ::com::sun::star::uno::RuntimeException);
970 
971                             // XServiceInfo
972     virtual ::rtl::OUString SAL_CALL getImplementationName()
973                                 throw(::com::sun::star::uno::RuntimeException);
974     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
975                                 throw(::com::sun::star::uno::RuntimeException);
976     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
977                                 throw(::com::sun::star::uno::RuntimeException);
978 
979 private:
980     SfxItemPropertySet  maPropSet;
981     sal_Int32           mnIndex;
982 };
983 
984 // ============================================================================
985 
986 #endif
987 
988