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