1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _CHART_MODEL_HXX
24 #define _CHART_MODEL_HXX
25 
26 #include "LifeTime.hxx"
27 #include "ServiceMacros.hxx"
28 
29 #include <com/sun/star/frame/XModel.hpp>
30 #include <com/sun/star/frame/XStorable2.hpp>
31 #include <com/sun/star/util/XModifiable.hpp>
32 #include <com/sun/star/util/XCloseable.hpp>
33 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
34 #include <com/sun/star/document/XUndoManagerSupplier.hpp>
35 #include <com/sun/star/document/XFilter.hpp>
36 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
37 #include <com/sun/star/lang/XServiceInfo.hpp>
38 #include <com/sun/star/lang/XInitialization.hpp>
39 #include <com/sun/star/uno/XComponentContext.hpp>
40 #include <com/sun/star/util/XCloneable.hpp>
41 #include <com/sun/star/embed/XVisualObject.hpp>
42 #include <com/sun/star/document/XStorageBasedDocument.hpp>
43 #include <com/sun/star/lang/XUnoTunnel.hpp>
44 #include <com/sun/star/util/XNumberFormatsSupplier.hpp>
45 #include <com/sun/star/container/XChild.hpp>
46 #include <com/sun/star/chart2/data/XDataSource.hpp>
47 #include <com/sun/star/chart2/XChartTypeTemplate.hpp>
48 #include <com/sun/star/container/XNameContainer.hpp>
49 
50 // public API
51 #include <com/sun/star/chart2/data/XDataProvider.hpp>
52 #include <com/sun/star/chart2/data/XDataReceiver.hpp>
53 
54 #include <com/sun/star/chart2/XChartDocument.hpp>
55 #include <com/sun/star/chart2/XTitled.hpp>
56 
57 #include <com/sun/star/frame/XLoadable.hpp>
58 #include <com/sun/star/embed/XEmbeddedObject.hpp>
59 #include <com/sun/star/embed/XStorage.hpp>
60 #include <com/sun/star/datatransfer/XTransferable.hpp>
61 
62 #if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_21)
63 #define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_21
64 #define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 21
65 #include "comphelper/implbase_var.hxx"
66 #endif
67 #include <osl/mutex.hxx>
68 #include <rtl/ref.hxx>
69 #include <cppuhelper/interfacecontainer.hxx>
70 #include <svtools/grfmgr.hxx>
71 
72 // for auto_ptr
73 #include <memory>
74 
75 class SvNumberFormatter;
76 
77 //=============================================================================
78 
79 namespace chart
80 {
81 
82 namespace impl
83 {
84 
85 // Note: needed for queryInterface (if it calls the base-class implementation)
86 typedef ::comphelper::WeakImplHelper21<
87 // 		 ::com::sun::star::frame::XModel		//comprehends XComponent (required interface), base of XChartDocument
88 		 ::com::sun::star::util::XCloseable		//comprehends XCloseBroadcaster
89 		,::com::sun::star::frame::XStorable2	//(extension of XStorable)
90 // 		,::com::sun::star::frame::XStorable		//(required interface) base of XStorable2
91 		,::com::sun::star::util::XModifiable	//comprehends XModifyBroadcaster (required interface)
92 	//	,::com::sun::star::uno::XWeak			// implemented by WeakImplHelper(optional interface)
93 	//	,::com::sun::star::uno::XInterface		// implemented by WeakImplHelper(optional interface)
94 	//	,::com::sun::star::lang::XTypeProvider	// implemented by WeakImplHelper
95 		,::com::sun::star::lang::XServiceInfo
96         ,::com::sun::star::lang::XInitialization
97         ,::com::sun::star::chart2::XChartDocument  // derived from XModel
98         ,::com::sun::star::chart2::data::XDataReceiver   // public API
99         ,::com::sun::star::chart2::XTitled
100         ,::com::sun::star::frame::XLoadable
101         ,::com::sun::star::util::XCloneable
102         ,::com::sun::star::embed::XVisualObject
103         ,::com::sun::star::lang::XMultiServiceFactory
104         ,::com::sun::star::document::XStorageBasedDocument
105         ,::com::sun::star::lang::XUnoTunnel
106         ,::com::sun::star::util::XNumberFormatsSupplier
107         ,::com::sun::star::container::XChild
108         ,::com::sun::star::util::XModifyListener
109         ,::com::sun::star::datatransfer::XTransferable
110         ,::com::sun::star::document::XDocumentPropertiesSupplier
111         ,::com::sun::star::chart2::data::XDataSource
112         ,::com::sun::star::document::XUndoManagerSupplier
113 		>
114     ChartModel_Base;
115 }
116 
117 class UndoManager;
118 
119 class ChartModel : public impl::ChartModel_Base
120 {
121 
122 private:
123 	mutable ::apphelper::CloseableLifeTimeManager	m_aLifeTimeManager;
124 
125 	mutable ::osl::Mutex	m_aModelMutex;
126 	sal_Bool volatile		m_bReadOnly;
127 	sal_Bool volatile		m_bModified;
128     sal_Int32               m_nInLoad;
129     sal_Bool volatile		m_bUpdateNotificationsPending;
130 
131 	::rtl::OUString																m_aResource;
132 	::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >	m_aMediaDescriptor;
133     ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentProperties > m_xDocumentProperties;
134     ::rtl::Reference< UndoManager >                                             m_pUndoManager;
135 
136 	::cppu::OInterfaceContainerHelper                                           m_aControllers;
137 	::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >	m_xCurrentController;
138 	sal_uInt16																	m_nControllerLockCount;
139 
140 //	::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >	m_aPrinterOptions;
141 
142     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
143     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation >      m_xOldModelAgg;
144 
145     ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >        m_xStorage;
146     //the content of this should be always synchronized with the current m_xViewWindow size. The variable is necessary to hold the information as long as no view window exists.
147     ::com::sun::star::awt::Size                                                  m_aVisualAreaSize;
148     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >          m_xParent;
149     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XRangeHighlighter > m_xRangeHighlighter;
150     ::std::vector< GraphicObject >                                               m_aGraphicObjectVector;
151 
152     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataProvider >   m_xDataProvider;
153     /** is only valid if m_xDataProvider is set. If m_xDataProvider is set to an
154         external data provider this reference must be set to 0
155     */
156     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataProvider >   m_xInternalDataProvider;
157 
158     ::com::sun::star::uno::Reference< com::sun::star::util::XNumberFormatsSupplier >
159                                 m_xOwnNumberFormatsSupplier;
160     ::com::sun::star::uno::Reference< com::sun::star::util::XNumberFormatsSupplier >
161                                 m_xNumberFormatsSupplier;
162     std::auto_ptr< SvNumberFormatter > m_apSvNumberFormatter; // #i113784# avoid memory leak
163 
164     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartTypeManager >
165         m_xChartTypeManager;
166 
167     // Diagram Access
168     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDiagram >
169         m_xDiagram;
170 
171     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XTitle >
172                                           m_xTitle;
173 
174     bool                                  m_bIsDisposed;
175     ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
176                                           m_xPageBackground;
177 
178     ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>     m_xXMLNamespaceMap;
179 
180     ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >     m_xModifyListener;
181 
182 private:
183 	//private methods
184 
185 	::rtl::OUString impl_g_getLocation();
186 
187 	sal_Bool
188 		impl_isControllerConnected(	const com::sun::star::uno::Reference<
189 							com::sun::star::frame::XController >& xController );
190 
191 	com::sun::star::uno::Reference< com::sun::star::frame::XController >
192 		impl_getCurrentController()
193 							throw( com::sun::star::uno::RuntimeException);
194 
195 	void SAL_CALL
196 		impl_notifyModifiedListeners()
197 							throw( com::sun::star::uno::RuntimeException);
198     void SAL_CALL
199         impl_notifyCloseListeners()
200 		                    throw( com::sun::star::uno::RuntimeException);
201     void SAL_CALL
202         impl_notifyStorageChangeListeners()
203                             throw(::com::sun::star::uno::RuntimeException);
204 
205     void impl_killInternalData() throw( com::sun::star::util::CloseVetoException );
206 
207     void impl_store(
208         const ::com::sun::star::uno::Sequence<
209             ::com::sun::star::beans::PropertyValue >& rMediaDescriptor,
210         const ::com::sun::star::uno::Reference<
211             ::com::sun::star::embed::XStorage > & xStorage );
212     void impl_load(
213         const ::com::sun::star::uno::Sequence<
214             ::com::sun::star::beans::PropertyValue >& rMediaDescriptor,
215         const ::com::sun::star::uno::Reference<
216             ::com::sun::star::embed::XStorage >& xStorage );
217     void impl_loadGraphics(
218         const ::com::sun::star::uno::Reference<
219             ::com::sun::star::embed::XStorage >& xStorage );
220     ::com::sun::star::uno::Reference<
221             ::com::sun::star::document::XFilter >
222         impl_createFilter( const ::com::sun::star::uno::Sequence<
223                       ::com::sun::star::beans::PropertyValue > & rMediaDescriptor );
224 
225     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartTypeTemplate > impl_createDefaultChartTypeTemplate();
226     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource > impl_createDefaultData();
227 
228     void impl_adjustAdditionalShapesPositionAndSize(
229         const ::com::sun::star::awt::Size& aVisualAreaSize );
230 
231     ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >
232         impl_getNumberFormatsSupplier();
233 
234 public:
235 	//no default constructor
236 	ChartModel(::com::sun::star::uno::Reference<
237 			   ::com::sun::star::uno::XComponentContext > const & xContext);
238     explicit ChartModel( const ChartModel & rOther );
239 	virtual ~ChartModel();
240 
241 	//-----------------------------------------------------------------
242 	// ::com::sun::star::lang::XServiceInfo
243 	//-----------------------------------------------------------------
244 
245     APPHELPER_XSERVICEINFO_DECL()
246 	APPHELPER_SERVICE_FACTORY_HELPER(ChartModel)
247 
248     //-----------------------------------------------------------------
249 	// ::com::sun::star::lang::XInitialization
250 	//-----------------------------------------------------------------
251     virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
252                 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
253 
254 	//-----------------------------------------------------------------
255 	// ::com::sun::star::frame::XModel (required interface)
256 	//-----------------------------------------------------------------
257 
258     virtual sal_Bool SAL_CALL
259 		attachResource( const ::rtl::OUString& rURL
260 							, const ::com::sun::star::uno::Sequence<
261 							::com::sun::star::beans::PropertyValue >& rMediaDescriptor )
262 							throw (::com::sun::star::uno::RuntimeException);
263 
264     virtual ::rtl::OUString SAL_CALL
265 		getURL()			throw (::com::sun::star::uno::RuntimeException);
266 
267     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL
268 		getArgs()			throw (::com::sun::star::uno::RuntimeException);
269 
270     virtual void SAL_CALL
271 		connectController( const ::com::sun::star::uno::Reference<
272 							::com::sun::star::frame::XController >& xController )
273 							throw (::com::sun::star::uno::RuntimeException);
274 
275     virtual void SAL_CALL
276 		disconnectController( const ::com::sun::star::uno::Reference<
277 							::com::sun::star::frame::XController >& xController )
278 							throw (::com::sun::star::uno::RuntimeException);
279 
280     virtual void SAL_CALL
281 		lockControllers()	throw (::com::sun::star::uno::RuntimeException);
282 
283     virtual void SAL_CALL
284 		unlockControllers() throw (::com::sun::star::uno::RuntimeException);
285 
286     virtual sal_Bool SAL_CALL
287 		hasControllersLocked()
288 							throw (::com::sun::star::uno::RuntimeException);
289 
290     virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > SAL_CALL
291 		getCurrentController()
292 							throw (::com::sun::star::uno::RuntimeException);
293 
294     virtual void SAL_CALL
295 		setCurrentController( const ::com::sun::star::uno::Reference<
296 							::com::sun::star::frame::XController >& xController )
297 							throw (::com::sun::star::container::NoSuchElementException
298 							, ::com::sun::star::uno::RuntimeException);
299 
300     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
301 		getCurrentSelection()
302 							throw (::com::sun::star::uno::RuntimeException);
303 
304 
305 	//-----------------------------------------------------------------
306 	// ::com::sun::star::lang::XComponent (base of XModel)
307 	//-----------------------------------------------------------------
308 	virtual void SAL_CALL
309 		dispose()			throw (::com::sun::star::uno::RuntimeException);
310 
311 	virtual void SAL_CALL
312 		addEventListener( const ::com::sun::star::uno::Reference<
313 						  ::com::sun::star::lang::XEventListener > & xListener )
314 							throw (::com::sun::star::uno::RuntimeException);
315 
316 	virtual void SAL_CALL
317 		removeEventListener( const ::com::sun::star::uno::Reference<
318 						  ::com::sun::star::lang::XEventListener > & xListener )
319 							throw (::com::sun::star::uno::RuntimeException);
320 
321 	//-----------------------------------------------------------------
322 	// ::com::sun::star::util::XCloseable
323 	//-----------------------------------------------------------------
324 	virtual void SAL_CALL
325 		close( sal_Bool bDeliverOwnership )
326                             throw(::com::sun::star::util::CloseVetoException,
327                                   ::com::sun::star::uno::RuntimeException);
328 
329 	//-----------------------------------------------------------------
330 	// ::com::sun::star::util::XCloseBroadcaster (base of XCloseable)
331 	//-----------------------------------------------------------------
332 	virtual void SAL_CALL
333 		addCloseListener( const ::com::sun::star::uno::Reference<
334 							::com::sun::star::util::XCloseListener > & xListener )
335 							throw (::com::sun::star::uno::RuntimeException);
336 
337 	virtual void SAL_CALL
338 		removeCloseListener( const ::com::sun::star::uno::Reference<
339 							::com::sun::star::util::XCloseListener > & xListener )
340 							throw (::com::sun::star::uno::RuntimeException);
341 
342 	//-----------------------------------------------------------------
343 	// ::com::sun::star::frame::XStorable2 (extension of XStorable)
344 	//-----------------------------------------------------------------
345     virtual void SAL_CALL storeSelf(
346         const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rMediaDescriptor )
347         throw (::com::sun::star::lang::IllegalArgumentException,
348                ::com::sun::star::io::IOException,
349                ::com::sun::star::uno::RuntimeException);
350 
351 	//-----------------------------------------------------------------
352 	// ::com::sun::star::frame::XStorable (required interface)
353 	//-----------------------------------------------------------------
354 	virtual sal_Bool SAL_CALL
355 		hasLocation()		throw (::com::sun::star::uno::RuntimeException);
356 
357     virtual ::rtl::OUString SAL_CALL
358 		getLocation()		throw (::com::sun::star::uno::RuntimeException);
359 
360     virtual sal_Bool SAL_CALL
361 		isReadonly()		throw (::com::sun::star::uno::RuntimeException);
362 
363     virtual void SAL_CALL
364 		store()				throw (::com::sun::star::io::IOException
365 							, ::com::sun::star::uno::RuntimeException);
366 
367     virtual void SAL_CALL
368 		storeAsURL( const ::rtl::OUString& rURL
369 							, const ::com::sun::star::uno::Sequence<
370 							::com::sun::star::beans::PropertyValue >& rMediaDescriptor )
371 							throw (::com::sun::star::io::IOException
372 							, ::com::sun::star::uno::RuntimeException);
373 
374     virtual void SAL_CALL
375 		storeToURL( const ::rtl::OUString& rURL
376 							, const ::com::sun::star::uno::Sequence<
377 							::com::sun::star::beans::PropertyValue >& rMediaDescriptor )
378 							throw (::com::sun::star::io::IOException
379 							, ::com::sun::star::uno::RuntimeException);
380 
381 	//-----------------------------------------------------------------
382 	// ::com::sun::star::util::XModifiable (required interface)
383 	//-----------------------------------------------------------------
384 	virtual sal_Bool SAL_CALL
385 		isModified()		throw (::com::sun::star::uno::RuntimeException);
386 
387     virtual void SAL_CALL
388 		setModified( sal_Bool bModified )
389 							throw (::com::sun::star::beans::PropertyVetoException
390 							, ::com::sun::star::uno::RuntimeException);
391 
392 	//-----------------------------------------------------------------
393 	// ::com::sun::star::util::XModifyBroadcaster (base of XModifiable)
394 	//-----------------------------------------------------------------
395 	virtual void SAL_CALL
396 		addModifyListener( const ::com::sun::star::uno::Reference<
397 							::com::sun::star::util::XModifyListener >& xListener )
398 							throw (::com::sun::star::uno::RuntimeException);
399 
400     virtual void SAL_CALL
401 		removeModifyListener( const ::com::sun::star::uno::Reference<
402 							::com::sun::star::util::XModifyListener >& xListener )
403 							throw (::com::sun::star::uno::RuntimeException);
404 
405     // ____ XModifyListener ____
406     virtual void SAL_CALL modified(
407         const ::com::sun::star::lang::EventObject& aEvent )
408         throw (::com::sun::star::uno::RuntimeException);
409 
410     // ____ XEventListener (base of XModifyListener) ____
411     virtual void SAL_CALL disposing(
412         const ::com::sun::star::lang::EventObject& Source )
413         throw (::com::sun::star::uno::RuntimeException);
414 
415     // ____ datatransferable::XTransferable ____
416     virtual ::com::sun::star::uno::Any SAL_CALL getTransferData(
417         const ::com::sun::star::datatransfer::DataFlavor& aFlavor )
418         throw (::com::sun::star::datatransfer::UnsupportedFlavorException,
419                ::com::sun::star::io::IOException,
420                ::com::sun::star::uno::RuntimeException);
421     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors()
422         throw (::com::sun::star::uno::RuntimeException);
423     virtual ::sal_Bool SAL_CALL isDataFlavorSupported(
424         const ::com::sun::star::datatransfer::DataFlavor& aFlavor )
425         throw (::com::sun::star::uno::RuntimeException);
426 
427 	//-----------------------------------------------------------------
428     // lang::XTypeProvider (overloaded method of WeakImplHelper)
429 	//-----------------------------------------------------------------
430     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL
431         getTypes() throw (::com::sun::star::uno::RuntimeException);
432 
433     // ____ document::XDocumentPropertiesSupplier ____
434     virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentProperties > SAL_CALL
435         getDocumentProperties(  ) throw (::com::sun::star::uno::RuntimeException);
436 
437     // ____ document::XUndoManagerSupplier ____
438     virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XUndoManager > SAL_CALL
439         getUndoManager(  ) throw (::com::sun::star::uno::RuntimeException);
440 
441 	//-----------------------------------------------------------------
442 	// ::com::sun::star::chart2::XChartDocument
443 	//-----------------------------------------------------------------
444     virtual ::com::sun::star::uno::Reference<
445                 ::com::sun::star::chart2::XDiagram > SAL_CALL
446         getFirstDiagram()       throw (::com::sun::star::uno::RuntimeException);
447     virtual void SAL_CALL setFirstDiagram(
448         const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDiagram >& xDiagram )
449         throw (::com::sun::star::uno::RuntimeException);
450     virtual void SAL_CALL
451         createInternalDataProvider( sal_Bool bCloneExistingData )
452             throw (::com::sun::star::util::CloseVetoException,
453                    ::com::sun::star::uno::RuntimeException);
454     virtual ::sal_Bool SAL_CALL hasInternalDataProvider()
455         throw (::com::sun::star::uno::RuntimeException);
456     virtual ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataProvider > SAL_CALL
457         getDataProvider()
458             throw (::com::sun::star::uno::RuntimeException);
459     virtual void SAL_CALL
460         setChartTypeManager( const ::com::sun::star::uno::Reference<
461                              ::com::sun::star::chart2::XChartTypeManager >& xNewManager )
462             throw (::com::sun::star::uno::RuntimeException);
463     virtual ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartTypeManager > SAL_CALL
464         getChartTypeManager()
465             throw (::com::sun::star::uno::RuntimeException);
466     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL
467         getPageBackground()
468             throw (::com::sun::star::uno::RuntimeException);
469 
470     // ____ XDataReceiver (public API) ____
471     virtual void SAL_CALL
472         attachDataProvider( const ::com::sun::star::uno::Reference<
473                             ::com::sun::star::chart2::data::XDataProvider >& xProvider )
474             throw (::com::sun::star::uno::RuntimeException);
475     virtual void SAL_CALL setArguments(
476         const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArguments )
477         throw (::com::sun::star::lang::IllegalArgumentException,
478                ::com::sun::star::uno::RuntimeException);
479     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getUsedRangeRepresentations()
480         throw (::com::sun::star::uno::RuntimeException);
481     virtual ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource > SAL_CALL getUsedData()
482         throw (::com::sun::star::uno::RuntimeException);
483     virtual void SAL_CALL attachNumberFormatsSupplier( const ::com::sun::star::uno::Reference<
484         ::com::sun::star::util::XNumberFormatsSupplier >& xSupplier )
485             throw (::com::sun::star::uno::RuntimeException);
486     virtual ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XRangeHighlighter > SAL_CALL getRangeHighlighter()
487         throw (::com::sun::star::uno::RuntimeException);
488 
489     // ____ XTitled ____
490     virtual ::com::sun::star::uno::Reference<
491         ::com::sun::star::chart2::XTitle > SAL_CALL getTitleObject()
492         throw (::com::sun::star::uno::RuntimeException);
493     virtual void SAL_CALL setTitleObject( const ::com::sun::star::uno::Reference<
494                                           ::com::sun::star::chart2::XTitle >& Title )
495         throw (::com::sun::star::uno::RuntimeException);
496 
497     // ____ XInterface (for old API wrapper) ____
498     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType )
499         throw (::com::sun::star::uno::RuntimeException);
500 
501     // ____ XLoadable ____
502     virtual void SAL_CALL initNew()
503         throw (::com::sun::star::frame::DoubleInitializationException,
504                ::com::sun::star::io::IOException,
505                ::com::sun::star::uno::Exception,
506                ::com::sun::star::uno::RuntimeException);
507     virtual void SAL_CALL load( const ::com::sun::star::uno::Sequence<
508                                 ::com::sun::star::beans::PropertyValue >& rMediaDescriptor )
509         throw (::com::sun::star::frame::DoubleInitializationException,
510                ::com::sun::star::io::IOException,
511                ::com::sun::star::uno::Exception,
512                ::com::sun::star::uno::RuntimeException);
513 
514     // ____ XCloneable ____
515     virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone()
516         throw (::com::sun::star::uno::RuntimeException);
517 
518     // ____ XVisualObject ____
519     virtual void SAL_CALL setVisualAreaSize(
520         ::sal_Int64 nAspect,
521         const ::com::sun::star::awt::Size& aSize )
522         throw (::com::sun::star::lang::IllegalArgumentException,
523                ::com::sun::star::embed::WrongStateException,
524                ::com::sun::star::uno::Exception,
525                ::com::sun::star::uno::RuntimeException);
526     virtual ::com::sun::star::awt::Size SAL_CALL getVisualAreaSize(
527         ::sal_Int64 nAspect )
528         throw (::com::sun::star::lang::IllegalArgumentException,
529                ::com::sun::star::embed::WrongStateException,
530                ::com::sun::star::uno::Exception,
531                ::com::sun::star::uno::RuntimeException);
532     virtual ::com::sun::star::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation(
533         ::sal_Int64 nAspect )
534         throw (::com::sun::star::lang::IllegalArgumentException,
535                ::com::sun::star::embed::WrongStateException,
536                ::com::sun::star::uno::Exception,
537                ::com::sun::star::uno::RuntimeException);
538     virtual ::sal_Int32 SAL_CALL getMapUnit(
539         ::sal_Int64 nAspect )
540         throw (::com::sun::star::uno::Exception,
541                ::com::sun::star::uno::RuntimeException);
542 
543     // ____ XMultiServiceFactory ____
544     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
545         createInstance( const ::rtl::OUString& aServiceSpecifier )
546             throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
547     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
548         createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier
549                                    , const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Arguments )
550             throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
551     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
552         getAvailableServiceNames() throw (::com::sun::star::uno::RuntimeException);
553 
554     // ____ XStorageBasedDocument ____
555     virtual void SAL_CALL loadFromStorage(
556         const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
557         const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rMediaDescriptor )
558         throw (::com::sun::star::lang::IllegalArgumentException,
559                ::com::sun::star::frame::DoubleInitializationException,
560                ::com::sun::star::io::IOException,
561                ::com::sun::star::uno::Exception,
562                ::com::sun::star::uno::RuntimeException);
563     virtual void SAL_CALL storeToStorage(
564         const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
565         const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rMediaDescriptor )
566         throw (::com::sun::star::lang::IllegalArgumentException,
567                ::com::sun::star::io::IOException,
568                ::com::sun::star::uno::Exception,
569                ::com::sun::star::uno::RuntimeException);
570     virtual void SAL_CALL switchToStorage(
571         const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage )
572         throw (::com::sun::star::lang::IllegalArgumentException,
573                ::com::sun::star::io::IOException,
574                ::com::sun::star::uno::Exception,
575                ::com::sun::star::uno::RuntimeException);
576     virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > SAL_CALL getDocumentStorage()
577         throw (::com::sun::star::io::IOException,
578                ::com::sun::star::uno::Exception,
579                ::com::sun::star::uno::RuntimeException);
580     virtual void SAL_CALL addStorageChangeListener(
581         const ::com::sun::star::uno::Reference< ::com::sun::star::document::XStorageChangeListener >& xListener )
582         throw (::com::sun::star::uno::RuntimeException);
583     virtual void SAL_CALL removeStorageChangeListener(
584         const ::com::sun::star::uno::Reference< ::com::sun::star::document::XStorageChangeListener >& xListener )
585         throw (::com::sun::star::uno::RuntimeException);
586 
587 	// for SvNumberFormatsSupplierObj
588     // ____ XUnoTunnel ___
589     virtual ::sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& aIdentifier )
590             throw (::com::sun::star::uno::RuntimeException);
591 
592     // ____ XNumberFormatsSupplier ____
593     virtual ::com::sun::star::uno::Reference<
594                 ::com::sun::star::beans::XPropertySet > SAL_CALL getNumberFormatSettings()
595             throw (::com::sun::star::uno::RuntimeException);
596     virtual ::com::sun::star::uno::Reference<
597                 ::com::sun::star::util::XNumberFormats > SAL_CALL getNumberFormats()
598             throw (::com::sun::star::uno::RuntimeException);
599 
600     // ____ XChild ____
601     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent()
602         throw (::com::sun::star::uno::RuntimeException);
603     virtual void SAL_CALL setParent(
604         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent )
605         throw (::com::sun::star::lang::NoSupportException,
606                ::com::sun::star::uno::RuntimeException);
607 
608     // ____ XDataSource ____ allows access to the currently used data and data ranges
609     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > > SAL_CALL getDataSequences()
610         throw (::com::sun::star::uno::RuntimeException);
611 };
612 
613 }  // namespace chart
614 
615 #endif
616