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