Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
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/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
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 .
18 : */
19 :
20 : #ifndef SC_CELLSUNO_HXX
21 : #define SC_CELLSUNO_HXX
22 :
23 : #include "global.hxx" // ScRange, ScAddress
24 : #include "rangelst.hxx" // ScRangeList
25 :
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>
95 :
96 : #include <vector>
97 :
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;
109 :
110 : namespace editeng { class SvxBorderLine; }
111 :
112 : class ScLinkListener : public SvtListener
113 : {
114 : Link aLink;
115 : public:
116 3008 : ScLinkListener(const Link& rL) : aLink(rL) {}
117 : virtual ~ScLinkListener();
118 : virtual void Notify( SvtBroadcaster& rBC, const SfxHint& rHint );
119 : };
120 :
121 : typedef ::com::sun::star::uno::Reference<
122 : ::com::sun::star::util::XModifyListener > XModifyListenerRef;
123 : typedef boost::ptr_vector<XModifyListenerRef> XModifyListenerArr_Impl;
124 :
125 :
126 : // ScCellRangesBase - base class for ScCellRangesObj (with access by index)
127 : // and ScCellRangeObj (without access by index)
128 :
129 : // XServiceInfo is implemented in derived classes
130 :
131 : class ScHelperFunctions
132 : {
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 );
146 : };
147 :
148 : namespace ooo
149 : {
150 : namespace vba {
151 : namespace excel {
152 : class ScVbaCellRangeAccess; // Vba Helper class
153 : }
154 : }
155 : }
156 :
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
173 : {
174 : friend class ScTabViewObj; // for select()
175 : friend class ScTableSheetObj; // for createCursorByRange()
176 : friend class ooo::vba::excel::ScVbaCellRangeAccess;
177 :
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;
194 :
195 : DECL_LINK( ValueListenerHdl, SfxHint* );
196 :
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;
202 :
203 : const ScPatternAttr* GetCurrentAttrsFlat();
204 : const ScPatternAttr* GetCurrentAttrsDeep();
205 : SfxItemSet* GetCurrentDataSet(bool bNoDflt = false);
206 : void ForgetMarkData();
207 : void ForgetCurrentAttrs();
208 :
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);
216 :
217 : protected:
218 : const ScMarkData* GetMarkData();
219 :
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);
231 :
232 : public:
233 : ScCellRangesBase(ScDocShell* pDocSh, const ScRange& rR);
234 : ScCellRangesBase(ScDocShell* pDocSh, const ScRangeList& rR);
235 : virtual ~ScCellRangesBase();
236 :
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();
242 :
243 : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
244 : virtual void RefChanged();
245 :
246 : // from derived classes and by getImplementation
247 48910 : ScDocShell* GetDocShell() const { return pDocShell; }
248 : ScDocument* GetDocument() const;
249 12030 : const ScRangeList& GetRangeList() const { return aRanges; }
250 : void AddRange(const ScRange& rRange, const sal_Bool bMergeRanges);
251 :
252 : // arouse object created via service:
253 : void InitInsertRange(ScDocShell* pDocSh, const ScRange& rR);
254 :
255 : void SetNewRange(const ScRange& rNew); // for cursor
256 : void SetNewRanges(const ScRangeList& rNew);
257 :
258 : void SetCursorOnly(sal_Bool bSet);
259 0 : sal_Bool IsCursorOnly() const { return bCursorOnly; }
260 :
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);
267 :
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);
308 :
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);
327 :
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);
339 :
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);
358 :
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);
362 :
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);
374 :
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);
391 :
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);
415 :
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);
423 :
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);
442 :
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);
449 :
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);
457 :
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);
465 :
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);
470 :
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 );
474 :
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);
480 : };
481 :
482 :
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
487 : {
488 : private:
489 : struct Impl;
490 : ::boost::scoped_ptr<Impl> m_pImpl;
491 :
492 : ScCellRangeObj* GetObjectByIndex_Impl(sal_Int32 nIndex) const;
493 :
494 : public:
495 : ScCellRangesObj(ScDocShell* pDocSh, const ScRangeList& rR);
496 : virtual ~ScCellRangesObj();
497 :
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();
503 :
504 : virtual void RefChanged();
505 :
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);
513 :
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);
529 :
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);
541 :
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);
549 :
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);
559 :
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);
566 :
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);
571 :
572 : // XEnumerationAccess
573 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
574 : createEnumeration() throw(::com::sun::star::uno::RuntimeException);
575 :
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);
583 :
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);
589 : };
590 :
591 :
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
610 : {
611 : private:
612 : const SfxItemPropertySet* pRangePropSet;
613 : ScRange aRange;
614 :
615 : protected:
616 90 : 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);
625 :
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);
630 :
631 : void SetArrayFormula_Impl( const OUString& rFormula,
632 : const OUString& rFormulaNmsp,
633 : const formula::FormulaGrammar::Grammar eGrammar )
634 : throw(::com::sun::star::uno::RuntimeException);
635 :
636 : public:
637 : ScCellRangeObj(ScDocShell* pDocSh, const ScRange& rR);
638 : virtual ~ScCellRangeObj();
639 :
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 );
643 :
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();
649 :
650 : virtual void RefChanged();
651 :
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);
657 :
658 : // XCellRangeAddressable
659 : virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getRangeAddress()
660 : throw(::com::sun::star::uno::RuntimeException);
661 :
662 : // XSheetCellRange
663 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
664 : getSpreadsheet() throw(::com::sun::star::uno::RuntimeException);
665 :
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);
670 :
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);
677 :
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);
686 :
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);
694 :
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);
702 :
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);
706 :
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);
716 :
717 : // XAutoFormattable
718 : virtual void SAL_CALL autoFormat( const OUString& aName )
719 : throw(::com::sun::star::lang::IllegalArgumentException,
720 : ::com::sun::star::uno::RuntimeException);
721 :
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);
728 :
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);
734 :
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);
742 :
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);
751 :
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);
759 :
760 : // XCellFormatRangesSupplier
761 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
762 : getCellFormatRanges() throw(::com::sun::star::uno::RuntimeException);
763 :
764 : // XUniqueCellFormatRangesSupplier
765 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
766 : getUniqueCellFormatRanges() throw(::com::sun::star::uno::RuntimeException);
767 :
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);
773 :
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);
790 :
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);
795 :
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);
803 :
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);
809 : };
810 :
811 :
812 : //! really derive cell from range?
813 :
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
823 : {
824 : private:
825 : rtl::Reference<SvxUnoText> mxUnoText;
826 : const SfxItemPropertySet* pCellPropSet;
827 : ScAddress aCellPos;
828 : sal_Int16 nActionLockCount;
829 :
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();
837 :
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);
847 :
848 : public:
849 : static const SvxItemPropertySet* GetEditPropertySet();
850 : static const SfxItemPropertyMap& GetCellPropertyMap();
851 :
852 : ScCellObj(ScDocShell* pDocSh, const ScAddress& rP);
853 : virtual ~ScCellObj();
854 :
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();
860 :
861 : virtual void RefChanged();
862 :
863 : SvxUnoText& GetUnoText();
864 :
865 : // XML import needs to set results at formula cells,
866 : // not meant for any other purpose.
867 0 : const ScAddress& GetPosition() const { return aCellPos; }
868 :
869 : void InputEnglishString( const OUString& rText );
870 :
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);
883 :
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);
900 :
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);
911 :
912 : // XEnumerationAccess
913 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
914 : createEnumeration() throw(::com::sun::star::uno::RuntimeException);
915 :
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);
920 :
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);
934 :
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);
941 :
942 : // XCellAddressable
943 : virtual ::com::sun::star::table::CellAddress SAL_CALL getCellAddress()
944 : throw(::com::sun::star::uno::RuntimeException);
945 :
946 : // XSheetAnnotationAnchor
947 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotation > SAL_CALL
948 : getAnnotation() throw(::com::sun::star::uno::RuntimeException);
949 :
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);
955 :
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);
960 :
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);
968 :
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);
974 :
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);
982 :
983 : static OUString GetOutputString_Impl(ScDocument* pDoc, const ScAddress& aPos);
984 : };
985 :
986 :
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
1006 : {
1007 : friend class ScTableSheetsObj; // for insertByName()
1008 :
1009 : private:
1010 : const SfxItemPropertySet* pSheetPropSet;
1011 :
1012 : SCTAB GetTab_Impl() const;
1013 : void PrintAreaUndo_Impl( ScPrintRangeSaver* pOldRanges );
1014 :
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);
1024 :
1025 : public:
1026 : ScTableSheetObj(ScDocShell* pDocSh, SCTAB nTab);
1027 : virtual ~ScTableSheetObj();
1028 : virtual void RefChanged();
1029 : void InitInsertSheet(ScDocShell* pDocSh, SCTAB nTab);
1030 :
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();
1036 :
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);
1044 :
1045 : // XSheetCellRange
1046 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL
1047 : getSpreadsheet() throw(::com::sun::star::uno::RuntimeException);
1048 :
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);
1063 :
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);
1068 :
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);
1075 :
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);
1089 :
1090 : // XTableChartsSupplier
1091 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableCharts > SAL_CALL
1092 : getCharts() throw(::com::sun::star::uno::RuntimeException);
1093 :
1094 : // XDataPilotTablesSupplier
1095 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotTables > SAL_CALL
1096 : getDataPilotTables() throw(::com::sun::star::uno::RuntimeException);
1097 :
1098 : // XScenariosSupplier
1099 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XScenarios > SAL_CALL
1100 : getScenarios() throw(::com::sun::star::uno::RuntimeException);
1101 :
1102 : // XSheetAnnotationsSupplier
1103 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotations > SAL_CALL
1104 : getAnnotations() throw(::com::sun::star::uno::RuntimeException);
1105 :
1106 : // XDrawPageSupplier
1107 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL
1108 : getDrawPage() throw(::com::sun::star::uno::RuntimeException);
1109 :
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);
1132 :
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);
1150 :
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);
1164 :
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);
1182 :
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);
1190 :
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);
1204 :
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);
1209 :
1210 : // XEventsSupplier
1211 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents()
1212 : throw (::com::sun::star::uno::RuntimeException);
1213 :
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);
1218 :
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);
1226 :
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);
1231 :
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 );
1235 :
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);
1241 : };
1242 :
1243 :
1244 : class ScTableColumnObj : public ScCellRangeObj,
1245 : public com::sun::star::container::XNamed
1246 : {
1247 : private:
1248 : const SfxItemPropertySet* pColPropSet;
1249 :
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);
1259 :
1260 : public:
1261 : ScTableColumnObj(ScDocShell* pDocSh, SCCOL nCol, SCTAB nTab);
1262 : virtual ~ScTableColumnObj();
1263 :
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();
1269 :
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);
1274 :
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);
1279 :
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);
1287 :
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);
1293 : };
1294 :
1295 :
1296 : class ScTableRowObj : public ScCellRangeObj
1297 : {
1298 : private:
1299 : const SfxItemPropertySet* pRowPropSet;
1300 :
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);
1310 :
1311 : public:
1312 : ScTableRowObj(ScDocShell* pDocSh, SCROW nRow, SCTAB nTab);
1313 : virtual ~ScTableRowObj();
1314 :
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);
1319 :
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);
1327 : };
1328 :
1329 :
1330 : class ScCellsObj : public cppu::WeakImplHelper2<
1331 : com::sun::star::container::XEnumerationAccess,
1332 : com::sun::star::lang::XServiceInfo >,
1333 : public SfxListener
1334 : {
1335 : private:
1336 : ScDocShell* pDocShell;
1337 : ScRangeList aRanges;
1338 :
1339 : public:
1340 : ScCellsObj(ScDocShell* pDocSh, const ScRangeList& rR);
1341 : virtual ~ScCellsObj();
1342 :
1343 : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1344 :
1345 : // XEnumerationAccess
1346 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
1347 : createEnumeration() throw(::com::sun::star::uno::RuntimeException);
1348 :
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);
1353 :
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);
1361 : };
1362 :
1363 :
1364 : class ScCellsEnumeration : public cppu::WeakImplHelper2<
1365 : com::sun::star::container::XEnumeration,
1366 : com::sun::star::lang::XServiceInfo >,
1367 : public SfxListener
1368 : {
1369 : private:
1370 : ScDocShell* pDocShell;
1371 : ScRangeList aRanges;
1372 : ScAddress aPos;
1373 : ScMarkData* pMark;
1374 : sal_Bool bAtEnd;
1375 :
1376 : private:
1377 : void Advance_Impl();
1378 : void CheckPos_Impl();
1379 :
1380 : public:
1381 : ScCellsEnumeration(ScDocShell* pDocSh, const ScRangeList& rR);
1382 : virtual ~ScCellsEnumeration();
1383 :
1384 : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1385 :
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);
1392 :
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);
1400 : };
1401 :
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
1407 : {
1408 : private:
1409 : ScDocShell* pDocShell;
1410 : ScRange aTotalRange;
1411 :
1412 : private:
1413 : ScCellRangeObj* GetObjectByIndex_Impl(long nIndex) const;
1414 :
1415 : public:
1416 : ScCellFormatsObj(ScDocShell* pDocSh, const ScRange& rR);
1417 : virtual ~ScCellFormatsObj();
1418 :
1419 : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1420 :
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);
1427 :
1428 : // XEnumerationAccess
1429 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
1430 : createEnumeration() throw(::com::sun::star::uno::RuntimeException);
1431 :
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);
1436 :
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);
1444 : };
1445 :
1446 :
1447 : class ScCellFormatsEnumeration : public cppu::WeakImplHelper2<
1448 : com::sun::star::container::XEnumeration,
1449 : com::sun::star::lang::XServiceInfo >,
1450 : public SfxListener
1451 : {
1452 : private:
1453 : ScDocShell* pDocShell;
1454 : SCTAB nTab;
1455 : ScAttrRectIterator* pIter;
1456 : ScRange aNext;
1457 : sal_Bool bAtEnd;
1458 : sal_Bool bDirty;
1459 :
1460 : private:
1461 : void Advance_Impl();
1462 : ScCellRangeObj* NextObject_Impl();
1463 :
1464 : public:
1465 : ScCellFormatsEnumeration(ScDocShell* pDocSh, const ScRange& rR);
1466 : virtual ~ScCellFormatsEnumeration();
1467 :
1468 : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1469 :
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);
1476 :
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);
1484 : };
1485 :
1486 : typedef std::vector< ScRangeList > ScMyRangeLists;
1487 :
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
1493 : {
1494 : private:
1495 : ScDocShell* pDocShell;
1496 : ScRange aTotalRange;
1497 : ScMyRangeLists aRangeLists;
1498 :
1499 : private:
1500 : void GetObjects_Impl();
1501 :
1502 : public:
1503 : ScUniqueCellFormatsObj(ScDocShell* pDocSh, const ScRange& rR);
1504 : virtual ~ScUniqueCellFormatsObj();
1505 :
1506 : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1507 :
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);
1514 :
1515 : // XEnumerationAccess
1516 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
1517 : createEnumeration() throw(::com::sun::star::uno::RuntimeException);
1518 :
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);
1523 :
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);
1531 : };
1532 :
1533 : class ScUniqueCellFormatsEnumeration : public cppu::WeakImplHelper2<
1534 : com::sun::star::container::XEnumeration,
1535 : com::sun::star::lang::XServiceInfo >,
1536 : public SfxListener
1537 : {
1538 : private:
1539 : ScMyRangeLists aRangeLists;
1540 : ScDocShell* pDocShell;
1541 : sal_Int32 nCurrentPosition;
1542 :
1543 : public:
1544 : ScUniqueCellFormatsEnumeration(ScDocShell* pDocShell, const ScMyRangeLists& rRangeLists);
1545 : virtual ~ScUniqueCellFormatsEnumeration();
1546 :
1547 : virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
1548 :
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);
1555 :
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);
1563 : };
1564 :
1565 :
1566 : #endif
1567 :
1568 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|