1 *b1cdbd2cSJim Jagielski /**************************************************************
2 *b1cdbd2cSJim Jagielski  *
3 *b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4 *b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5 *b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6 *b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7 *b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8 *b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9 *b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10 *b1cdbd2cSJim Jagielski  *
11 *b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12 *b1cdbd2cSJim Jagielski  *
13 *b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14 *b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15 *b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 *b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17 *b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18 *b1cdbd2cSJim Jagielski  * under the License.
19 *b1cdbd2cSJim Jagielski  *
20 *b1cdbd2cSJim Jagielski  *************************************************************/
21 *b1cdbd2cSJim Jagielski 
22 *b1cdbd2cSJim Jagielski 
23 *b1cdbd2cSJim Jagielski #ifndef _CHART_UNCACHEDDATASEQUENCE_HXX
24 *b1cdbd2cSJim Jagielski #define _CHART_UNCACHEDDATASEQUENCE_HXX
25 *b1cdbd2cSJim Jagielski 
26 *b1cdbd2cSJim Jagielski // helper classes
27 *b1cdbd2cSJim Jagielski #include <cppuhelper/compbase8.hxx>
28 *b1cdbd2cSJim Jagielski #include <comphelper/uno3.hxx>
29 *b1cdbd2cSJim Jagielski #include <comphelper/broadcasthelper.hxx>
30 *b1cdbd2cSJim Jagielski #include <comphelper/propertycontainer.hxx>
31 *b1cdbd2cSJim Jagielski #include <comphelper/proparrhlp.hxx>
32 *b1cdbd2cSJim Jagielski #include "ServiceMacros.hxx"
33 *b1cdbd2cSJim Jagielski #include "charttoolsdllapi.hxx"
34 *b1cdbd2cSJim Jagielski 
35 *b1cdbd2cSJim Jagielski // interfaces and types
36 *b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp>
37 *b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
38 *b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp>
39 *b1cdbd2cSJim Jagielski #include <com/sun/star/chart2/XInternalDataProvider.hpp>
40 *b1cdbd2cSJim Jagielski #include <com/sun/star/chart2/data/XDataSequence.hpp>
41 *b1cdbd2cSJim Jagielski #include <com/sun/star/chart2/data/XNumericalDataSequence.hpp>
42 *b1cdbd2cSJim Jagielski #include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
43 *b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexReplace.hpp>
44 *b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNamed.hpp>
45 *b1cdbd2cSJim Jagielski #include <com/sun/star/util/XCloneable.hpp>
46 *b1cdbd2cSJim Jagielski #include <com/sun/star/util/XModifyBroadcaster.hpp>
47 *b1cdbd2cSJim Jagielski #include <com/sun/star/util/XModifiable.hpp>
48 *b1cdbd2cSJim Jagielski 
49 *b1cdbd2cSJim Jagielski #include <vector>
50 *b1cdbd2cSJim Jagielski 
51 *b1cdbd2cSJim Jagielski // ____________________
52 *b1cdbd2cSJim Jagielski namespace chart
53 *b1cdbd2cSJim Jagielski {
54 *b1cdbd2cSJim Jagielski 
55 *b1cdbd2cSJim Jagielski namespace impl
56 *b1cdbd2cSJim Jagielski {
57 *b1cdbd2cSJim Jagielski typedef ::cppu::WeakComponentImplHelper8<
58 *b1cdbd2cSJim Jagielski     ::com::sun::star::chart2::data::XDataSequence,
59 *b1cdbd2cSJim Jagielski     ::com::sun::star::chart2::data::XNumericalDataSequence,
60 *b1cdbd2cSJim Jagielski     ::com::sun::star::chart2::data::XTextualDataSequence,
61 *b1cdbd2cSJim Jagielski     ::com::sun::star::util::XCloneable,
62 *b1cdbd2cSJim Jagielski     ::com::sun::star::util::XModifiable, // contains util::XModifyBroadcaster
63 *b1cdbd2cSJim Jagielski     ::com::sun::star::container::XIndexReplace,
64 *b1cdbd2cSJim Jagielski     ::com::sun::star::container::XNamed, // for setting a new range representation
65 *b1cdbd2cSJim Jagielski     ::com::sun::star::lang::XServiceInfo >
66 *b1cdbd2cSJim Jagielski     UncachedDataSequence_Base;
67 *b1cdbd2cSJim Jagielski }
68 *b1cdbd2cSJim Jagielski 
69 *b1cdbd2cSJim Jagielski class UncachedDataSequence :
70 *b1cdbd2cSJim Jagielski         public ::comphelper::OMutexAndBroadcastHelper,
71 *b1cdbd2cSJim Jagielski         public ::comphelper::OPropertyContainer,
72 *b1cdbd2cSJim Jagielski         public ::comphelper::OPropertyArrayUsageHelper< UncachedDataSequence >,
73 *b1cdbd2cSJim Jagielski         public impl::UncachedDataSequence_Base
74 *b1cdbd2cSJim Jagielski {
75 *b1cdbd2cSJim Jagielski public:
76 *b1cdbd2cSJim Jagielski     /** The referring data provider is held as uno reference to ensure its
77 *b1cdbd2cSJim Jagielski         lifetime is at least as long as the one of this object.
78 *b1cdbd2cSJim Jagielski      */
79 *b1cdbd2cSJim Jagielski     UncachedDataSequence(
80 *b1cdbd2cSJim Jagielski         const ::com::sun::star::uno::Reference<
81 *b1cdbd2cSJim Jagielski             ::com::sun::star::chart2::XInternalDataProvider > & xIntDataProv,
82 *b1cdbd2cSJim Jagielski         const ::rtl::OUString & rRangeRepresentation );
83 *b1cdbd2cSJim Jagielski     UncachedDataSequence(
84 *b1cdbd2cSJim Jagielski         const ::com::sun::star::uno::Reference<
85 *b1cdbd2cSJim Jagielski             ::com::sun::star::chart2::XInternalDataProvider > & xIntDataProv,
86 *b1cdbd2cSJim Jagielski         const ::rtl::OUString & rRangeRepresentation,
87 *b1cdbd2cSJim Jagielski         const ::rtl::OUString & rRole );
88 *b1cdbd2cSJim Jagielski     UncachedDataSequence( const UncachedDataSequence & rSource );
89 *b1cdbd2cSJim Jagielski 	virtual ~UncachedDataSequence();
90 *b1cdbd2cSJim Jagielski 
91 *b1cdbd2cSJim Jagielski     /// declare XServiceInfo methods
92 *b1cdbd2cSJim Jagielski     APPHELPER_XSERVICEINFO_DECL()
93 *b1cdbd2cSJim Jagielski 
94 *b1cdbd2cSJim Jagielski     /// merge XInterface implementations
95 *b1cdbd2cSJim Jagielski 	DECLARE_XINTERFACE()
96 *b1cdbd2cSJim Jagielski     /// merge XTypeProvider implementations
97 *b1cdbd2cSJim Jagielski 	DECLARE_XTYPEPROVIDER()
98 *b1cdbd2cSJim Jagielski 
99 *b1cdbd2cSJim Jagielski protected:
100 *b1cdbd2cSJim Jagielski     // ____ XPropertySet ____
101 *b1cdbd2cSJim Jagielski     /// @see ::com::sun::star::beans::XPropertySet
102 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo()
103 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
104 *b1cdbd2cSJim Jagielski     /// @see ::comphelper::OPropertySetHelper
105 *b1cdbd2cSJim Jagielski 	virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
106 *b1cdbd2cSJim Jagielski     /// @see ::comphelper::OPropertyArrayUsageHelper
107 *b1cdbd2cSJim Jagielski 	virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
108 *b1cdbd2cSJim Jagielski 
109 *b1cdbd2cSJim Jagielski     // ____ XDataSequence ____
110 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getData()
111 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
112 *b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL getSourceRangeRepresentation()
113 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
114 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL generateLabel(
115 *b1cdbd2cSJim Jagielski         ::com::sun::star::chart2::data::LabelOrigin nLabelOrigin )
116 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
117 *b1cdbd2cSJim Jagielski     virtual ::sal_Int32 SAL_CALL getNumberFormatKeyByIndex( ::sal_Int32 nIndex )
118 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::lang::IndexOutOfBoundsException,
119 *b1cdbd2cSJim Jagielski                ::com::sun::star::uno::RuntimeException);
120 *b1cdbd2cSJim Jagielski 
121 *b1cdbd2cSJim Jagielski     // ____ XNumericalDataSequence ____
122 *b1cdbd2cSJim Jagielski     /// @see ::com::sun::star::chart::data::XNumericalDataSequence
123 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< double > SAL_CALL getNumericalData() throw (::com::sun::star::uno::RuntimeException);
124 *b1cdbd2cSJim Jagielski 
125 *b1cdbd2cSJim Jagielski     // ____ XTextualDataSequence ____
126 *b1cdbd2cSJim Jagielski     /// @see ::com::sun::star::chart::data::XTextualDataSequence
127 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getTextualData() throw (::com::sun::star::uno::RuntimeException);
128 *b1cdbd2cSJim Jagielski 
129 *b1cdbd2cSJim Jagielski     // ____ XIndexReplace ____
130 *b1cdbd2cSJim Jagielski     virtual void SAL_CALL replaceByIndex( ::sal_Int32 Index, const ::com::sun::star::uno::Any& Element )
131 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::lang::IllegalArgumentException,
132 *b1cdbd2cSJim Jagielski                ::com::sun::star::lang::IndexOutOfBoundsException,
133 *b1cdbd2cSJim Jagielski                ::com::sun::star::lang::WrappedTargetException,
134 *b1cdbd2cSJim Jagielski                ::com::sun::star::uno::RuntimeException);
135 *b1cdbd2cSJim Jagielski 
136 *b1cdbd2cSJim Jagielski     // ____ XIndexAccess (base of XIndexReplace) ____
137 *b1cdbd2cSJim Jagielski     virtual ::sal_Int32 SAL_CALL getCount()
138 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
139 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( ::sal_Int32 Index )
140 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::lang::IndexOutOfBoundsException,
141 *b1cdbd2cSJim Jagielski                ::com::sun::star::lang::WrappedTargetException,
142 *b1cdbd2cSJim Jagielski                ::com::sun::star::uno::RuntimeException);
143 *b1cdbd2cSJim Jagielski 
144 *b1cdbd2cSJim Jagielski     // ____ XElementAccess (base of XIndexAccess) ____
145 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
146 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
147 *b1cdbd2cSJim Jagielski     virtual ::sal_Bool SAL_CALL hasElements()
148 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
149 *b1cdbd2cSJim Jagielski 
150 *b1cdbd2cSJim Jagielski     // ____ XNamed (for setting a new range representation) ____
151 *b1cdbd2cSJim Jagielski     virtual ::rtl::OUString SAL_CALL getName()
152 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
153 *b1cdbd2cSJim Jagielski     virtual void SAL_CALL setName( const ::rtl::OUString& aName )
154 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
155 *b1cdbd2cSJim Jagielski 
156 *b1cdbd2cSJim Jagielski     // ____ XCloneable ____
157 *b1cdbd2cSJim Jagielski     virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone()
158 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
159 *b1cdbd2cSJim Jagielski 
160 *b1cdbd2cSJim Jagielski     // ____ XModifiable ____
161 *b1cdbd2cSJim Jagielski     virtual ::sal_Bool SAL_CALL isModified()
162 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
163 *b1cdbd2cSJim Jagielski     virtual void SAL_CALL setModified( ::sal_Bool bModified )
164 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::beans::PropertyVetoException,
165 *b1cdbd2cSJim Jagielski                ::com::sun::star::uno::RuntimeException);
166 *b1cdbd2cSJim Jagielski 
167 *b1cdbd2cSJim Jagielski     // ____ XModifyBroadcaster (base of XModifiable) ____
168 *b1cdbd2cSJim Jagielski     virtual void SAL_CALL addModifyListener(
169 *b1cdbd2cSJim Jagielski         const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
170 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
171 *b1cdbd2cSJim Jagielski     virtual void SAL_CALL removeModifyListener(
172 *b1cdbd2cSJim Jagielski         const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener )
173 *b1cdbd2cSJim Jagielski         throw (::com::sun::star::uno::RuntimeException);
174 *b1cdbd2cSJim Jagielski 
175 *b1cdbd2cSJim Jagielski     void fireModifyEvent();
176 *b1cdbd2cSJim Jagielski 
177 *b1cdbd2cSJim Jagielski     mutable ::osl::Mutex                  m_aMutex;
178 *b1cdbd2cSJim Jagielski 
179 *b1cdbd2cSJim Jagielski     // <properties>
180 *b1cdbd2cSJim Jagielski     sal_Int32                                       m_nNumberFormatKey;
181 *b1cdbd2cSJim Jagielski     ::rtl::OUString                                 m_sRole;
182 *b1cdbd2cSJim Jagielski     ::rtl::OUString                                 m_aXMLRange;
183 *b1cdbd2cSJim Jagielski     // </properties>
184 *b1cdbd2cSJim Jagielski 
185 *b1cdbd2cSJim Jagielski     /** This method registers all properties.  It should be called by all
186 *b1cdbd2cSJim Jagielski         constructors.
187 *b1cdbd2cSJim Jagielski      */
188 *b1cdbd2cSJim Jagielski     void registerProperties();
189 *b1cdbd2cSJim Jagielski 
190 *b1cdbd2cSJim Jagielski private:
191 *b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference<
192 *b1cdbd2cSJim Jagielski             ::com::sun::star::chart2::XInternalDataProvider > m_xDataProvider;
193 *b1cdbd2cSJim Jagielski     ::rtl::OUString                 m_aSourceRepresentation;
194 *b1cdbd2cSJim Jagielski     ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >
195 *b1cdbd2cSJim Jagielski         m_xModifyEventForwarder;
196 *b1cdbd2cSJim Jagielski };
197 *b1cdbd2cSJim Jagielski 
198 *b1cdbd2cSJim Jagielski }  // namespace chart
199 *b1cdbd2cSJim Jagielski 
200 *b1cdbd2cSJim Jagielski 
201 *b1cdbd2cSJim Jagielski // _CHART_UNCACHEDDATASEQUENCE_HXX
202 *b1cdbd2cSJim Jagielski #endif
203