bump product version to 4.1.6.2
[LibreOffice.git] / sc / inc / cellsuno.hxx
blobd1ff40410a84b9b03624e79f5434e39a3dfaf63b
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef SC_CELLSUNO_HXX
21 #define SC_CELLSUNO_HXX
23 #include "global.hxx" // ScRange, ScAddress
24 #include "rangelst.hxx" // ScRangeList
26 #include <editeng/unotext.hxx>
27 #include <formula/grammar.hxx>
28 #include <rtl/ref.hxx>
29 #include <tools/link.hxx>
30 #include <svl/lstner.hxx>
31 #include <svl/listener.hxx>
32 #include <svl/itemprop.hxx>
33 #include <com/sun/star/table/XTableChartsSupplier.hpp>
34 #include <com/sun/star/chart/XChartDataArray.hpp>
35 #include <com/sun/star/text/XTextFieldsSupplier.hpp>
36 #include <com/sun/star/drawing/XDrawPageSupplier.hpp>
37 #include <com/sun/star/sheet/XSheetCellRange.hpp>
38 #include <com/sun/star/sheet/XFormulaQuery.hpp>
39 #include <com/sun/star/sheet/XCellRangeAddressable.hpp>
40 #include <com/sun/star/sheet/XSheetOperation.hpp>
41 #include <com/sun/star/sheet/XSheetCellRangeContainer.hpp>
42 #include <com/sun/star/sheet/XCellFormatRangesSupplier.hpp>
43 #include <com/sun/star/sheet/XUniqueCellFormatRangesSupplier.hpp>
44 #include <com/sun/star/sheet/XCellRangesQuery.hpp>
45 #include <com/sun/star/sheet/XSheetFilterableEx.hpp>
46 #include <com/sun/star/sheet/XSpreadsheet.hpp>
47 #include <com/sun/star/sheet/XSheetPageBreak.hpp>
48 #include <com/sun/star/sheet/XCellRangeMovement.hpp>
49 #include <com/sun/star/text/XText.hpp>
50 #include <com/sun/star/sheet/XPrintAreas.hpp>
51 #include <com/sun/star/sheet/XSheetLinkable.hpp>
52 #include <com/sun/star/sheet/XSubTotalCalculatable.hpp>
53 #include <com/sun/star/sheet/XArrayFormulaRange.hpp>
54 #include <com/sun/star/sheet/XCellRangeData.hpp>
55 #include <com/sun/star/sheet/XCellRangeFormula.hpp>
56 #include <com/sun/star/sheet/XCellSeries.hpp>
57 #include <com/sun/star/sheet/XMultipleOperation.hpp>
58 #include <com/sun/star/sheet/XFormulaTokens.hpp>
59 #include <com/sun/star/sheet/XArrayFormulaTokens.hpp>
60 #include <com/sun/star/sheet/XCellAddressable.hpp>
61 #include <com/sun/star/util/XReplaceable.hpp>
62 #include <com/sun/star/util/XIndent.hpp>
63 #include <com/sun/star/lang/XServiceInfo.hpp>
64 #include <com/sun/star/container/XNameContainer.hpp>
65 #include <com/sun/star/util/XMergeable.hpp>
66 #include <com/sun/star/table/XAutoFormattable.hpp>
67 #include <com/sun/star/util/XSortable.hpp>
68 #include <com/sun/star/util/XImportable.hpp>
69 #include <com/sun/star/table/XColumnRowRange.hpp>
70 #include <com/sun/star/table/XCell2.hpp>
71 #include <com/sun/star/table/BorderLine2.hpp>
72 #include <com/sun/star/table/TableBorder.hpp>
73 #include <com/sun/star/table/TableBorder2.hpp>
74 #include <com/sun/star/sheet/XDataPilotTablesSupplier.hpp>
75 #include <com/sun/star/sheet/XSheetAnnotationAnchor.hpp>
76 #include <com/sun/star/sheet/XScenariosSupplier.hpp>
77 #include <com/sun/star/sheet/XSheetAnnotationsSupplier.hpp>
78 #include <com/sun/star/sheet/XSheetAuditing.hpp>
79 #include <com/sun/star/sheet/XSheetOutline.hpp>
80 #include <com/sun/star/util/XProtectable.hpp>
81 #include <com/sun/star/sheet/XScenario.hpp>
82 #include <com/sun/star/sheet/XScenarioEnhanced.hpp>
83 #include <com/sun/star/util/XModifyBroadcaster.hpp>
84 #include <com/sun/star/beans/XPropertyState.hpp>
85 #include <com/sun/star/beans/XMultiPropertySet.hpp>
86 #include <com/sun/star/lang/XUnoTunnel.hpp>
87 #include <com/sun/star/document/XActionLockable.hpp>
88 #include <com/sun/star/beans/XTolerantMultiPropertySet.hpp>
89 #include <com/sun/star/sheet/XExternalSheetName.hpp>
90 #include <com/sun/star/document/XEventsSupplier.hpp>
91 #include <cppuhelper/implbase2.hxx>
92 #include <cppuhelper/implbase3.hxx>
93 #include <boost/ptr_container/ptr_vector.hpp>
94 #include <boost/scoped_ptr.hpp>
96 #include <vector>
98 class ScDocShell;
99 class ScMarkData;
100 class ScMemChart;
101 class ScPrintRangeSaver;
102 class ScAttrRectIterator;
103 class ScCellRangeObj;
104 class ScLinkListener;
105 class ScPatternAttr;
106 class SvxBoxItem;
107 class SvxBoxInfoItem;
108 class SvxItemPropertySet;
110 namespace editeng { class SvxBorderLine; }
112 class ScLinkListener : public SvtListener
114 Link aLink;
115 public:
116 ScLinkListener(const Link& rL) : aLink(rL) {}
117 virtual ~ScLinkListener();
118 virtual void Notify( SvtBroadcaster& rBC, const SfxHint& rHint );
121 typedef ::com::sun::star::uno::Reference<
122 ::com::sun::star::util::XModifyListener > XModifyListenerRef;
123 typedef boost::ptr_vector<XModifyListenerRef> XModifyListenerArr_Impl;
126 // ScCellRangesBase - base class for ScCellRangesObj (with access by index)
127 // and ScCellRangeObj (without access by index)
129 // XServiceInfo is implemented in derived classes
131 class ScHelperFunctions
133 public:
134 static const ::editeng::SvxBorderLine* GetBorderLine( ::editeng::SvxBorderLine& rLine, const com::sun::star::table::BorderLine& rStruct );
135 static const ::editeng::SvxBorderLine* GetBorderLine( ::editeng::SvxBorderLine& rLine, const com::sun::star::table::BorderLine2& rStruct );
136 static void FillBoxItems( SvxBoxItem& rOuter, SvxBoxInfoItem& rInner, const com::sun::star::table::TableBorder& rBorder );
137 static void FillBoxItems( SvxBoxItem& rOuter, SvxBoxInfoItem& rInner, const com::sun::star::table::TableBorder2& rBorder );
138 static void FillBorderLine( com::sun::star::table::BorderLine& rStruct, const ::editeng::SvxBorderLine* pLine );
139 static void FillBorderLine( com::sun::star::table::BorderLine2& rStruct, const ::editeng::SvxBorderLine* pLine );
140 static void AssignTableBorderToAny( com::sun::star::uno::Any& rAny,
141 const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner, bool bInvalidateHorVerDist = false );
142 static void AssignTableBorder2ToAny( com::sun::star::uno::Any& rAny,
143 const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner, bool bInvalidateHorVerDist = false );
144 static void ApplyBorder( ScDocShell* pDocShell, const ScRangeList& rRanges,
145 const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner );
148 namespace ooo
150 namespace vba {
151 namespace excel {
152 class ScVbaCellRangeAccess; // Vba Helper class
157 class SC_DLLPUBLIC ScCellRangesBase : public com::sun::star::beans::XPropertySet,
158 public com::sun::star::beans::XMultiPropertySet,
159 public com::sun::star::beans::XPropertyState,
160 public com::sun::star::sheet::XSheetOperation,
161 public com::sun::star::chart::XChartDataArray,
162 public com::sun::star::util::XIndent,
163 public com::sun::star::sheet::XCellRangesQuery,
164 public com::sun::star::sheet::XFormulaQuery,
165 public com::sun::star::util::XReplaceable,
166 public com::sun::star::util::XModifyBroadcaster,
167 public com::sun::star::lang::XServiceInfo,
168 public com::sun::star::lang::XUnoTunnel,
169 public com::sun::star::lang::XTypeProvider,
170 public com::sun::star::beans::XTolerantMultiPropertySet,
171 public cppu::OWeakObject,
172 public SfxListener
174 friend class ScTabViewObj; // for select()
175 friend class ScTableSheetObj; // for createCursorByRange()
176 friend class ooo::vba::excel::ScVbaCellRangeAccess;
178 private:
179 const SfxItemPropertySet* pPropSet;
180 ScDocShell* pDocShell;
181 ScLinkListener* pValueListener;
182 ScPatternAttr* pCurrentFlat;
183 ScPatternAttr* pCurrentDeep;
184 SfxItemSet* pCurrentDataSet;
185 SfxItemSet* pNoDfltCurrentDataSet;
186 ScMarkData* pMarkData;
187 ScRangeList aRanges;
188 sal_Int64 nObjectId;
189 sal_Bool bChartColAsHdr;
190 sal_Bool bChartRowAsHdr;
191 sal_Bool bCursorOnly;
192 sal_Bool bGotDataChangedHint;
193 XModifyListenerArr_Impl aValueListeners;
195 DECL_LINK( ValueListenerHdl, SfxHint* );
197 private:
198 void PaintRanges_Impl( sal_uInt16 nPart );
199 ScRangeListRef GetLimitedChartRanges_Impl( long nDataColumns, long nDataRows ) const;
200 void ForceChartListener_Impl();
201 ScMemChart* CreateMemChart_Impl() const;
203 const ScPatternAttr* GetCurrentAttrsFlat();
204 const ScPatternAttr* GetCurrentAttrsDeep();
205 SfxItemSet* GetCurrentDataSet(bool bNoDflt = false);
206 void ForgetMarkData();
207 void ForgetCurrentAttrs();
209 com::sun::star::uno::Reference<com::sun::star::sheet::XSheetCellRanges>
210 QueryDifferences_Impl(const com::sun::star::table::CellAddress& aCompare,
211 sal_Bool bColumnDiff);
212 com::sun::star::uno::Reference<com::sun::star::uno::XInterface>
213 Find_Impl(const com::sun::star::uno::Reference<
214 com::sun::star::util::XSearchDescriptor>& xDesc,
215 const ScAddress* pLastPos);
217 protected:
218 const ScMarkData* GetMarkData();
220 // GetItemPropertyMap for derived classes must contain all entries, including base class
221 virtual const SfxItemPropertyMap& GetItemPropertyMap();
222 virtual ::com::sun::star::beans::PropertyState GetOnePropertyState(
223 sal_uInt16 nItemWhich, const SfxItemPropertySimpleEntry* pEntry );
224 virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
225 ::com::sun::star::uno::Any& )
226 throw(::com::sun::star::uno::RuntimeException);
227 virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
228 const ::com::sun::star::uno::Any& aValue )
229 throw(::com::sun::star::lang::IllegalArgumentException,
230 ::com::sun::star::uno::RuntimeException);
232 public:
233 ScCellRangesBase(ScDocShell* pDocSh, const ScRange& rR);
234 ScCellRangesBase(ScDocShell* pDocSh, const ScRangeList& rR);
235 virtual ~ScCellRangesBase();
237 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
238 const ::com::sun::star::uno::Type & rType )
239 throw(::com::sun::star::uno::RuntimeException);
240 virtual void SAL_CALL acquire() throw();
241 virtual void SAL_CALL release() throw();
243 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
244 virtual void RefChanged();
246 // from derived classes and by getImplementation
247 ScDocShell* GetDocShell() const { return pDocShell; }
248 ScDocument* GetDocument() const;
249 const ScRangeList& GetRangeList() const { return aRanges; }
250 void AddRange(const ScRange& rRange, const sal_Bool bMergeRanges);
252 // arouse object created via service:
253 void InitInsertRange(ScDocShell* pDocSh, const ScRange& rR);
255 void SetNewRange(const ScRange& rNew); // for cursor
256 void SetNewRanges(const ScRangeList& rNew);
258 void SetCursorOnly(sal_Bool bSet);
259 sal_Bool IsCursorOnly() const { return bCursorOnly; }
261 // XSheetOperation
262 virtual double SAL_CALL computeFunction( ::com::sun::star::sheet::GeneralFunction nFunction )
263 throw(::com::sun::star::uno::Exception,
264 ::com::sun::star::uno::RuntimeException);
265 virtual void SAL_CALL clearContents( sal_Int32 nContentFlags )
266 throw(::com::sun::star::uno::RuntimeException);
268 // XPropertySet
269 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
270 SAL_CALL getPropertySetInfo()
271 throw(::com::sun::star::uno::RuntimeException);
272 virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName,
273 const ::com::sun::star::uno::Any& aValue )
274 throw(::com::sun::star::beans::UnknownPropertyException,
275 ::com::sun::star::beans::PropertyVetoException,
276 ::com::sun::star::lang::IllegalArgumentException,
277 ::com::sun::star::lang::WrappedTargetException,
278 ::com::sun::star::uno::RuntimeException);
279 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
280 const OUString& PropertyName )
281 throw(::com::sun::star::beans::UnknownPropertyException,
282 ::com::sun::star::lang::WrappedTargetException,
283 ::com::sun::star::uno::RuntimeException);
284 virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName,
285 const ::com::sun::star::uno::Reference<
286 ::com::sun::star::beans::XPropertyChangeListener >& xListener )
287 throw(::com::sun::star::beans::UnknownPropertyException,
288 ::com::sun::star::lang::WrappedTargetException,
289 ::com::sun::star::uno::RuntimeException);
290 virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName,
291 const ::com::sun::star::uno::Reference<
292 ::com::sun::star::beans::XPropertyChangeListener >& aListener )
293 throw(::com::sun::star::beans::UnknownPropertyException,
294 ::com::sun::star::lang::WrappedTargetException,
295 ::com::sun::star::uno::RuntimeException);
296 virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName,
297 const ::com::sun::star::uno::Reference<
298 ::com::sun::star::beans::XVetoableChangeListener >& aListener )
299 throw(::com::sun::star::beans::UnknownPropertyException,
300 ::com::sun::star::lang::WrappedTargetException,
301 ::com::sun::star::uno::RuntimeException);
302 virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName,
303 const ::com::sun::star::uno::Reference<
304 ::com::sun::star::beans::XVetoableChangeListener >& aListener )
305 throw(::com::sun::star::beans::UnknownPropertyException,
306 ::com::sun::star::lang::WrappedTargetException,
307 ::com::sun::star::uno::RuntimeException);
309 // XMultiPropertySet
310 virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames,
311 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues )
312 throw (::com::sun::star::beans::PropertyVetoException,
313 ::com::sun::star::lang::IllegalArgumentException,
314 ::com::sun::star::lang::WrappedTargetException,
315 ::com::sun::star::uno::RuntimeException);
316 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL
317 getPropertyValues( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames )
318 throw (::com::sun::star::uno::RuntimeException);
319 virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames,
320 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener )
321 throw (::com::sun::star::uno::RuntimeException);
322 virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener )
323 throw (::com::sun::star::uno::RuntimeException);
324 virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames,
325 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener )
326 throw (::com::sun::star::uno::RuntimeException);
328 // XTolerantMultiPropertySet
329 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::SetPropertyTolerantFailed > SAL_CALL
330 setPropertyValuesTolerant( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames,
331 const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues )
332 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
333 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::GetPropertyTolerantResult > SAL_CALL
334 getPropertyValuesTolerant( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames )
335 throw (::com::sun::star::uno::RuntimeException);
336 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::GetDirectPropertyTolerantResult > SAL_CALL
337 getDirectPropertyValuesTolerant( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames )
338 throw (::com::sun::star::uno::RuntimeException);
340 // XPropertyState
341 virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState(
342 const OUString& PropertyName )
343 throw(::com::sun::star::beans::UnknownPropertyException,
344 ::com::sun::star::uno::RuntimeException);
345 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL
346 getPropertyStates( const ::com::sun::star::uno::Sequence<
347 OUString >& aPropertyName )
348 throw(::com::sun::star::beans::UnknownPropertyException,
349 ::com::sun::star::uno::RuntimeException);
350 virtual void SAL_CALL setPropertyToDefault( const OUString& PropertyName )
351 throw(::com::sun::star::beans::UnknownPropertyException,
352 ::com::sun::star::uno::RuntimeException);
353 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault(
354 const OUString& aPropertyName )
355 throw(::com::sun::star::beans::UnknownPropertyException,
356 ::com::sun::star::lang::WrappedTargetException,
357 ::com::sun::star::uno::RuntimeException);
359 // XIndent
360 virtual void SAL_CALL decrementIndent() throw(::com::sun::star::uno::RuntimeException);
361 virtual void SAL_CALL incrementIndent() throw(::com::sun::star::uno::RuntimeException);
363 // XChartData
364 virtual void SAL_CALL addChartDataChangeEventListener(
365 const ::com::sun::star::uno::Reference<
366 ::com::sun::star::chart::XChartDataChangeEventListener >& aListener )
367 throw(::com::sun::star::uno::RuntimeException);
368 virtual void SAL_CALL removeChartDataChangeEventListener( const ::com::sun::star::uno::Reference<
369 ::com::sun::star::chart::XChartDataChangeEventListener >& aListener )
370 throw(::com::sun::star::uno::RuntimeException);
371 virtual double SAL_CALL getNotANumber() throw(::com::sun::star::uno::RuntimeException);
372 virtual sal_Bool SAL_CALL isNotANumber( double nNumber )
373 throw(::com::sun::star::uno::RuntimeException);
375 // XChartDataArray
376 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > > SAL_CALL
377 getData() throw(::com::sun::star::uno::RuntimeException);
378 virtual void SAL_CALL setData( const ::com::sun::star::uno::Sequence<
379 ::com::sun::star::uno::Sequence< double > >& aData )
380 throw(::com::sun::star::uno::RuntimeException);
381 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getRowDescriptions()
382 throw(::com::sun::star::uno::RuntimeException);
383 virtual void SAL_CALL setRowDescriptions( const ::com::sun::star::uno::Sequence<
384 OUString >& aRowDescriptions )
385 throw(::com::sun::star::uno::RuntimeException);
386 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getColumnDescriptions()
387 throw(::com::sun::star::uno::RuntimeException);
388 virtual void SAL_CALL setColumnDescriptions( const ::com::sun::star::uno::Sequence<
389 OUString >& aColumnDescriptions )
390 throw(::com::sun::star::uno::RuntimeException);
392 // XCellRangesQuery
393 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
394 queryVisibleCells() throw(::com::sun::star::uno::RuntimeException);
395 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
396 queryEmptyCells() throw(::com::sun::star::uno::RuntimeException);
397 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
398 queryContentCells( sal_Int16 nContentFlags )
399 throw(::com::sun::star::uno::RuntimeException);
400 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
401 queryFormulaCells( sal_Int32 nResultFlags )
402 throw(::com::sun::star::uno::RuntimeException);
403 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
404 queryColumnDifferences(
405 const ::com::sun::star::table::CellAddress& aCompare )
406 throw(::com::sun::star::uno::RuntimeException);
407 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
408 queryRowDifferences(
409 const ::com::sun::star::table::CellAddress& aCompare )
410 throw(::com::sun::star::uno::RuntimeException);
411 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
412 queryIntersection(
413 const ::com::sun::star::table::CellRangeAddress& aRange )
414 throw(::com::sun::star::uno::RuntimeException);
416 // XFormulaQuery
417 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
418 queryDependents( sal_Bool bRecursive )
419 throw(::com::sun::star::uno::RuntimeException);
420 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL
421 queryPrecedents( sal_Bool bRecursive )
422 throw(::com::sun::star::uno::RuntimeException);
424 // XSearchable
425 virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > SAL_CALL
426 createSearchDescriptor()
427 throw(::com::sun::star::uno::RuntimeException);
428 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
429 findAll( const ::com::sun::star::uno::Reference<
430 ::com::sun::star::util::XSearchDescriptor >& xDesc )
431 throw(::com::sun::star::uno::RuntimeException);
432 virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
433 findFirst( const ::com::sun::star::uno::Reference<
434 ::com::sun::star::util::XSearchDescriptor >& xDesc )
435 throw(::com::sun::star::uno::RuntimeException);
436 virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
437 findNext( const ::com::sun::star::uno::Reference<
438 ::com::sun::star::uno::XInterface >& xStartAt,
439 const ::com::sun::star::uno::Reference<
440 ::com::sun::star::util::XSearchDescriptor >& xDesc )
441 throw(::com::sun::star::uno::RuntimeException);
443 // XReplaceable
444 virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XReplaceDescriptor > SAL_CALL
445 createReplaceDescriptor() throw(::com::sun::star::uno::RuntimeException);
446 virtual sal_Int32 SAL_CALL replaceAll( const ::com::sun::star::uno::Reference<
447 ::com::sun::star::util::XSearchDescriptor >& xDesc )
448 throw(::com::sun::star::uno::RuntimeException);
450 // XModifyBroadcaster
451 virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference<
452 ::com::sun::star::util::XModifyListener >& aListener )
453 throw (::com::sun::star::uno::RuntimeException);
454 virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference<
455 ::com::sun::star::util::XModifyListener >& aListener )
456 throw (::com::sun::star::uno::RuntimeException);
458 // XServiceInfo
459 virtual OUString SAL_CALL getImplementationName()
460 throw(::com::sun::star::uno::RuntimeException);
461 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
462 throw(::com::sun::star::uno::RuntimeException);
463 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
464 throw(::com::sun::star::uno::RuntimeException);
466 // XUnoTunnel
467 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
468 sal_Int8 >& aIdentifier )
469 throw(::com::sun::star::uno::RuntimeException);
471 static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
472 static ScCellRangesBase* getImplementation( const com::sun::star::uno::Reference<
473 com::sun::star::uno::XInterface> xObj );
475 // XTypeProvider
476 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
477 throw(::com::sun::star::uno::RuntimeException);
478 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
479 throw(::com::sun::star::uno::RuntimeException);
483 class SC_DLLPUBLIC ScCellRangesObj : public ScCellRangesBase,
484 public com::sun::star::sheet::XSheetCellRangeContainer,
485 public com::sun::star::container::XNameContainer,
486 public com::sun::star::container::XEnumerationAccess
488 private:
489 struct Impl;
490 ::boost::scoped_ptr<Impl> m_pImpl;
492 ScCellRangeObj* GetObjectByIndex_Impl(sal_Int32 nIndex) const;
494 public:
495 ScCellRangesObj(ScDocShell* pDocSh, const ScRangeList& rR);
496 virtual ~ScCellRangesObj();
498 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
499 const ::com::sun::star::uno::Type & rType )
500 throw(::com::sun::star::uno::RuntimeException);
501 virtual void SAL_CALL acquire() throw();
502 virtual void SAL_CALL release() throw();
504 virtual void RefChanged();
506 // XSheetCellRanges
507 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > SAL_CALL
508 getCells() throw(::com::sun::star::uno::RuntimeException);
509 virtual OUString SAL_CALL getRangeAddressesAsString()
510 throw(::com::sun::star::uno::RuntimeException);
511 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
512 getRangeAddresses() throw(::com::sun::star::uno::RuntimeException);
514 // XSheetCellRangeContainer
515 virtual void SAL_CALL addRangeAddress( const ::com::sun::star::table::CellRangeAddress& rRange,
516 sal_Bool bMergeRanges )
517 throw(::com::sun::star::uno::RuntimeException);
518 virtual void SAL_CALL removeRangeAddress( const ::com::sun::star::table::CellRangeAddress& rRange )
519 throw(::com::sun::star::container::NoSuchElementException,
520 ::com::sun::star::uno::RuntimeException);
521 virtual void SAL_CALL addRangeAddresses( const ::com::sun::star::uno::Sequence<
522 ::com::sun::star::table::CellRangeAddress >& rRanges,
523 sal_Bool bMergeRanges )
524 throw(::com::sun::star::uno::RuntimeException);
525 virtual void SAL_CALL removeRangeAddresses( const ::com::sun::star::uno::Sequence<
526 ::com::sun::star::table::CellRangeAddress >& rRanges )
527 throw(::com::sun::star::container::NoSuchElementException,
528 ::com::sun::star::uno::RuntimeException);
530 // XNameContainer
531 virtual void SAL_CALL insertByName( const OUString& aName,
532 const ::com::sun::star::uno::Any& aElement )
533 throw(::com::sun::star::lang::IllegalArgumentException,
534 ::com::sun::star::container::ElementExistException,
535 ::com::sun::star::lang::WrappedTargetException,
536 ::com::sun::star::uno::RuntimeException);
537 virtual void SAL_CALL removeByName( const OUString& Name )
538 throw(::com::sun::star::container::NoSuchElementException,
539 ::com::sun::star::lang::WrappedTargetException,
540 ::com::sun::star::uno::RuntimeException);
542 // XNameReplace
543 virtual void SAL_CALL replaceByName( const OUString& aName,
544 const ::com::sun::star::uno::Any& aElement )
545 throw(::com::sun::star::lang::IllegalArgumentException,
546 ::com::sun::star::container::NoSuchElementException,
547 ::com::sun::star::lang::WrappedTargetException,
548 ::com::sun::star::uno::RuntimeException);
550 // XNameAccess
551 virtual ::com::sun::star::uno::Any SAL_CALL getByName( const OUString& aName )
552 throw(::com::sun::star::container::NoSuchElementException,
553 ::com::sun::star::lang::WrappedTargetException,
554 ::com::sun::star::uno::RuntimeException);
555 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getElementNames()
556 throw(::com::sun::star::uno::RuntimeException);
557 virtual sal_Bool SAL_CALL hasByName( const OUString& aName )
558 throw(::com::sun::star::uno::RuntimeException);
560 // XIndexAccess
561 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
562 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
563 throw(::com::sun::star::lang::IndexOutOfBoundsException,
564 ::com::sun::star::lang::WrappedTargetException,
565 ::com::sun::star::uno::RuntimeException);
567 // XElementAccess
568 virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
569 throw(::com::sun::star::uno::RuntimeException);
570 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
572 // XEnumerationAccess
573 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
574 createEnumeration() throw(::com::sun::star::uno::RuntimeException);
576 // XServiceInfo
577 virtual OUString SAL_CALL getImplementationName()
578 throw(::com::sun::star::uno::RuntimeException);
579 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
580 throw(::com::sun::star::uno::RuntimeException);
581 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
582 throw(::com::sun::star::uno::RuntimeException);
584 // XTypeProvider
585 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
586 throw(::com::sun::star::uno::RuntimeException);
587 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
588 throw(::com::sun::star::uno::RuntimeException);
592 class SC_DLLPUBLIC ScCellRangeObj : public ScCellRangesBase,
593 public com::sun::star::sheet::XCellRangeAddressable,
594 public com::sun::star::sheet::XSheetCellRange,
595 public com::sun::star::sheet::XArrayFormulaRange,
596 public com::sun::star::sheet::XArrayFormulaTokens,
597 public com::sun::star::sheet::XCellRangeData,
598 public com::sun::star::sheet::XCellRangeFormula,
599 public com::sun::star::sheet::XMultipleOperation,
600 public com::sun::star::util::XMergeable,
601 public com::sun::star::sheet::XCellSeries,
602 public com::sun::star::table::XAutoFormattable,
603 public com::sun::star::util::XSortable,
604 public com::sun::star::sheet::XSheetFilterableEx,
605 public com::sun::star::sheet::XSubTotalCalculatable,
606 public com::sun::star::util::XImportable,
607 public com::sun::star::sheet::XCellFormatRangesSupplier,
608 public com::sun::star::sheet::XUniqueCellFormatRangesSupplier,
609 public com::sun::star::table::XColumnRowRange
611 private:
612 const SfxItemPropertySet* pRangePropSet;
613 ScRange aRange;
615 protected:
616 const ScRange& GetRange() const { return aRange; }
617 virtual const SfxItemPropertyMap& GetItemPropertyMap();
618 virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
619 ::com::sun::star::uno::Any& )
620 throw(::com::sun::star::uno::RuntimeException);
621 virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
622 const ::com::sun::star::uno::Any& aValue )
623 throw(::com::sun::star::lang::IllegalArgumentException,
624 ::com::sun::star::uno::RuntimeException);
626 ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell >
627 GetCellByPosition_Impl( sal_Int32 nColumn, sal_Int32 nRow )
628 throw(::com::sun::star::lang::IndexOutOfBoundsException,
629 ::com::sun::star::uno::RuntimeException);
631 void SetArrayFormula_Impl( const OUString& rFormula,
632 const OUString& rFormulaNmsp,
633 const formula::FormulaGrammar::Grammar eGrammar )
634 throw(::com::sun::star::uno::RuntimeException);
636 public:
637 ScCellRangeObj(ScDocShell* pDocSh, const ScRange& rR);
638 virtual ~ScCellRangeObj();
640 // uses ObjectShell from document, if set (returns NULL otherwise)
641 static com::sun::star::uno::Reference<com::sun::star::table::XCellRange>
642 CreateRangeFromDoc( ScDocument* pDoc, const ScRange& rR );
644 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
645 const ::com::sun::star::uno::Type & rType )
646 throw(::com::sun::star::uno::RuntimeException);
647 virtual void SAL_CALL acquire() throw();
648 virtual void SAL_CALL release() throw();
650 virtual void RefChanged();
652 // via getImplementation()
653 virtual void SetArrayFormulaWithGrammar( const OUString& rFormula,
654 const OUString& rFormulaNmsp,
655 const formula::FormulaGrammar::Grammar )
656 throw(::com::sun::star::uno::RuntimeException);
658 // XCellRangeAddressable
659 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getRangeAddress()
660 throw(::com::sun::star::uno::RuntimeException);
662 // XSheetCellRange
663 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
664 getSpreadsheet() throw(::com::sun::star::uno::RuntimeException);
666 // XArrayFormulaRange
667 virtual OUString SAL_CALL getArrayFormula() throw(::com::sun::star::uno::RuntimeException);
668 virtual void SAL_CALL setArrayFormula( const OUString& aFormula )
669 throw(::com::sun::star::uno::RuntimeException);
671 // XArrayFormulaTokens
672 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken > SAL_CALL getArrayTokens()
673 throw (::com::sun::star::uno::RuntimeException);
674 virtual void SAL_CALL setArrayTokens( const ::com::sun::star::uno::Sequence<
675 ::com::sun::star::sheet::FormulaToken >& aTokens )
676 throw (::com::sun::star::uno::RuntimeException);
678 // XCellRangeData
679 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence<
680 ::com::sun::star::uno::Any > > SAL_CALL getDataArray()
681 throw(::com::sun::star::uno::RuntimeException);
682 virtual void SAL_CALL setDataArray( const ::com::sun::star::uno::Sequence<
683 ::com::sun::star::uno::Sequence<
684 ::com::sun::star::uno::Any > >& aArray )
685 throw(::com::sun::star::uno::RuntimeException);
687 // XCellRangeFormula
688 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence<
689 OUString > > SAL_CALL getFormulaArray()
690 throw (::com::sun::star::uno::RuntimeException);
691 virtual void SAL_CALL setFormulaArray( const ::com::sun::star::uno::Sequence<
692 ::com::sun::star::uno::Sequence< OUString > >& aArray )
693 throw (::com::sun::star::uno::RuntimeException);
695 // XMultipleOperation
696 virtual void SAL_CALL setTableOperation(
697 const ::com::sun::star::table::CellRangeAddress& aFormulaRange,
698 ::com::sun::star::sheet::TableOperationMode nMode,
699 const ::com::sun::star::table::CellAddress& aColumnCell,
700 const ::com::sun::star::table::CellAddress& aRowCell )
701 throw(::com::sun::star::uno::RuntimeException);
703 // XMergeable
704 virtual void SAL_CALL merge( sal_Bool bMerge ) throw(::com::sun::star::uno::RuntimeException);
705 virtual sal_Bool SAL_CALL getIsMerged() throw(::com::sun::star::uno::RuntimeException);
707 // XCellSeries
708 virtual void SAL_CALL fillSeries( ::com::sun::star::sheet::FillDirection nFillDirection,
709 ::com::sun::star::sheet::FillMode nFillMode,
710 ::com::sun::star::sheet::FillDateMode nFillDateMode,
711 double fStep, double fEndValue )
712 throw(::com::sun::star::uno::RuntimeException);
713 virtual void SAL_CALL fillAuto( ::com::sun::star::sheet::FillDirection nFillDirection,
714 sal_Int32 nSourceCount )
715 throw(::com::sun::star::uno::RuntimeException);
717 // XAutoFormattable
718 virtual void SAL_CALL autoFormat( const OUString& aName )
719 throw(::com::sun::star::lang::IllegalArgumentException,
720 ::com::sun::star::uno::RuntimeException);
722 // XSortable
723 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
724 createSortDescriptor() throw(::com::sun::star::uno::RuntimeException);
725 virtual void SAL_CALL sort( const ::com::sun::star::uno::Sequence<
726 ::com::sun::star::beans::PropertyValue >& xDescriptor )
727 throw(::com::sun::star::uno::RuntimeException);
729 // XSheetFilterableEx
730 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
731 createFilterDescriptorByObject( const ::com::sun::star::uno::Reference<
732 ::com::sun::star::sheet::XSheetFilterable >& xObject )
733 throw(::com::sun::star::uno::RuntimeException);
735 // XSheetFilterable
736 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
737 createFilterDescriptor( sal_Bool bEmpty )
738 throw(::com::sun::star::uno::RuntimeException);
739 virtual void SAL_CALL filter( const ::com::sun::star::uno::Reference<
740 ::com::sun::star::sheet::XSheetFilterDescriptor >& xDescriptor )
741 throw(::com::sun::star::uno::RuntimeException);
743 // XSubTotalCalculatable
744 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor > SAL_CALL
745 createSubTotalDescriptor( sal_Bool bEmpty )
746 throw(::com::sun::star::uno::RuntimeException);
747 virtual void SAL_CALL applySubTotals( const ::com::sun::star::uno::Reference<
748 ::com::sun::star::sheet::XSubTotalDescriptor >& xDescriptor,
749 sal_Bool bReplace ) throw(::com::sun::star::uno::RuntimeException);
750 virtual void SAL_CALL removeSubTotals() throw(::com::sun::star::uno::RuntimeException);
752 // XImportable
753 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
754 createImportDescriptor( sal_Bool bEmpty )
755 throw(::com::sun::star::uno::RuntimeException);
756 virtual void SAL_CALL doImport( const ::com::sun::star::uno::Sequence<
757 ::com::sun::star::beans::PropertyValue >& aDescriptor )
758 throw(::com::sun::star::uno::RuntimeException);
760 // XCellFormatRangesSupplier
761 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
762 getCellFormatRanges() throw(::com::sun::star::uno::RuntimeException);
764 // XUniqueCellFormatRangesSupplier
765 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
766 getUniqueCellFormatRanges() throw(::com::sun::star::uno::RuntimeException);
768 // XColumnRowRange
769 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableColumns > SAL_CALL
770 getColumns() throw(::com::sun::star::uno::RuntimeException);
771 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableRows > SAL_CALL
772 getRows() throw(::com::sun::star::uno::RuntimeException);
774 // XCellRange
775 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > SAL_CALL
776 getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow )
777 throw(::com::sun::star::lang::IndexOutOfBoundsException,
778 ::com::sun::star::uno::RuntimeException);
779 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
780 getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop,
781 sal_Int32 nRight, sal_Int32 nBottom )
782 throw(::com::sun::star::lang::IndexOutOfBoundsException,
783 ::com::sun::star::uno::RuntimeException);
784 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
785 getCellRangeByName( const OUString& aRange )
786 throw(::com::sun::star::uno::RuntimeException);
787 ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange >
788 getCellRangeByName( const OUString& aRange, const ScAddress::Details& rDetails )
789 throw(::com::sun::star::uno::RuntimeException);
791 // XPropertySet overloaded due to Range-Properties
792 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
793 SAL_CALL getPropertySetInfo()
794 throw(::com::sun::star::uno::RuntimeException);
796 // XServiceInfo
797 virtual OUString SAL_CALL getImplementationName()
798 throw(::com::sun::star::uno::RuntimeException);
799 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
800 throw(::com::sun::star::uno::RuntimeException);
801 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
802 throw(::com::sun::star::uno::RuntimeException);
804 // XTypeProvider
805 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
806 throw(::com::sun::star::uno::RuntimeException);
807 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
808 throw(::com::sun::star::uno::RuntimeException);
812 //! really derive cell from range?
814 class SC_DLLPUBLIC ScCellObj : public ScCellRangeObj,
815 public com::sun::star::text::XText,
816 public com::sun::star::container::XEnumerationAccess,
817 public com::sun::star::table::XCell2,
818 public com::sun::star::sheet::XFormulaTokens,
819 public com::sun::star::sheet::XCellAddressable,
820 public com::sun::star::sheet::XSheetAnnotationAnchor,
821 public com::sun::star::text::XTextFieldsSupplier,
822 public com::sun::star::document::XActionLockable
824 private:
825 rtl::Reference<SvxUnoText> mxUnoText;
826 const SfxItemPropertySet* pCellPropSet;
827 ScAddress aCellPos;
828 sal_Int16 nActionLockCount;
830 private:
831 OUString GetInputString_Impl(bool bEnglish) const;
832 OUString GetOutputString_Impl() const;
833 void SetString_Impl(const String& rString, sal_Bool bInterpret, sal_Bool bEnglish);
834 double GetValue_Impl() const;
835 void SetValue_Impl(double fValue);
836 com::sun::star::table::CellContentType GetResultType_Impl();
838 protected:
839 virtual const SfxItemPropertyMap& GetItemPropertyMap();
840 virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
841 ::com::sun::star::uno::Any& )
842 throw(::com::sun::star::uno::RuntimeException);
843 virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
844 const ::com::sun::star::uno::Any& aValue )
845 throw(::com::sun::star::lang::IllegalArgumentException,
846 ::com::sun::star::uno::RuntimeException);
848 public:
849 static const SvxItemPropertySet* GetEditPropertySet();
850 static const SfxItemPropertyMap& GetCellPropertyMap();
852 ScCellObj(ScDocShell* pDocSh, const ScAddress& rP);
853 virtual ~ScCellObj();
855 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
856 const ::com::sun::star::uno::Type & rType )
857 throw(::com::sun::star::uno::RuntimeException);
858 virtual void SAL_CALL acquire() throw();
859 virtual void SAL_CALL release() throw();
861 virtual void RefChanged();
863 SvxUnoText& GetUnoText();
865 // XML import needs to set results at formula cells,
866 // not meant for any other purpose.
867 const ScAddress& GetPosition() const { return aCellPos; }
869 void InputEnglishString( const OUString& rText );
871 // XText
872 virtual void SAL_CALL insertTextContent( const ::com::sun::star::uno::Reference<
873 ::com::sun::star::text::XTextRange >& xRange,
874 const ::com::sun::star::uno::Reference<
875 ::com::sun::star::text::XTextContent >& xContent,
876 sal_Bool bAbsorb )
877 throw(::com::sun::star::lang::IllegalArgumentException,
878 ::com::sun::star::uno::RuntimeException);
879 virtual void SAL_CALL removeTextContent( const ::com::sun::star::uno::Reference<
880 ::com::sun::star::text::XTextContent >& xContent )
881 throw(::com::sun::star::container::NoSuchElementException,
882 ::com::sun::star::uno::RuntimeException);
884 // XSimpleText
885 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
886 createTextCursor() throw(::com::sun::star::uno::RuntimeException);
887 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL
888 createTextCursorByRange( const ::com::sun::star::uno::Reference<
889 ::com::sun::star::text::XTextRange >& aTextPosition )
890 throw(::com::sun::star::uno::RuntimeException);
891 virtual void SAL_CALL insertString( const ::com::sun::star::uno::Reference<
892 ::com::sun::star::text::XTextRange >& xRange,
893 const OUString& aString, sal_Bool bAbsorb )
894 throw(::com::sun::star::uno::RuntimeException);
895 virtual void SAL_CALL insertControlCharacter( const ::com::sun::star::uno::Reference<
896 ::com::sun::star::text::XTextRange >& xRange,
897 sal_Int16 nControlCharacter, sal_Bool bAbsorb )
898 throw(::com::sun::star::lang::IllegalArgumentException,
899 ::com::sun::star::uno::RuntimeException);
901 // XTextRange
902 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL
903 getText() throw(::com::sun::star::uno::RuntimeException);
904 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
905 getStart() throw(::com::sun::star::uno::RuntimeException);
906 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL
907 getEnd() throw(::com::sun::star::uno::RuntimeException);
908 virtual OUString SAL_CALL getString() throw(::com::sun::star::uno::RuntimeException);
909 virtual void SAL_CALL setString( const OUString& aString )
910 throw(::com::sun::star::uno::RuntimeException);
912 // XEnumerationAccess
913 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
914 createEnumeration() throw(::com::sun::star::uno::RuntimeException);
916 // XElementAccess
917 virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
918 throw(::com::sun::star::uno::RuntimeException);
919 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
921 // XCell
922 virtual OUString SAL_CALL getFormula() throw(::com::sun::star::uno::RuntimeException);
923 virtual void SAL_CALL setFormula( const OUString& aFormula )
924 throw(::com::sun::star::uno::RuntimeException);
925 virtual void SAL_CALL setFormulaResult( double nValue )
926 throw(::com::sun::star::uno::RuntimeException);
927 virtual void SAL_CALL setFormulaString( const OUString& aFormula )
928 throw(::com::sun::star::uno::RuntimeException);
929 virtual double SAL_CALL getValue() throw(::com::sun::star::uno::RuntimeException);
930 virtual void SAL_CALL setValue( double nValue ) throw(::com::sun::star::uno::RuntimeException);
931 virtual ::com::sun::star::table::CellContentType SAL_CALL getType()
932 throw(::com::sun::star::uno::RuntimeException);
933 virtual sal_Int32 SAL_CALL getError() throw(::com::sun::star::uno::RuntimeException);
935 // XFormulaTokens
936 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken > SAL_CALL getTokens()
937 throw (::com::sun::star::uno::RuntimeException);
938 virtual void SAL_CALL setTokens( const ::com::sun::star::uno::Sequence<
939 ::com::sun::star::sheet::FormulaToken >& aTokens )
940 throw (::com::sun::star::uno::RuntimeException);
942 // XCellAddressable
943 virtual ::com::sun::star::table::CellAddress SAL_CALL getCellAddress()
944 throw(::com::sun::star::uno::RuntimeException);
946 // XSheetAnnotationAnchor
947 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotation > SAL_CALL
948 getAnnotation() throw(::com::sun::star::uno::RuntimeException);
950 // XTextFieldsSupplier
951 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > SAL_CALL
952 getTextFields() throw(::com::sun::star::uno::RuntimeException);
953 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL
954 getTextFieldMasters() throw(::com::sun::star::uno::RuntimeException);
956 // XPropertySet overloaded due to cell properties
957 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
958 SAL_CALL getPropertySetInfo()
959 throw(::com::sun::star::uno::RuntimeException);
961 // XServiceInfo
962 virtual OUString SAL_CALL getImplementationName()
963 throw(::com::sun::star::uno::RuntimeException);
964 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
965 throw(::com::sun::star::uno::RuntimeException);
966 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
967 throw(::com::sun::star::uno::RuntimeException);
969 // XTypeProvider
970 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
971 throw(::com::sun::star::uno::RuntimeException);
972 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
973 throw(::com::sun::star::uno::RuntimeException);
975 // XActionLockable
976 virtual sal_Bool SAL_CALL isActionLocked() throw(::com::sun::star::uno::RuntimeException);
977 virtual void SAL_CALL addActionLock() throw(::com::sun::star::uno::RuntimeException);
978 virtual void SAL_CALL removeActionLock() throw(::com::sun::star::uno::RuntimeException);
979 virtual void SAL_CALL setActionLocks( sal_Int16 nLock )
980 throw(::com::sun::star::uno::RuntimeException);
981 virtual sal_Int16 SAL_CALL resetActionLocks() throw(::com::sun::star::uno::RuntimeException);
983 static OUString GetOutputString_Impl(ScDocument* pDoc, const ScAddress& aPos);
987 class ScTableSheetObj : public ScCellRangeObj,
988 public com::sun::star::sheet::XSpreadsheet,
989 public com::sun::star::container::XNamed,
990 public com::sun::star::sheet::XSheetPageBreak,
991 public com::sun::star::sheet::XCellRangeMovement,
992 public com::sun::star::table::XTableChartsSupplier,
993 public com::sun::star::sheet::XDataPilotTablesSupplier,
994 public com::sun::star::sheet::XScenariosSupplier,
995 public com::sun::star::sheet::XSheetAnnotationsSupplier,
996 public com::sun::star::drawing::XDrawPageSupplier,
997 public com::sun::star::sheet::XPrintAreas,
998 public com::sun::star::sheet::XSheetLinkable,
999 public com::sun::star::sheet::XSheetAuditing,
1000 public com::sun::star::sheet::XSheetOutline,
1001 public com::sun::star::util::XProtectable,
1002 public com::sun::star::sheet::XScenario,
1003 public com::sun::star::sheet::XScenarioEnhanced,
1004 public com::sun::star::sheet::XExternalSheetName,
1005 public com::sun::star::document::XEventsSupplier
1007 friend class ScTableSheetsObj; // for insertByName()
1009 private:
1010 const SfxItemPropertySet* pSheetPropSet;
1012 SCTAB GetTab_Impl() const;
1013 void PrintAreaUndo_Impl( ScPrintRangeSaver* pOldRanges );
1015 protected:
1016 virtual const SfxItemPropertyMap& GetItemPropertyMap();
1017 virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
1018 ::com::sun::star::uno::Any& )
1019 throw(::com::sun::star::uno::RuntimeException);
1020 virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
1021 const ::com::sun::star::uno::Any& aValue )
1022 throw(::com::sun::star::lang::IllegalArgumentException,
1023 ::com::sun::star::uno::RuntimeException);
1025 public:
1026 ScTableSheetObj(ScDocShell* pDocSh, SCTAB nTab);
1027 virtual ~ScTableSheetObj();
1028 virtual void RefChanged();
1029 void InitInsertSheet(ScDocShell* pDocSh, SCTAB nTab);
1031 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
1032 const ::com::sun::star::uno::Type & rType )
1033 throw(::com::sun::star::uno::RuntimeException);
1034 virtual void SAL_CALL acquire() throw();
1035 virtual void SAL_CALL release() throw();
1037 // XSpreadsheet
1038 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellCursor >
1039 SAL_CALL createCursor() throw(::com::sun::star::uno::RuntimeException);
1040 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellCursor > SAL_CALL
1041 createCursorByRange( const ::com::sun::star::uno::Reference<
1042 ::com::sun::star::sheet::XSheetCellRange >& aRange )
1043 throw(::com::sun::star::uno::RuntimeException);
1045 // XSheetCellRange
1046 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
1047 getSpreadsheet() throw(::com::sun::star::uno::RuntimeException);
1049 // XCellRange
1050 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > SAL_CALL
1051 getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow )
1052 throw(::com::sun::star::lang::IndexOutOfBoundsException,
1053 ::com::sun::star::uno::RuntimeException);
1054 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
1055 getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop,
1056 sal_Int32 nRight, sal_Int32 nBottom )
1057 throw(::com::sun::star::lang::IndexOutOfBoundsException,
1058 ::com::sun::star::uno::RuntimeException);
1059 using ScCellRangeObj::getCellRangeByName;
1060 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL
1061 getCellRangeByName( const OUString& aRange )
1062 throw(::com::sun::star::uno::RuntimeException);
1064 // XNamed
1065 virtual OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
1066 virtual void SAL_CALL setName( const OUString& aName )
1067 throw(::com::sun::star::uno::RuntimeException);
1069 // XSheetPageBreak
1070 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TablePageBreakData > SAL_CALL
1071 getColumnPageBreaks() throw(::com::sun::star::uno::RuntimeException);
1072 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TablePageBreakData > SAL_CALL
1073 getRowPageBreaks() throw(::com::sun::star::uno::RuntimeException);
1074 virtual void SAL_CALL removeAllManualPageBreaks() throw(::com::sun::star::uno::RuntimeException);
1076 // XCellRangeMovement
1077 virtual void SAL_CALL insertCells( const ::com::sun::star::table::CellRangeAddress& aRange,
1078 ::com::sun::star::sheet::CellInsertMode nMode )
1079 throw(::com::sun::star::uno::RuntimeException);
1080 virtual void SAL_CALL removeRange( const ::com::sun::star::table::CellRangeAddress& aRange,
1081 ::com::sun::star::sheet::CellDeleteMode nMode )
1082 throw(::com::sun::star::uno::RuntimeException);
1083 virtual void SAL_CALL moveRange( const ::com::sun::star::table::CellAddress& aDestination,
1084 const ::com::sun::star::table::CellRangeAddress& aSource )
1085 throw(::com::sun::star::uno::RuntimeException);
1086 virtual void SAL_CALL copyRange( const ::com::sun::star::table::CellAddress& aDestination,
1087 const ::com::sun::star::table::CellRangeAddress& aSource )
1088 throw(::com::sun::star::uno::RuntimeException);
1090 // XTableChartsSupplier
1091 virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableCharts > SAL_CALL
1092 getCharts() throw(::com::sun::star::uno::RuntimeException);
1094 // XDataPilotTablesSupplier
1095 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotTables > SAL_CALL
1096 getDataPilotTables() throw(::com::sun::star::uno::RuntimeException);
1098 // XScenariosSupplier
1099 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XScenarios > SAL_CALL
1100 getScenarios() throw(::com::sun::star::uno::RuntimeException);
1102 // XSheetAnnotationsSupplier
1103 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotations > SAL_CALL
1104 getAnnotations() throw(::com::sun::star::uno::RuntimeException);
1106 // XDrawPageSupplier
1107 virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL
1108 getDrawPage() throw(::com::sun::star::uno::RuntimeException);
1110 // XPrintAreas
1111 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
1112 getPrintAreas() throw(::com::sun::star::uno::RuntimeException);
1113 virtual void SAL_CALL setPrintAreas( const ::com::sun::star::uno::Sequence<
1114 ::com::sun::star::table::CellRangeAddress >& aPrintAreas )
1115 throw(::com::sun::star::uno::RuntimeException);
1116 virtual sal_Bool SAL_CALL getPrintTitleColumns() throw(::com::sun::star::uno::RuntimeException);
1117 virtual void SAL_CALL setPrintTitleColumns( sal_Bool bPrintTitleColumns )
1118 throw(::com::sun::star::uno::RuntimeException);
1119 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getTitleColumns()
1120 throw(::com::sun::star::uno::RuntimeException);
1121 virtual void SAL_CALL setTitleColumns(
1122 const ::com::sun::star::table::CellRangeAddress& aTitleColumns )
1123 throw(::com::sun::star::uno::RuntimeException);
1124 virtual sal_Bool SAL_CALL getPrintTitleRows() throw(::com::sun::star::uno::RuntimeException);
1125 virtual void SAL_CALL setPrintTitleRows( sal_Bool bPrintTitleRows )
1126 throw(::com::sun::star::uno::RuntimeException);
1127 virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getTitleRows()
1128 throw(::com::sun::star::uno::RuntimeException);
1129 virtual void SAL_CALL setTitleRows(
1130 const ::com::sun::star::table::CellRangeAddress& aTitleRows )
1131 throw(::com::sun::star::uno::RuntimeException);
1133 // XSheetLinkable
1134 virtual ::com::sun::star::sheet::SheetLinkMode SAL_CALL getLinkMode()
1135 throw(::com::sun::star::uno::RuntimeException);
1136 virtual void SAL_CALL setLinkMode( ::com::sun::star::sheet::SheetLinkMode nLinkMode )
1137 throw(::com::sun::star::uno::RuntimeException);
1138 virtual OUString SAL_CALL getLinkUrl() throw(::com::sun::star::uno::RuntimeException);
1139 virtual void SAL_CALL setLinkUrl( const OUString& aLinkUrl )
1140 throw(::com::sun::star::uno::RuntimeException);
1141 virtual OUString SAL_CALL getLinkSheetName() throw(::com::sun::star::uno::RuntimeException);
1142 virtual void SAL_CALL setLinkSheetName( const OUString& aLinkSheetName )
1143 throw(::com::sun::star::uno::RuntimeException);
1144 virtual void SAL_CALL link( const OUString& aUrl,
1145 const OUString& aSheetName,
1146 const OUString& aFilterName,
1147 const OUString& aFilterOptions,
1148 ::com::sun::star::sheet::SheetLinkMode nMode )
1149 throw(::com::sun::star::uno::RuntimeException);
1151 // XSheetAuditing
1152 virtual sal_Bool SAL_CALL hideDependents( const ::com::sun::star::table::CellAddress& aPosition )
1153 throw(::com::sun::star::uno::RuntimeException);
1154 virtual sal_Bool SAL_CALL hidePrecedents( const ::com::sun::star::table::CellAddress& aPosition )
1155 throw(::com::sun::star::uno::RuntimeException);
1156 virtual sal_Bool SAL_CALL showDependents( const ::com::sun::star::table::CellAddress& aPosition )
1157 throw(::com::sun::star::uno::RuntimeException);
1158 virtual sal_Bool SAL_CALL showPrecedents( const ::com::sun::star::table::CellAddress& aPosition )
1159 throw(::com::sun::star::uno::RuntimeException);
1160 virtual sal_Bool SAL_CALL showErrors( const ::com::sun::star::table::CellAddress& aPosition )
1161 throw(::com::sun::star::uno::RuntimeException);
1162 virtual sal_Bool SAL_CALL showInvalid() throw(::com::sun::star::uno::RuntimeException);
1163 virtual void SAL_CALL clearArrows() throw(::com::sun::star::uno::RuntimeException);
1165 // XSheetOutline
1166 virtual void SAL_CALL group( const ::com::sun::star::table::CellRangeAddress& aRange,
1167 ::com::sun::star::table::TableOrientation nOrientation )
1168 throw(::com::sun::star::uno::RuntimeException);
1169 virtual void SAL_CALL ungroup( const ::com::sun::star::table::CellRangeAddress& aRange,
1170 ::com::sun::star::table::TableOrientation nOrientation )
1171 throw(::com::sun::star::uno::RuntimeException);
1172 virtual void SAL_CALL autoOutline( const ::com::sun::star::table::CellRangeAddress& aRange )
1173 throw(::com::sun::star::uno::RuntimeException);
1174 virtual void SAL_CALL clearOutline() throw(::com::sun::star::uno::RuntimeException);
1175 virtual void SAL_CALL hideDetail( const ::com::sun::star::table::CellRangeAddress& aRange )
1176 throw(::com::sun::star::uno::RuntimeException);
1177 virtual void SAL_CALL showDetail( const ::com::sun::star::table::CellRangeAddress& aRange )
1178 throw(::com::sun::star::uno::RuntimeException);
1179 virtual void SAL_CALL showLevel( sal_Int16 nLevel,
1180 ::com::sun::star::table::TableOrientation nOrientation )
1181 throw(::com::sun::star::uno::RuntimeException);
1183 // XProtectable
1184 virtual void SAL_CALL protect( const OUString& aPassword )
1185 throw(::com::sun::star::uno::RuntimeException);
1186 virtual void SAL_CALL unprotect( const OUString& aPassword )
1187 throw(::com::sun::star::lang::IllegalArgumentException,
1188 ::com::sun::star::uno::RuntimeException);
1189 virtual sal_Bool SAL_CALL isProtected() throw(::com::sun::star::uno::RuntimeException);
1191 // XScenario
1192 virtual sal_Bool SAL_CALL getIsScenario() throw(::com::sun::star::uno::RuntimeException);
1193 virtual OUString SAL_CALL getScenarioComment() throw(::com::sun::star::uno::RuntimeException);
1194 virtual void SAL_CALL setScenarioComment( const OUString& aScenarioComment )
1195 throw(::com::sun::star::uno::RuntimeException);
1196 virtual void SAL_CALL addRanges( const ::com::sun::star::uno::Sequence<
1197 ::com::sun::star::table::CellRangeAddress >& aRanges )
1198 throw(::com::sun::star::uno::RuntimeException);
1199 virtual void SAL_CALL apply() throw(::com::sun::star::uno::RuntimeException);
1200 // XScenarioEnhanced
1201 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL
1202 getRanges( )
1203 throw(::com::sun::star::uno::RuntimeException);
1205 // XExternalSheetName
1206 virtual void SAL_CALL setExternalName( const OUString& aUrl, const OUString& aSheetName )
1207 throw (::com::sun::star::container::ElementExistException,
1208 ::com::sun::star::uno::RuntimeException);
1210 // XEventsSupplier
1211 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents()
1212 throw (::com::sun::star::uno::RuntimeException);
1214 // XPropertySet overloaded due to sheet properties
1215 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
1216 SAL_CALL getPropertySetInfo()
1217 throw(::com::sun::star::uno::RuntimeException);
1219 // XServiceInfo
1220 virtual OUString SAL_CALL getImplementationName()
1221 throw(::com::sun::star::uno::RuntimeException);
1222 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1223 throw(::com::sun::star::uno::RuntimeException);
1224 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1225 throw(::com::sun::star::uno::RuntimeException);
1227 // XUnoTunnel
1228 virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
1229 sal_Int8 >& aIdentifier )
1230 throw(::com::sun::star::uno::RuntimeException);
1232 static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
1233 static ScTableSheetObj* getImplementation( const com::sun::star::uno::Reference<
1234 com::sun::star::uno::XInterface> xObj );
1236 // XTypeProvider
1237 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
1238 throw(::com::sun::star::uno::RuntimeException);
1239 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
1240 throw(::com::sun::star::uno::RuntimeException);
1244 class ScTableColumnObj : public ScCellRangeObj,
1245 public com::sun::star::container::XNamed
1247 private:
1248 const SfxItemPropertySet* pColPropSet;
1250 protected:
1251 virtual const SfxItemPropertyMap& GetItemPropertyMap();
1252 virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
1253 ::com::sun::star::uno::Any& )
1254 throw(::com::sun::star::uno::RuntimeException);
1255 virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
1256 const ::com::sun::star::uno::Any& aValue )
1257 throw(::com::sun::star::lang::IllegalArgumentException,
1258 ::com::sun::star::uno::RuntimeException);
1260 public:
1261 ScTableColumnObj(ScDocShell* pDocSh, SCCOL nCol, SCTAB nTab);
1262 virtual ~ScTableColumnObj();
1264 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
1265 const ::com::sun::star::uno::Type & rType )
1266 throw(::com::sun::star::uno::RuntimeException);
1267 virtual void SAL_CALL acquire() throw();
1268 virtual void SAL_CALL release() throw();
1270 // XNamed
1271 virtual OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
1272 virtual void SAL_CALL setName( const OUString& aName )
1273 throw(::com::sun::star::uno::RuntimeException);
1275 // XPropertySet overloaded due to column properties
1276 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
1277 SAL_CALL getPropertySetInfo()
1278 throw(::com::sun::star::uno::RuntimeException);
1280 // XServiceInfo
1281 virtual OUString SAL_CALL getImplementationName()
1282 throw(::com::sun::star::uno::RuntimeException);
1283 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1284 throw(::com::sun::star::uno::RuntimeException);
1285 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1286 throw(::com::sun::star::uno::RuntimeException);
1288 // XTypeProvider
1289 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
1290 throw(::com::sun::star::uno::RuntimeException);
1291 virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
1292 throw(::com::sun::star::uno::RuntimeException);
1296 class ScTableRowObj : public ScCellRangeObj
1298 private:
1299 const SfxItemPropertySet* pRowPropSet;
1301 protected:
1302 virtual const SfxItemPropertyMap& GetItemPropertyMap();
1303 virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
1304 ::com::sun::star::uno::Any& )
1305 throw(::com::sun::star::uno::RuntimeException);
1306 virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
1307 const ::com::sun::star::uno::Any& aValue )
1308 throw(::com::sun::star::lang::IllegalArgumentException,
1309 ::com::sun::star::uno::RuntimeException);
1311 public:
1312 ScTableRowObj(ScDocShell* pDocSh, SCROW nRow, SCTAB nTab);
1313 virtual ~ScTableRowObj();
1315 // XPropertySet overloaded due to row properties
1316 virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
1317 SAL_CALL getPropertySetInfo()
1318 throw(::com::sun::star::uno::RuntimeException);
1320 // XServiceInfo
1321 virtual OUString SAL_CALL getImplementationName()
1322 throw(::com::sun::star::uno::RuntimeException);
1323 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1324 throw(::com::sun::star::uno::RuntimeException);
1325 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1326 throw(::com::sun::star::uno::RuntimeException);
1330 class ScCellsObj : public cppu::WeakImplHelper2<
1331 com::sun::star::container::XEnumerationAccess,
1332 com::sun::star::lang::XServiceInfo >,
1333 public SfxListener
1335 private:
1336 ScDocShell* pDocShell;
1337 ScRangeList aRanges;
1339 public:
1340 ScCellsObj(ScDocShell* pDocSh, const ScRangeList& rR);
1341 virtual ~ScCellsObj();
1343 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1345 // XEnumerationAccess
1346 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
1347 createEnumeration() throw(::com::sun::star::uno::RuntimeException);
1349 // XElementAccess
1350 virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
1351 throw(::com::sun::star::uno::RuntimeException);
1352 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
1354 // XServiceInfo
1355 virtual OUString SAL_CALL getImplementationName()
1356 throw(::com::sun::star::uno::RuntimeException);
1357 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1358 throw(::com::sun::star::uno::RuntimeException);
1359 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1360 throw(::com::sun::star::uno::RuntimeException);
1364 class ScCellsEnumeration : public cppu::WeakImplHelper2<
1365 com::sun::star::container::XEnumeration,
1366 com::sun::star::lang::XServiceInfo >,
1367 public SfxListener
1369 private:
1370 ScDocShell* pDocShell;
1371 ScRangeList aRanges;
1372 ScAddress aPos;
1373 ScMarkData* pMark;
1374 sal_Bool bAtEnd;
1376 private:
1377 void Advance_Impl();
1378 void CheckPos_Impl();
1380 public:
1381 ScCellsEnumeration(ScDocShell* pDocSh, const ScRangeList& rR);
1382 virtual ~ScCellsEnumeration();
1384 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1386 // XEnumeration
1387 virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException);
1388 virtual ::com::sun::star::uno::Any SAL_CALL nextElement()
1389 throw(::com::sun::star::container::NoSuchElementException,
1390 ::com::sun::star::lang::WrappedTargetException,
1391 ::com::sun::star::uno::RuntimeException);
1393 // XServiceInfo
1394 virtual OUString SAL_CALL getImplementationName()
1395 throw(::com::sun::star::uno::RuntimeException);
1396 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1397 throw(::com::sun::star::uno::RuntimeException);
1398 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1399 throw(::com::sun::star::uno::RuntimeException);
1402 class ScCellFormatsObj : public cppu::WeakImplHelper3<
1403 com::sun::star::container::XIndexAccess,
1404 com::sun::star::container::XEnumerationAccess,
1405 com::sun::star::lang::XServiceInfo >,
1406 public SfxListener
1408 private:
1409 ScDocShell* pDocShell;
1410 ScRange aTotalRange;
1412 private:
1413 ScCellRangeObj* GetObjectByIndex_Impl(long nIndex) const;
1415 public:
1416 ScCellFormatsObj(ScDocShell* pDocSh, const ScRange& rR);
1417 virtual ~ScCellFormatsObj();
1419 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1421 // XIndexAccess
1422 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
1423 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
1424 throw(::com::sun::star::lang::IndexOutOfBoundsException,
1425 ::com::sun::star::lang::WrappedTargetException,
1426 ::com::sun::star::uno::RuntimeException);
1428 // XEnumerationAccess
1429 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
1430 createEnumeration() throw(::com::sun::star::uno::RuntimeException);
1432 // XElementAccess
1433 virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
1434 throw(::com::sun::star::uno::RuntimeException);
1435 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
1437 // XServiceInfo
1438 virtual OUString SAL_CALL getImplementationName()
1439 throw(::com::sun::star::uno::RuntimeException);
1440 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1441 throw(::com::sun::star::uno::RuntimeException);
1442 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1443 throw(::com::sun::star::uno::RuntimeException);
1447 class ScCellFormatsEnumeration : public cppu::WeakImplHelper2<
1448 com::sun::star::container::XEnumeration,
1449 com::sun::star::lang::XServiceInfo >,
1450 public SfxListener
1452 private:
1453 ScDocShell* pDocShell;
1454 SCTAB nTab;
1455 ScAttrRectIterator* pIter;
1456 ScRange aNext;
1457 sal_Bool bAtEnd;
1458 sal_Bool bDirty;
1460 private:
1461 void Advance_Impl();
1462 ScCellRangeObj* NextObject_Impl();
1464 public:
1465 ScCellFormatsEnumeration(ScDocShell* pDocSh, const ScRange& rR);
1466 virtual ~ScCellFormatsEnumeration();
1468 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1470 // XEnumeration
1471 virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException);
1472 virtual ::com::sun::star::uno::Any SAL_CALL nextElement()
1473 throw(::com::sun::star::container::NoSuchElementException,
1474 ::com::sun::star::lang::WrappedTargetException,
1475 ::com::sun::star::uno::RuntimeException);
1477 // XServiceInfo
1478 virtual OUString SAL_CALL getImplementationName()
1479 throw(::com::sun::star::uno::RuntimeException);
1480 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1481 throw(::com::sun::star::uno::RuntimeException);
1482 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1483 throw(::com::sun::star::uno::RuntimeException);
1486 typedef std::vector< ScRangeList > ScMyRangeLists;
1488 class ScUniqueCellFormatsObj : public cppu::WeakImplHelper3<
1489 com::sun::star::container::XIndexAccess,
1490 com::sun::star::container::XEnumerationAccess,
1491 com::sun::star::lang::XServiceInfo >,
1492 public SfxListener
1494 private:
1495 ScDocShell* pDocShell;
1496 ScRange aTotalRange;
1497 ScMyRangeLists aRangeLists;
1499 private:
1500 void GetObjects_Impl();
1502 public:
1503 ScUniqueCellFormatsObj(ScDocShell* pDocSh, const ScRange& rR);
1504 virtual ~ScUniqueCellFormatsObj();
1506 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1508 // XIndexAccess
1509 virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
1510 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
1511 throw(::com::sun::star::lang::IndexOutOfBoundsException,
1512 ::com::sun::star::lang::WrappedTargetException,
1513 ::com::sun::star::uno::RuntimeException);
1515 // XEnumerationAccess
1516 virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
1517 createEnumeration() throw(::com::sun::star::uno::RuntimeException);
1519 // XElementAccess
1520 virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
1521 throw(::com::sun::star::uno::RuntimeException);
1522 virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
1524 // XServiceInfo
1525 virtual OUString SAL_CALL getImplementationName()
1526 throw(::com::sun::star::uno::RuntimeException);
1527 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1528 throw(::com::sun::star::uno::RuntimeException);
1529 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1530 throw(::com::sun::star::uno::RuntimeException);
1533 class ScUniqueCellFormatsEnumeration : public cppu::WeakImplHelper2<
1534 com::sun::star::container::XEnumeration,
1535 com::sun::star::lang::XServiceInfo >,
1536 public SfxListener
1538 private:
1539 ScMyRangeLists aRangeLists;
1540 ScDocShell* pDocShell;
1541 sal_Int32 nCurrentPosition;
1543 public:
1544 ScUniqueCellFormatsEnumeration(ScDocShell* pDocShell, const ScMyRangeLists& rRangeLists);
1545 virtual ~ScUniqueCellFormatsEnumeration();
1547 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1549 // XEnumeration
1550 virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException);
1551 virtual ::com::sun::star::uno::Any SAL_CALL nextElement()
1552 throw(::com::sun::star::container::NoSuchElementException,
1553 ::com::sun::star::lang::WrappedTargetException,
1554 ::com::sun::star::uno::RuntimeException);
1556 // XServiceInfo
1557 virtual OUString SAL_CALL getImplementationName()
1558 throw(::com::sun::star::uno::RuntimeException);
1559 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName )
1560 throw(::com::sun::star::uno::RuntimeException);
1561 virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames()
1562 throw(::com::sun::star::uno::RuntimeException);
1566 #endif
1568 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */