xref: /aoo42x/main/sc/inc/dapiuno.hxx (revision 38d50f7b)
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