xref: /aoo42x/main/sc/inc/docuno.hxx (revision 38d50f7b)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef SC_DOCUNO_HXX
25 #define SC_DOCUNO_HXX
26 
27 #include "address.hxx"
28 #include <sfx2/sfxbasemodel.hxx>
29 #include <svl/lstner.hxx>
30 #include <svx/fmdmod.hxx>
31 #include <com/sun/star/view/XRenderable.hpp>
32 #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
33 #include <com/sun/star/document/XActionLockable.hpp>
34 #include <com/sun/star/document/XLinkTargetSupplier.hpp>
35 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
36 #include <com/sun/star/drawing/XDrawPages.hpp>
37 #include <com/sun/star/sheet/XGoalSeek.hpp>
38 #include <com/sun/star/sheet/XCalculatable.hpp>
39 #include <com/sun/star/sheet/XScenarios.hpp>
40 #include <com/sun/star/sheet/XConsolidatable.hpp>
41 #include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
42 #include <com/sun/star/sheet/XDocumentAuditing.hpp>
43 #include <com/sun/star/lang/XServiceInfo.hpp>
44 #include <com/sun/star/util/XProtectable.hpp>
45 #include <com/sun/star/container/XEnumerationAccess.hpp>
46 #include <com/sun/star/table/XTableColumns.hpp>
47 #include <com/sun/star/table/XTableRows.hpp>
48 #include <com/sun/star/sheet/XSheetAnnotations.hpp>
49 #include <com/sun/star/beans/XPropertySet.hpp>
50 #include <com/sun/star/sheet/XCellRangesAccess.hpp>
51 #include <com/sun/star/util/XChangesNotifier.hpp>
52 #include <cppuhelper/implbase2.hxx>
53 #include <cppuhelper/implbase3.hxx>
54 #include <cppuhelper/implbase4.hxx>
55 #include <cppuhelper/implbase5.hxx>
56 #include <cppuhelper/interfacecontainer.h>
57 #include <svl/itemprop.hxx>
58 #include "drwlayer.hxx"
59 
60 class ScDocShell;
61 class ScAnnotationObj;
62 class ScMarkData;
63 class ScPrintFuncCache;
64 class ScPrintSelectionStatus;
65 class ScTableColumnObj;
66 class ScTableRowObj;
67 class ScTableSheetObj;
68 class SvxFmDrawPage;
69 class SvxDrawPage;
70 class ScRangeList;
71 class ScPrintUIOptions;
72 class ScSheetSaveData;
73 
74 class SC_DLLPUBLIC ScModelObj : public SfxBaseModel,
75 					public com::sun::star::sheet::XSpreadsheetDocument,
76 					public com::sun::star::document::XActionLockable,
77 					public com::sun::star::sheet::XCalculatable,
78 					public com::sun::star::util::XProtectable,
79 					public com::sun::star::drawing::XDrawPagesSupplier,
80 					public com::sun::star::sheet::XGoalSeek,
81 					public com::sun::star::sheet::XConsolidatable,
82 					public com::sun::star::sheet::XDocumentAuditing,
83 					public com::sun::star::style::XStyleFamiliesSupplier,
84 					public com::sun::star::view::XRenderable,
85 					public com::sun::star::document::XLinkTargetSupplier,
86 					public com::sun::star::beans::XPropertySet,
87 					public SvxFmMSFactory,	// derived from XMultiServiceFactory
88                     public com::sun::star::lang::XServiceInfo,
89                     public ::com::sun::star::util::XChangesNotifier
90 {
91 private:
92 	SfxItemPropertySet		aPropSet;
93 	ScDocShell*				pDocShell;
94 	ScPrintFuncCache*		pPrintFuncCache;
95     ScPrintUIOptions*       pPrinterOptions;
96 	com::sun::star::uno::Reference<com::sun::star::uno::XAggregation> xNumberAgg;
97 	com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xDrawGradTab;
98 	com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xDrawHatchTab;
99 	com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xDrawBitmapTab;
100 	com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xDrawTrGradTab;
101 	com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xDrawMarkerTab;
102 	com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xDrawDashTab;
103     com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xChartDataProv;
104 	com::sun::star::uno::Reference<com::sun::star::uno::XInterface> xObjProvider;
105 
106     ::cppu::OInterfaceContainerHelper maChangesListeners;
107 
108 	sal_Bool					FillRenderMarkData( const com::sun::star::uno::Any& aSelection,
109                                                 const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rOptions,
110                                                 ScMarkData& rMark, ScPrintSelectionStatus& rStatus, String& rPagesStr ) const;
111     com::sun::star::uno::Reference<com::sun::star::uno::XAggregation> GetFormatter();
112     void                    HandleCalculateEvents();
113 
114 	rtl::OUString			maBuildId;
115 protected:
GetPropertySet() const116     const SfxItemPropertySet&   GetPropertySet() const { return aPropSet; }
117 
118 public:
119 							ScModelObj(ScDocShell* pDocSh);
120 	virtual					~ScModelObj();
121 
122 	//	create ScModelObj and set at pDocSh (SetBaseModel)
123 	static void				CreateAndSet(ScDocShell* pDocSh);
124 
125 	ScDocument*				GetDocument() const;
126     SfxObjectShell*         GetEmbeddedObject() const;
127 
128     void                    UpdateAllRowHeights( const ScMarkData* pTabMark = NULL, bool bCalcOutputFactor = false );
129 
130     void                    BeforeXMLLoading();
131     void                    AfterXMLLoading(sal_Bool bRet);
132     ScSheetSaveData*        GetSheetSaveData();
133 
134     void                    RepaintRange( const ScRange& rRange );
135 
136     bool                    HasChangesListeners() const;
137 
138     void                    NotifyChanges( const ::rtl::OUString& rOperation, const ScRangeList& rRanges,
139                                            const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rProperties =
140                                                ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >() );
141 
142 	virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
143 								const ::com::sun::star::uno::Type & rType )
144 									throw(::com::sun::star::uno::RuntimeException);
145 	virtual void SAL_CALL	acquire() throw();
146 	virtual void SAL_CALL	release() throw();
147 
148 //?	virtual UString			getClassName(void);
149 
150 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
151 
152 							// XSpreadsheetDocument
153 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheets > SAL_CALL
154 							getSheets() throw(::com::sun::star::uno::RuntimeException);
155 
156 								// XStyleFamiliesSupplier
157 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
158 							getStyleFamilies() throw(::com::sun::star::uno::RuntimeException);
159 
160 							// XRenderable
161 	virtual sal_Int32 SAL_CALL getRendererCount( const ::com::sun::star::uno::Any& aSelection,
162 									const ::com::sun::star::uno::Sequence<
163 										::com::sun::star::beans::PropertyValue >& xOptions )
164 								throw (::com::sun::star::lang::IllegalArgumentException,
165 										::com::sun::star::uno::RuntimeException);
166 	virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
167 							getRenderer( sal_Int32 nRenderer, const ::com::sun::star::uno::Any& aSelection,
168 									const ::com::sun::star::uno::Sequence<
169 										::com::sun::star::beans::PropertyValue >& xOptions )
170 								throw (::com::sun::star::lang::IllegalArgumentException,
171 										::com::sun::star::uno::RuntimeException);
172 	virtual void SAL_CALL	render( sal_Int32 nRenderer, const ::com::sun::star::uno::Any& aSelection,
173 									const ::com::sun::star::uno::Sequence<
174 										::com::sun::star::beans::PropertyValue >& xOptions )
175 								throw (::com::sun::star::lang::IllegalArgumentException,
176 										::com::sun::star::uno::RuntimeException);
177 
178 							// XLinkTargetSupplier
179 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
180 							getLinks() throw(::com::sun::star::uno::RuntimeException);
181 
182 							// XActionLockable
183 	virtual sal_Bool SAL_CALL isActionLocked() throw(::com::sun::star::uno::RuntimeException);
184 	virtual void SAL_CALL	addActionLock() throw(::com::sun::star::uno::RuntimeException);
185 	virtual void SAL_CALL	removeActionLock() throw(::com::sun::star::uno::RuntimeException);
186 	virtual void SAL_CALL	setActionLocks( sal_Int16 nLock )
187 								throw(::com::sun::star::uno::RuntimeException);
188 	virtual sal_Int16 SAL_CALL resetActionLocks() throw(::com::sun::star::uno::RuntimeException);
189 
190         virtual void SAL_CALL   lockControllers() throw (::com::sun::star::uno::RuntimeException);
191         virtual void SAL_CALL   unlockControllers() throw (::com::sun::star::uno::RuntimeException);
192 
193 								// XCalculatable
194 	virtual void SAL_CALL	calculate() throw(::com::sun::star::uno::RuntimeException);
195 	virtual void SAL_CALL	calculateAll() throw(::com::sun::star::uno::RuntimeException);
196 	virtual sal_Bool SAL_CALL isAutomaticCalculationEnabled()
197 								throw(::com::sun::star::uno::RuntimeException);
198 	virtual void SAL_CALL	enableAutomaticCalculation( sal_Bool bEnabled )
199 								throw(::com::sun::star::uno::RuntimeException);
200 
201 							// XProtectable
202 	virtual void SAL_CALL	protect( const ::rtl::OUString& aPassword )
203 								throw(::com::sun::star::uno::RuntimeException);
204 	virtual void SAL_CALL	unprotect( const ::rtl::OUString& aPassword )
205 								throw(::com::sun::star::lang::IllegalArgumentException,
206 									::com::sun::star::uno::RuntimeException);
207 	virtual sal_Bool SAL_CALL isProtected() throw(::com::sun::star::uno::RuntimeException);
208 
209 							//	XDrawPagesSupplier
210 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > SAL_CALL
211 							getDrawPages() throw(::com::sun::star::uno::RuntimeException);
212 
213 	//!	XPrintable??
214 
215 							//	XGoalSeek
216 	virtual ::com::sun::star::sheet::GoalResult SAL_CALL seekGoal(
217 								const ::com::sun::star::table::CellAddress& aFormulaPosition,
218 								const ::com::sun::star::table::CellAddress& aVariablePosition,
219 								const ::rtl::OUString& aGoalValue )
220 									throw(::com::sun::star::uno::RuntimeException);
221 
222 							//	XConsolidatable
223 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XConsolidationDescriptor >
224 							SAL_CALL createConsolidationDescriptor( sal_Bool bEmpty )
225 								throw(::com::sun::star::uno::RuntimeException);
226 	virtual void SAL_CALL consolidate( const ::com::sun::star::uno::Reference<
227 								::com::sun::star::sheet::XConsolidationDescriptor >& xDescriptor )
228 									throw(::com::sun::star::uno::RuntimeException);
229 
230 							//	XDocumentAuditing
231 	virtual void SAL_CALL	refreshArrows() throw(::com::sun::star::uno::RuntimeException);
232 
233                             //  XViewDataSupplier
234     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getViewData(  )
235                                 throw (::com::sun::star::uno::RuntimeException);
236 
237                             // XPropertySet
238 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
239 							SAL_CALL getPropertySetInfo()
240 								throw(::com::sun::star::uno::RuntimeException);
241 	virtual void SAL_CALL	setPropertyValue( const ::rtl::OUString& aPropertyName,
242 									const ::com::sun::star::uno::Any& aValue )
243 								throw(::com::sun::star::beans::UnknownPropertyException,
244 									::com::sun::star::beans::PropertyVetoException,
245 									::com::sun::star::lang::IllegalArgumentException,
246 									::com::sun::star::lang::WrappedTargetException,
247 									::com::sun::star::uno::RuntimeException);
248 	virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
249 									const ::rtl::OUString& PropertyName )
250 								throw(::com::sun::star::beans::UnknownPropertyException,
251 									::com::sun::star::lang::WrappedTargetException,
252 									::com::sun::star::uno::RuntimeException);
253 	virtual void SAL_CALL	addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
254 									const ::com::sun::star::uno::Reference<
255 										::com::sun::star::beans::XPropertyChangeListener >& xListener )
256 								throw(::com::sun::star::beans::UnknownPropertyException,
257 									::com::sun::star::lang::WrappedTargetException,
258 									::com::sun::star::uno::RuntimeException);
259 	virtual void SAL_CALL	removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
260 									const ::com::sun::star::uno::Reference<
261 										::com::sun::star::beans::XPropertyChangeListener >& aListener )
262 								throw(::com::sun::star::beans::UnknownPropertyException,
263 									::com::sun::star::lang::WrappedTargetException,
264 									::com::sun::star::uno::RuntimeException);
265 	virtual void SAL_CALL	addVetoableChangeListener( const ::rtl::OUString& PropertyName,
266 									const ::com::sun::star::uno::Reference<
267 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
268 								throw(::com::sun::star::beans::UnknownPropertyException,
269 									::com::sun::star::lang::WrappedTargetException,
270 									::com::sun::star::uno::RuntimeException);
271 	virtual void SAL_CALL	removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
272 									const ::com::sun::star::uno::Reference<
273 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
274 								throw(::com::sun::star::beans::UnknownPropertyException,
275 									::com::sun::star::lang::WrappedTargetException,
276 									::com::sun::star::uno::RuntimeException);
277 
278 							// XMultiServiceFactory
279 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
280 							createInstance( const ::rtl::OUString& aServiceSpecifier )
281 								throw(::com::sun::star::uno::Exception,
282 										::com::sun::star::uno::RuntimeException);
283 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
284 							createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier,
285 								const ::com::sun::star::uno::Sequence<
286 									::com::sun::star::uno::Any >& Arguments )
287 								throw(::com::sun::star::uno::Exception,
288 									::com::sun::star::uno::RuntimeException);
289 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames()
290 								throw(::com::sun::star::uno::RuntimeException);
291 
292 							// XServiceInfo
293 	virtual ::rtl::OUString SAL_CALL getImplementationName()
294 								throw(::com::sun::star::uno::RuntimeException);
295 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
296 								throw(::com::sun::star::uno::RuntimeException);
297 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
298 								throw(::com::sun::star::uno::RuntimeException);
299 
300 							// XUnoTunnel
301 	virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
302 									sal_Int8 >& aIdentifier )
303 								throw(::com::sun::star::uno::RuntimeException);
304 
305 	static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
306 	static ScModelObj* getImplementation( const com::sun::star::uno::Reference<
307 									com::sun::star::uno::XInterface> xObj );
308 
309 							// XTypeProvider
310 	virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
311 								throw(::com::sun::star::uno::RuntimeException);
312 	virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
313 								throw(::com::sun::star::uno::RuntimeException);
314 
315                             // XChangesNotifier
316     virtual void SAL_CALL addChangesListener( const ::com::sun::star::uno::Reference<
317                                     ::com::sun::star::util::XChangesListener >& aListener )
318                                 throw (::com::sun::star::uno::RuntimeException);
319     virtual void SAL_CALL removeChangesListener( const ::com::sun::star::uno::Reference<
320                                     ::com::sun::star::util::XChangesListener >& aListener )
321                                 throw (::com::sun::star::uno::RuntimeException);
322 };
323 
324 
325 class ScDrawPagesObj : public cppu::WeakImplHelper2<
326 								com::sun::star::drawing::XDrawPages,
327 								com::sun::star::lang::XServiceInfo>,
328 						public SfxListener
329 {
330 private:
331 	ScDocShell*				pDocShell;
332 
333 ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >
334 							GetObjectByIndex_Impl(sal_Int32 nIndex) const;
335 
336 public:
337 							ScDrawPagesObj(ScDocShell* pDocSh);
338 	virtual					~ScDrawPagesObj();
339 
340 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
341 
342 							// XDrawPages
343 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL
344 							insertNewByIndex( sal_Int32 nIndex )
345 								throw(::com::sun::star::uno::RuntimeException);
346 	virtual void SAL_CALL	remove( const ::com::sun::star::uno::Reference<
347 								::com::sun::star::drawing::XDrawPage >& xPage )
348 									throw(::com::sun::star::uno::RuntimeException);
349 
350 							// XIndexAccess
351 	virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
352 	virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
353 								throw(::com::sun::star::lang::IndexOutOfBoundsException,
354 									::com::sun::star::lang::WrappedTargetException,
355 									::com::sun::star::uno::RuntimeException);
356 
357 							// XElementAccess
358 	virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
359 								throw(::com::sun::star::uno::RuntimeException);
360 	virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
361 
362 							// XServiceInfo
363 	virtual ::rtl::OUString SAL_CALL getImplementationName()
364 								throw(::com::sun::star::uno::RuntimeException);
365 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
366 								throw(::com::sun::star::uno::RuntimeException);
367 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
368 								throw(::com::sun::star::uno::RuntimeException);
369 };
370 
371 
372 class ScTableSheetsObj : public cppu::WeakImplHelper5<
373 								com::sun::star::sheet::XSpreadsheets,
374                                 com::sun::star::sheet::XCellRangesAccess,
375 								com::sun::star::container::XEnumerationAccess,
376 								com::sun::star::container::XIndexAccess,
377 								com::sun::star::lang::XServiceInfo>,
378 						 public SfxListener
379 {
380 private:
381 	ScDocShell*				pDocShell;
382 
383 	ScTableSheetObj*		GetObjectByIndex_Impl(sal_Int32 nIndex) const;
384 	ScTableSheetObj*		GetObjectByName_Impl(const ::rtl::OUString& aName) const;
385 
386 public:
387 							ScTableSheetsObj(ScDocShell* pDocSh);
388 	virtual					~ScTableSheetsObj();
389 
390 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
391 
392 							// XSpreadsheets
393 	virtual void SAL_CALL	insertNewByName( const ::rtl::OUString& aName, sal_Int16 nPosition )
394 								throw(::com::sun::star::uno::RuntimeException);
395 	virtual void SAL_CALL	moveByName( const ::rtl::OUString& aName, sal_Int16 nDestination )
396 								throw(::com::sun::star::uno::RuntimeException);
397 	virtual void SAL_CALL	copyByName( const ::rtl::OUString& aName,
398 								const ::rtl::OUString& aCopy, sal_Int16 nDestination )
399 									throw(::com::sun::star::uno::RuntimeException);
400 
401                             // XCellRangesAccess
402 
403     virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell >
404         SAL_CALL getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow, sal_Int32 nSheet )
405         throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
406 
407     virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange >
408         SAL_CALL getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom, sal_Int32 nSheet )
409         throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
410 
411     virtual ::com::sun::star::uno::Sequence < ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > >
412         SAL_CALL getCellRangesByName( const ::rtl::OUString& aRange )
413         throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
414 
415 							// XNameContainer
416 	virtual void SAL_CALL	insertByName( const ::rtl::OUString& aName,
417 								const ::com::sun::star::uno::Any& aElement )
418 									throw(::com::sun::star::lang::IllegalArgumentException,
419 										::com::sun::star::container::ElementExistException,
420 										::com::sun::star::lang::WrappedTargetException,
421 										::com::sun::star::uno::RuntimeException);
422 	virtual void SAL_CALL	removeByName( const ::rtl::OUString& Name )
423 								throw(::com::sun::star::container::NoSuchElementException,
424 									::com::sun::star::lang::WrappedTargetException,
425 									::com::sun::star::uno::RuntimeException);
426 
427 							// XNameReplace
428 	virtual void SAL_CALL	replaceByName( const ::rtl::OUString& aName,
429 								const ::com::sun::star::uno::Any& aElement )
430 									throw(::com::sun::star::lang::IllegalArgumentException,
431 										::com::sun::star::container::NoSuchElementException,
432 										::com::sun::star::lang::WrappedTargetException,
433 										::com::sun::star::uno::RuntimeException);
434 
435 							// XEnumerationAccess
436 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
437 							createEnumeration() throw(::com::sun::star::uno::RuntimeException);
438 
439 							// XElementAccess
440 	virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
441 								throw(::com::sun::star::uno::RuntimeException);
442 	virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
443 
444 							// XIndexAccess
445 	virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
446 	virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
447 								throw(::com::sun::star::lang::IndexOutOfBoundsException,
448 									::com::sun::star::lang::WrappedTargetException,
449 									::com::sun::star::uno::RuntimeException);
450 
451 							// XNameAccess
452 	virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
453 								throw(::com::sun::star::container::NoSuchElementException,
454 									::com::sun::star::lang::WrappedTargetException,
455 									::com::sun::star::uno::RuntimeException);
456 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
457 								throw(::com::sun::star::uno::RuntimeException);
458 	virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
459 								throw(::com::sun::star::uno::RuntimeException);
460 
461 							// XServiceInfo
462 	virtual ::rtl::OUString SAL_CALL getImplementationName()
463 								throw(::com::sun::star::uno::RuntimeException);
464 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
465 								throw(::com::sun::star::uno::RuntimeException);
466 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
467 								throw(::com::sun::star::uno::RuntimeException);
468 };
469 
470 
471 class ScTableColumnsObj : public cppu::WeakImplHelper5<
472 								com::sun::star::table::XTableColumns,
473 								com::sun::star::container::XEnumerationAccess,
474 								com::sun::star::container::XNameAccess,
475 								com::sun::star::beans::XPropertySet,
476 								com::sun::star::lang::XServiceInfo>,
477 						  public SfxListener
478 {
479 private:
480 	ScDocShell*				pDocShell;
481 	SCTAB					nTab;
482 	SCCOL					nStartCol;
483 	SCCOL					nEndCol;
484 
485 	ScTableColumnObj*		GetObjectByIndex_Impl(sal_Int32 nIndex) const;
486 	ScTableColumnObj*		GetObjectByName_Impl(const ::rtl::OUString& aName) const;
487 
488 public:
489 							ScTableColumnsObj(ScDocShell* pDocSh, SCTAB nT,
490 												SCCOL nSC, SCCOL nEC);
491 	virtual					~ScTableColumnsObj();
492 
493 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
494 
495 							// XTableColumns
496 	virtual void SAL_CALL	insertByIndex( sal_Int32 nIndex, sal_Int32 nCount )
497 								throw(::com::sun::star::uno::RuntimeException);
498 	virtual void SAL_CALL	removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
499 								throw(::com::sun::star::uno::RuntimeException);
500 
501 							// XNameAccess
502 	virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
503 								throw(::com::sun::star::container::NoSuchElementException,
504 									::com::sun::star::lang::WrappedTargetException,
505 									::com::sun::star::uno::RuntimeException);
506 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
507 								throw(::com::sun::star::uno::RuntimeException);
508 	virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
509 								throw(::com::sun::star::uno::RuntimeException);
510 
511 							// XIndexAccess
512 	virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
513 	virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
514 								throw(::com::sun::star::lang::IndexOutOfBoundsException,
515 									::com::sun::star::lang::WrappedTargetException,
516 									::com::sun::star::uno::RuntimeException);
517 
518 							// XEnumerationAccess
519 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
520 							createEnumeration() throw(::com::sun::star::uno::RuntimeException);
521 
522 							// XElementAccess
523 	virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
524 								throw(::com::sun::star::uno::RuntimeException);
525 	virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
526 
527 							// XPropertySet
528 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
529 							SAL_CALL getPropertySetInfo()
530 								throw(::com::sun::star::uno::RuntimeException);
531 	virtual void SAL_CALL	setPropertyValue( const ::rtl::OUString& aPropertyName,
532 									const ::com::sun::star::uno::Any& aValue )
533 								throw(::com::sun::star::beans::UnknownPropertyException,
534 									::com::sun::star::beans::PropertyVetoException,
535 									::com::sun::star::lang::IllegalArgumentException,
536 									::com::sun::star::lang::WrappedTargetException,
537 									::com::sun::star::uno::RuntimeException);
538 	virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
539 									const ::rtl::OUString& PropertyName )
540 								throw(::com::sun::star::beans::UnknownPropertyException,
541 									::com::sun::star::lang::WrappedTargetException,
542 									::com::sun::star::uno::RuntimeException);
543 	virtual void SAL_CALL	addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
544 									const ::com::sun::star::uno::Reference<
545 										::com::sun::star::beans::XPropertyChangeListener >& xListener )
546 								throw(::com::sun::star::beans::UnknownPropertyException,
547 									::com::sun::star::lang::WrappedTargetException,
548 									::com::sun::star::uno::RuntimeException);
549 	virtual void SAL_CALL	removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
550 									const ::com::sun::star::uno::Reference<
551 										::com::sun::star::beans::XPropertyChangeListener >& aListener )
552 								throw(::com::sun::star::beans::UnknownPropertyException,
553 									::com::sun::star::lang::WrappedTargetException,
554 									::com::sun::star::uno::RuntimeException);
555 	virtual void SAL_CALL	addVetoableChangeListener( const ::rtl::OUString& PropertyName,
556 									const ::com::sun::star::uno::Reference<
557 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
558 								throw(::com::sun::star::beans::UnknownPropertyException,
559 									::com::sun::star::lang::WrappedTargetException,
560 									::com::sun::star::uno::RuntimeException);
561 	virtual void SAL_CALL	removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
562 									const ::com::sun::star::uno::Reference<
563 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
564 								throw(::com::sun::star::beans::UnknownPropertyException,
565 									::com::sun::star::lang::WrappedTargetException,
566 									::com::sun::star::uno::RuntimeException);
567 
568 							// XServiceInfo
569 	virtual ::rtl::OUString SAL_CALL getImplementationName()
570 								throw(::com::sun::star::uno::RuntimeException);
571 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
572 								throw(::com::sun::star::uno::RuntimeException);
573 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
574 								throw(::com::sun::star::uno::RuntimeException);
575 };
576 
577 
578 class ScTableRowsObj : public cppu::WeakImplHelper4<
579 								com::sun::star::table::XTableRows,
580 								com::sun::star::container::XEnumerationAccess,
581 								com::sun::star::beans::XPropertySet,
582 								com::sun::star::lang::XServiceInfo>,
583 						  public SfxListener
584 {
585 private:
586 	ScDocShell*				pDocShell;
587 	SCTAB					nTab;
588 	SCROW					nStartRow;
589 	SCROW					nEndRow;
590 
591 	ScTableRowObj*			GetObjectByIndex_Impl(sal_Int32 nIndex) const;
592 
593 public:
594 							ScTableRowsObj(ScDocShell* pDocSh, SCTAB nT,
595 												SCROW nSR, SCROW nER);
596 	virtual					~ScTableRowsObj();
597 
598 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
599 
600 							// XTableRows
601 	virtual void SAL_CALL	insertByIndex( sal_Int32 nIndex, sal_Int32 nCount )
602 								throw(::com::sun::star::uno::RuntimeException);
603 	virtual void SAL_CALL	removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
604 								throw(::com::sun::star::uno::RuntimeException);
605 
606 							// XIndexAccess
607 	virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
608 	virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
609 								throw(::com::sun::star::lang::IndexOutOfBoundsException,
610 									::com::sun::star::lang::WrappedTargetException,
611 									::com::sun::star::uno::RuntimeException);
612 
613 							// XEnumerationAccess
614 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
615 							createEnumeration() throw(::com::sun::star::uno::RuntimeException);
616 
617 							// XElementAccess
618 	virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
619 								throw(::com::sun::star::uno::RuntimeException);
620 	virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
621 
622 							// XPropertySet
623 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
624 							SAL_CALL getPropertySetInfo()
625 								throw(::com::sun::star::uno::RuntimeException);
626 	virtual void SAL_CALL	setPropertyValue( const ::rtl::OUString& aPropertyName,
627 									const ::com::sun::star::uno::Any& aValue )
628 								throw(::com::sun::star::beans::UnknownPropertyException,
629 									::com::sun::star::beans::PropertyVetoException,
630 									::com::sun::star::lang::IllegalArgumentException,
631 									::com::sun::star::lang::WrappedTargetException,
632 									::com::sun::star::uno::RuntimeException);
633 	virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
634 									const ::rtl::OUString& PropertyName )
635 								throw(::com::sun::star::beans::UnknownPropertyException,
636 									::com::sun::star::lang::WrappedTargetException,
637 									::com::sun::star::uno::RuntimeException);
638 	virtual void SAL_CALL	addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
639 									const ::com::sun::star::uno::Reference<
640 										::com::sun::star::beans::XPropertyChangeListener >& xListener )
641 								throw(::com::sun::star::beans::UnknownPropertyException,
642 									::com::sun::star::lang::WrappedTargetException,
643 									::com::sun::star::uno::RuntimeException);
644 	virtual void SAL_CALL	removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
645 									const ::com::sun::star::uno::Reference<
646 										::com::sun::star::beans::XPropertyChangeListener >& aListener )
647 								throw(::com::sun::star::beans::UnknownPropertyException,
648 									::com::sun::star::lang::WrappedTargetException,
649 									::com::sun::star::uno::RuntimeException);
650 	virtual void SAL_CALL	addVetoableChangeListener( const ::rtl::OUString& PropertyName,
651 									const ::com::sun::star::uno::Reference<
652 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
653 								throw(::com::sun::star::beans::UnknownPropertyException,
654 									::com::sun::star::lang::WrappedTargetException,
655 									::com::sun::star::uno::RuntimeException);
656 	virtual void SAL_CALL	removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
657 									const ::com::sun::star::uno::Reference<
658 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
659 								throw(::com::sun::star::beans::UnknownPropertyException,
660 									::com::sun::star::lang::WrappedTargetException,
661 									::com::sun::star::uno::RuntimeException);
662 
663 							// XServiceInfo
664 	virtual ::rtl::OUString SAL_CALL getImplementationName()
665 								throw(::com::sun::star::uno::RuntimeException);
666 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
667 								throw(::com::sun::star::uno::RuntimeException);
668 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
669 								throw(::com::sun::star::uno::RuntimeException);
670 };
671 
672 
673 class ScSpreadsheetSettingsObj : public cppu::WeakImplHelper2<
674 									com::sun::star::beans::XPropertySet,
675 									com::sun::star::lang::XServiceInfo>,
676 								 public SfxListener
677 {
678 private:
679 	ScDocShell*				pDocShell;
680 
681 public:
682 //UNUSED2008-05             ScSpreadsheetSettingsObj(ScDocShell* pDocSh);
683 	virtual					~ScSpreadsheetSettingsObj();
684 
685 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
686 
687 							// XPropertySet
688 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
689 							SAL_CALL getPropertySetInfo()
690 								throw(::com::sun::star::uno::RuntimeException);
691 	virtual void SAL_CALL	setPropertyValue( const ::rtl::OUString& aPropertyName,
692 									const ::com::sun::star::uno::Any& aValue )
693 								throw(::com::sun::star::beans::UnknownPropertyException,
694 									::com::sun::star::beans::PropertyVetoException,
695 									::com::sun::star::lang::IllegalArgumentException,
696 									::com::sun::star::lang::WrappedTargetException,
697 									::com::sun::star::uno::RuntimeException);
698 	virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
699 									const ::rtl::OUString& PropertyName )
700 								throw(::com::sun::star::beans::UnknownPropertyException,
701 									::com::sun::star::lang::WrappedTargetException,
702 									::com::sun::star::uno::RuntimeException);
703 	virtual void SAL_CALL	addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
704 									const ::com::sun::star::uno::Reference<
705 										::com::sun::star::beans::XPropertyChangeListener >& xListener )
706 								throw(::com::sun::star::beans::UnknownPropertyException,
707 									::com::sun::star::lang::WrappedTargetException,
708 									::com::sun::star::uno::RuntimeException);
709 	virtual void SAL_CALL	removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
710 									const ::com::sun::star::uno::Reference<
711 										::com::sun::star::beans::XPropertyChangeListener >& aListener )
712 								throw(::com::sun::star::beans::UnknownPropertyException,
713 									::com::sun::star::lang::WrappedTargetException,
714 									::com::sun::star::uno::RuntimeException);
715 	virtual void SAL_CALL	addVetoableChangeListener( const ::rtl::OUString& PropertyName,
716 									const ::com::sun::star::uno::Reference<
717 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
718 								throw(::com::sun::star::beans::UnknownPropertyException,
719 									::com::sun::star::lang::WrappedTargetException,
720 									::com::sun::star::uno::RuntimeException);
721 	virtual void SAL_CALL	removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
722 									const ::com::sun::star::uno::Reference<
723 										::com::sun::star::beans::XVetoableChangeListener >& aListener )
724 								throw(::com::sun::star::beans::UnknownPropertyException,
725 									::com::sun::star::lang::WrappedTargetException,
726 									::com::sun::star::uno::RuntimeException);
727 
728 							// XServiceInfo
729 	virtual ::rtl::OUString SAL_CALL getImplementationName()
730 								throw(::com::sun::star::uno::RuntimeException);
731 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
732 								throw(::com::sun::star::uno::RuntimeException);
733 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
734 								throw(::com::sun::star::uno::RuntimeException);
735 };
736 
737 
738 class ScAnnotationsObj : public cppu::WeakImplHelper3<
739 								com::sun::star::sheet::XSheetAnnotations,
740 								com::sun::star::container::XEnumerationAccess,
741 								com::sun::star::lang::XServiceInfo>,
742 						  public SfxListener
743 {
744 private:
745 	ScDocShell*				pDocShell;
746 	SCTAB					nTab;			// Collection haengt am Sheet
747 
748 	bool					GetAddressByIndex_Impl( sal_Int32 nIndex, ScAddress& rPos ) const;
749 	ScAnnotationObj*		GetObjectByIndex_Impl( sal_Int32 nIndex ) const;
750 
751 public:
752 							ScAnnotationsObj(ScDocShell* pDocSh, SCTAB nT);
753 	virtual					~ScAnnotationsObj();
754 
755 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
756 
757 							// XSheetAnnotations
758 	virtual void SAL_CALL	insertNew( const ::com::sun::star::table::CellAddress& aPosition,
759 								const ::rtl::OUString& aText )
760 									throw(::com::sun::star::uno::RuntimeException);
761 	virtual void SAL_CALL	removeByIndex( sal_Int32 nIndex )
762 								throw(::com::sun::star::uno::RuntimeException);
763 
764 							// XIndexAccess
765 	virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
766 	virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
767 								throw(::com::sun::star::lang::IndexOutOfBoundsException,
768 									::com::sun::star::lang::WrappedTargetException,
769 									::com::sun::star::uno::RuntimeException);
770 
771 							// XEnumerationAccess
772 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
773 							createEnumeration() throw(::com::sun::star::uno::RuntimeException);
774 
775 							// XElementAccess
776 	virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
777 								throw(::com::sun::star::uno::RuntimeException);
778 	virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
779 
780 							// XServiceInfo
781 	virtual ::rtl::OUString SAL_CALL getImplementationName()
782 								throw(::com::sun::star::uno::RuntimeException);
783 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
784 								throw(::com::sun::star::uno::RuntimeException);
785 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
786 								throw(::com::sun::star::uno::RuntimeException);
787 };
788 
789 
790 class ScScenariosObj : public cppu::WeakImplHelper4<
791 								com::sun::star::sheet::XScenarios,
792 								com::sun::star::container::XEnumerationAccess,
793 								com::sun::star::container::XIndexAccess,
794 								com::sun::star::lang::XServiceInfo>,
795 						  public SfxListener
796 {
797 private:
798 	ScDocShell*				pDocShell;
799 	SCTAB					nTab;
800 
801 	sal_Bool					GetScenarioIndex_Impl( const ::rtl::OUString& rName, SCTAB& rIndex );
802 	ScTableSheetObj*		GetObjectByIndex_Impl(sal_Int32 nIndex);
803 	ScTableSheetObj*		GetObjectByName_Impl(const ::rtl::OUString& aName);
804 
805 public:
806 							ScScenariosObj(ScDocShell* pDocSh, SCTAB nT);
807 	virtual					~ScScenariosObj();
808 
809 	virtual void			Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
810 
811 							// XScenarios
812 	virtual void SAL_CALL	addNewByName( const ::rtl::OUString& aName,
813 								const ::com::sun::star::uno::Sequence<
814 									::com::sun::star::table::CellRangeAddress >& aRanges,
815 								const ::rtl::OUString& aComment )
816 									throw(::com::sun::star::uno::RuntimeException);
817 	virtual void SAL_CALL	removeByName( const ::rtl::OUString& aName )
818 								throw(::com::sun::star::uno::RuntimeException);
819 
820 							// XNameAccess
821 	virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
822 								throw(::com::sun::star::container::NoSuchElementException,
823 									::com::sun::star::lang::WrappedTargetException,
824 									::com::sun::star::uno::RuntimeException);
825 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
826 								throw(::com::sun::star::uno::RuntimeException);
827 	virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
828 								throw(::com::sun::star::uno::RuntimeException);
829 
830 							// XIndexAccess
831 	virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
832 	virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
833 								throw(::com::sun::star::lang::IndexOutOfBoundsException,
834 									::com::sun::star::lang::WrappedTargetException,
835 									::com::sun::star::uno::RuntimeException);
836 
837 							// XEnumerationAccess
838 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
839 							createEnumeration() throw(::com::sun::star::uno::RuntimeException);
840 
841 							// XElementAccess
842 	virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
843 								throw(::com::sun::star::uno::RuntimeException);
844 	virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
845 
846 							// XServiceInfo
847 	virtual ::rtl::OUString SAL_CALL getImplementationName()
848 								throw(::com::sun::star::uno::RuntimeException);
849 	virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
850 								throw(::com::sun::star::uno::RuntimeException);
851 	virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
852 								throw(::com::sun::star::uno::RuntimeException);
853 };
854 
855 
856 
857 
858 #endif
859 
860