blob: 0f92ad7ee2ec58dd196271bd03e880e1aff997fe [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_CHART2UNO_HXX
#define SC_CHART2UNO_HXX
#include "cellsuno.hxx" // for XModifyListenerArr_Impl / ScLinkListener
#include "rangelst.hxx"
#include "externalrefmgr.hxx"
#include "token.hxx"
#include "chartlis.hxx"
#include <svl/lstner.hxx>
#include <com/sun/star/chart/ChartDataRowSource.hpp>
#include <com/sun/star/chart2/data/XDataProvider.hpp>
#include <com/sun/star/chart2/data/XRangeXMLConversion.hpp>
#include <com/sun/star/chart2/data/XDataSource.hpp>
#include <com/sun/star/chart2/data/XDataSequence.hpp>
#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
#include <com/sun/star/chart2/data/XNumericalDataSequence.hpp>
#include <com/sun/star/chart2/data/XLabeledDataSequence.hpp>
#include <com/sun/star/chart2/data/DataSequenceRole.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/util/XCloneable.hpp>
#include <com/sun/star/util/XModifyBroadcaster.hpp>
// #ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
// #include <com/sun/star/lang/XUnoTunnel.hpp>
// #endif
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/implbase4.hxx>
#include <cppuhelper/implbase6.hxx>
#include <cppuhelper/implbase7.hxx>
#include <rtl/ustring.hxx>
#include <svl/itemprop.hxx>
#include <hash_set>
#include <list>
#include <vector>
#include <memory>
#include <boost/shared_ptr.hpp>
#define USE_CHART2_EMPTYDATASEQUENCE 0
class ScDocument;
// DataProvider ==============================================================
class ScChart2DataProvider : public
::cppu::WeakImplHelper4<
::com::sun::star::chart2::data::XDataProvider,
::com::sun::star::chart2::data::XRangeXMLConversion,
::com::sun::star::beans::XPropertySet,
::com::sun::star::lang::XServiceInfo>,
SfxListener
{
public:
explicit ScChart2DataProvider( ScDocument* pDoc );
virtual ~ScChart2DataProvider();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
// XDataProvider ---------------------------------------------------------
virtual ::sal_Bool SAL_CALL createDataSourcePossible(
const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArguments )
throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference<
::com::sun::star::chart2::data::XDataSource > SAL_CALL createDataSource(
const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArguments )
throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence<
::com::sun::star::beans::PropertyValue > SAL_CALL detectArguments(
const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource >& xDataSource )
throw (::com::sun::star::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL createDataSequenceByRangeRepresentationPossible(
const ::rtl::OUString& aRangeRepresentation )
throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference<
::com::sun::star::chart2::data::XDataSequence > SAL_CALL createDataSequenceByRangeRepresentation(
const ::rtl::OUString& aRangeRepresentation )
throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XRangeSelection > SAL_CALL getRangeSelection()
throw (::com::sun::star::uno::RuntimeException);
/* virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > SAL_CALL getNumberFormatsSupplier()
throw (::com::sun::star::uno::RuntimeException);*/
// XRangeXMLConversion ---------------------------------------------------
virtual ::rtl::OUString SAL_CALL convertRangeToXML( const ::rtl::OUString& sRangeRepresentation )
throw ( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
virtual ::rtl::OUString SAL_CALL convertRangeFromXML( const ::rtl::OUString& sXMLRange )
throw ( ::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException );
// XPropertySet ----------------------------------------------------------
virtual ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertySetInfo> SAL_CALL
getPropertySetInfo() throw( ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setPropertyValue(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Any& rValue)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::beans::PropertyVetoException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
const ::rtl::OUString& rPropertyName)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addPropertyChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener>& xListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removePropertyChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addVetoableChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeVetoableChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XServiceInfo ----------------------------------------------------------
virtual ::rtl::OUString SAL_CALL getImplementationName() throw(
::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString&
rServiceName) throw( ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
getSupportedServiceNames() throw(
::com::sun::star::uno::RuntimeException);
private:
ScDocument* m_pDocument;
SfxItemPropertySet m_aPropSet;
sal_Bool m_bIncludeHiddenCells;
};
// DataSource ================================================================
class ScChart2DataSource : public
::cppu::WeakImplHelper2<
::com::sun::star::chart2::data::XDataSource,
::com::sun::star::lang::XServiceInfo>,
SfxListener
{
public:
explicit ScChart2DataSource( ScDocument* pDoc);
virtual ~ScChart2DataSource();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
// XDataSource -----------------------------------------------------------
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference<
::com::sun::star::chart2::data::XLabeledDataSequence > > SAL_CALL
getDataSequences() throw (::com::sun::star::uno::RuntimeException);
// XServiceInfo ----------------------------------------------------------
virtual ::rtl::OUString SAL_CALL getImplementationName() throw(
::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString&
rServiceName) throw( ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
getSupportedServiceNames() throw(
::com::sun::star::uno::RuntimeException);
// implementation
void AddLabeledSequence(const com::sun::star::uno::Reference < com::sun::star::chart2::data::XLabeledDataSequence >& xNew);
private:
ScDocument* m_pDocument;
typedef std::list < com::sun::star::uno::Reference< com::sun::star::chart2::data::XLabeledDataSequence > > LabeledList;
LabeledList m_aLabeledSequences;
};
// DataSequence ==============================================================
class ScChart2DataSequence : public
::cppu::WeakImplHelper7<
::com::sun::star::chart2::data::XDataSequence,
::com::sun::star::chart2::data::XTextualDataSequence,
::com::sun::star::chart2::data::XNumericalDataSequence,
::com::sun::star::util::XCloneable,
::com::sun::star::util::XModifyBroadcaster,
::com::sun::star::beans::XPropertySet,
// ::com::sun::star::lang::XUnoTunnel,
::com::sun::star::lang::XServiceInfo>,
SfxListener
{
public:
explicit ScChart2DataSequence( ScDocument* pDoc,
const com::sun::star::uno::Reference< com::sun::star::chart2::data::XDataProvider >& xDP,
::std::vector<ScSharedTokenRef>* pTokens, bool bIncludeHiddenCells );
virtual ~ScChart2DataSequence();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
// XDataSequence ---------------------------------------------------------
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
SAL_CALL getData() throw (::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getSourceRangeRepresentation()
throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >
SAL_CALL generateLabel(::com::sun::star::chart2::data::LabelOrigin nOrigin)
throw (::com::sun::star::uno::RuntimeException);
virtual ::sal_Int32 SAL_CALL getNumberFormatKeyByIndex( ::sal_Int32 nIndex )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException);
// XNumericalDataSequence --------------------------------------------------
virtual ::com::sun::star::uno::Sequence< double >
SAL_CALL getNumericalData( ) throw (::com::sun::star::uno::RuntimeException);
// XTextualDataSequence --------------------------------------------------
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >
SAL_CALL getTextualData( ) throw (::com::sun::star::uno::RuntimeException);
// XPropertySet ----------------------------------------------------------
virtual ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertySetInfo> SAL_CALL
getPropertySetInfo() throw( ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setPropertyValue(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Any& rValue)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::beans::PropertyVetoException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
const ::rtl::OUString& rPropertyName)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addPropertyChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener>& xListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removePropertyChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addVetoableChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeVetoableChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XCloneable ------------------------------------------------------------
virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone()
throw (::com::sun::star::uno::RuntimeException);
// XModifyBroadcaster ----------------------------------------------------
virtual void SAL_CALL addModifyListener(
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeModifyListener(
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
throw (::com::sun::star::uno::RuntimeException);
// XServiceInfo ----------------------------------------------------------
virtual ::rtl::OUString SAL_CALL getImplementationName() throw(
::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString&
rServiceName) throw( ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
getSupportedServiceNames() throw(
::com::sun::star::uno::RuntimeException);
// XUnoTunnel ------------------------------------------------------------
// virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
// sal_Int8 >& aIdentifier )
// throw(::com::sun::star::uno::RuntimeException);
// static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
// static ScChart2DataSequence* getImplementation( const com::sun::star::uno::Reference<
// com::sun::star::uno::XInterface> xObj );
private:
void setDataChangedHint(bool b);
// Implementation --------------------------------------------------------
void RefChanged();
DECL_LINK( ValueListenerHdl, SfxHint* );
private:
ScChart2DataSequence(); // disabled
ScChart2DataSequence(const ScChart2DataSequence& r); // disabled
class ExternalRefListener : public ScExternalRefManager::LinkListener
{
public:
ExternalRefListener(ScChart2DataSequence& rParent, ScDocument* pDoc);
virtual ~ExternalRefListener();
virtual void notify(sal_uInt16 nFileId, ScExternalRefManager::LinkUpdateType eType);
void addFileId(sal_uInt16 nFileId);
void removeFileId(sal_uInt16 nFileId);
const ::std::hash_set<sal_uInt16>& getAllFileIds();
private:
ExternalRefListener();
ExternalRefListener(const ExternalRefListener& r);
ScChart2DataSequence& mrParent;
::std::hash_set<sal_uInt16> maFileIds;
ScDocument* mpDoc;
};
/**
* Build an internal data array to cache the data ranges, and other
* information such as hidden values.
*/
void BuildDataCache();
void RebuildDataCache();
sal_Int32 FillCacheFromExternalRef(const ScSharedTokenRef& pToken);
void UpdateTokensFromRanges(const ScRangeList& rRanges);
ExternalRefListener* GetExtRefListener();
void StopListeningToAllExternalRefs();
void CopyData(const ScChart2DataSequence& r);
private:
// data array
struct Item
{
double mfValue;
::rtl::OUString maString;
bool mbIsValue;
Item();
};
class HiddenRangeListener : public ScChartHiddenRangeListener
{
public:
HiddenRangeListener(ScChart2DataSequence& rParent);
virtual ~HiddenRangeListener();
virtual void notify();
private:
ScChart2DataSequence& mrParent;
};
::std::list<Item> m_aDataArray;
/**
* Cached data for getData. We may also need to cache data for the
* numerical and textural data series if they turn out to be bottlenecks
* under certain scenarios.
*/
::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > m_aMixedDataCache;
::com::sun::star::uno::Sequence<sal_Int32> m_aHiddenValues;
// properties
::com::sun::star::chart2::data::DataSequenceRole m_aRole;
sal_Bool m_bIncludeHiddenCells;
// internals
typedef ::std::auto_ptr< ::std::vector<ScSharedTokenRef> > TokenListPtr;
typedef ::std::auto_ptr< ::std::vector<sal_uInt32> > RangeIndexMapPtr;
typedef ::std::auto_ptr<ExternalRefListener> ExtRefListenerPtr;
sal_Int64 m_nObjectId;
ScDocument* m_pDocument;
TokenListPtr m_pTokens;
RangeIndexMapPtr m_pRangeIndices;
ExtRefListenerPtr m_pExtRefListener;
com::sun::star::uno::Reference < com::sun::star::chart2::data::XDataProvider > m_xDataProvider;
SfxItemPropertySet m_aPropSet;
::std::auto_ptr<HiddenRangeListener> m_pHiddenListener;
ScLinkListener* m_pValueListener;
XModifyListenerArr_Impl m_aValueListeners;
bool m_bGotDataChangedHint;
bool m_bExtDataRebuildQueued;
};
#if USE_CHART2_EMPTYDATASEQUENCE
// DataSequence ==============================================================
class ScChart2EmptyDataSequence : public
::cppu::WeakImplHelper6<
::com::sun::star::chart2::data::XDataSequence,
::com::sun::star::chart2::data::XTextualDataSequence,
::com::sun::star::util::XCloneable,
::com::sun::star::util::XModifyBroadcaster,
::com::sun::star::beans::XPropertySet,
// ::com::sun::star::lang::XUnoTunnel,
::com::sun::star::lang::XServiceInfo>,
SfxListener
{
public:
explicit ScChart2EmptyDataSequence( ScDocument* pDoc,
const com::sun::star::uno::Reference< com::sun::star::chart2::data::XDataProvider >& xDP,
const ScRangeListRef& rRangeList, sal_Bool bColumn );
virtual ~ScChart2EmptyDataSequence();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
// XDataSequence ---------------------------------------------------------
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
SAL_CALL getData() throw (::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getSourceRangeRepresentation()
throw (::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >
SAL_CALL generateLabel(::com::sun::star::chart2::data::LabelOrigin nOrigin)
throw (::com::sun::star::uno::RuntimeException);
virtual ::sal_Int32 SAL_CALL getNumberFormatKeyByIndex( ::sal_Int32 nIndex )
throw (::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::uno::RuntimeException);
// XTextualDataSequence --------------------------------------------------
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >
SAL_CALL getTextualData( ) throw (::com::sun::star::uno::RuntimeException);
// XPropertySet ----------------------------------------------------------
virtual ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertySetInfo> SAL_CALL
getPropertySetInfo() throw( ::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setPropertyValue(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Any& rValue)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::beans::PropertyVetoException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
const ::rtl::OUString& rPropertyName)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addPropertyChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener>& xListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removePropertyChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addVetoableChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeVetoableChangeListener(
const ::rtl::OUString& rPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener>& rListener)
throw( ::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XCloneable ------------------------------------------------------------
virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone()
throw (::com::sun::star::uno::RuntimeException);
// XModifyBroadcaster ----------------------------------------------------
virtual void SAL_CALL addModifyListener(
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeModifyListener(
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
throw (::com::sun::star::uno::RuntimeException);
// XServiceInfo ----------------------------------------------------------
virtual ::rtl::OUString SAL_CALL getImplementationName() throw(
::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString&
rServiceName) throw( ::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString> SAL_CALL
getSupportedServiceNames() throw(
::com::sun::star::uno::RuntimeException);
// XUnoTunnel ------------------------------------------------------------
// virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
// sal_Int8 >& aIdentifier )
// throw(::com::sun::star::uno::RuntimeException);
// static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
// static ScChart2DataSequence* getImplementation( const com::sun::star::uno::Reference<
// com::sun::star::uno::XInterface> xObj );
// Implementation --------------------------------------------------------
ScRangeListRef GetRangeList() { return m_xRanges; }
private:
// properties
::com::sun::star::chart2::data::DataSequenceRole m_aRole;
sal_Bool m_bIncludeHiddenCells;
// internals
ScRangeListRef m_xRanges;
ScDocument* m_pDocument;
com::sun::star::uno::Reference < com::sun::star::chart2::data::XDataProvider > m_xDataProvider;
SfxItemPropertySet m_aPropSet;
sal_Bool m_bColumn; // defines the orientation to create the right labels
};
#endif
#endif // SC_CHART2UNO_HXX