xref: /aoo4110/main/chart2/source/tools/ErrorBar.cxx (revision b1cdbd2c)
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 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_chart2.hxx"
26*b1cdbd2cSJim Jagielski #include "ErrorBar.hxx"
27*b1cdbd2cSJim Jagielski #include "macros.hxx"
28*b1cdbd2cSJim Jagielski #include "LineProperties.hxx"
29*b1cdbd2cSJim Jagielski #include "ContainerHelper.hxx"
30*b1cdbd2cSJim Jagielski #include "EventListenerHelper.hxx"
31*b1cdbd2cSJim Jagielski #include "PropertyHelper.hxx"
32*b1cdbd2cSJim Jagielski #include "CloneHelper.hxx"
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/chart/ErrorBarStyle.hpp>
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski #include <rtl/math.hxx>
38*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski using ::rtl::OUString;
43*b1cdbd2cSJim Jagielski using ::rtl::OUStringBuffer;
44*b1cdbd2cSJim Jagielski using ::com::sun::star::beans::Property;
45*b1cdbd2cSJim Jagielski using ::osl::MutexGuard;
46*b1cdbd2cSJim Jagielski 
47*b1cdbd2cSJim Jagielski namespace
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski static const OUString lcl_aServiceName(
50*b1cdbd2cSJim Jagielski     RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.chart2.ErrorBar" ));
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski enum
53*b1cdbd2cSJim Jagielski {
54*b1cdbd2cSJim Jagielski     PROP_ERROR_BAR_STYLE,
55*b1cdbd2cSJim Jagielski     PROP_ERROR_BAR_POS_ERROR,
56*b1cdbd2cSJim Jagielski     PROP_ERROR_BAR_NEG_ERROR,
57*b1cdbd2cSJim Jagielski     PROP_ERROR_BAR_WEIGHT,
58*b1cdbd2cSJim Jagielski     PROP_ERROR_BAR_SHOW_POS_ERROR,
59*b1cdbd2cSJim Jagielski     PROP_ERROR_BAR_SHOW_NEG_ERROR
60*b1cdbd2cSJim Jagielski };
61*b1cdbd2cSJim Jagielski 
lcl_AddPropertiesToVector(::std::vector<Property> & rOutProperties)62*b1cdbd2cSJim Jagielski void lcl_AddPropertiesToVector(
63*b1cdbd2cSJim Jagielski     ::std::vector< Property > & rOutProperties )
64*b1cdbd2cSJim Jagielski {
65*b1cdbd2cSJim Jagielski     rOutProperties.push_back(
66*b1cdbd2cSJim Jagielski         Property( C2U( "ErrorBarStyle" ),
67*b1cdbd2cSJim Jagielski                   PROP_ERROR_BAR_STYLE,
68*b1cdbd2cSJim Jagielski                   ::getCppuType( reinterpret_cast< sal_Int32 * >(0)),
69*b1cdbd2cSJim Jagielski                   beans::PropertyAttribute::BOUND
70*b1cdbd2cSJim Jagielski                   | beans::PropertyAttribute::MAYBEDEFAULT ));
71*b1cdbd2cSJim Jagielski 
72*b1cdbd2cSJim Jagielski     rOutProperties.push_back(
73*b1cdbd2cSJim Jagielski         Property( C2U( "PositiveError" ),
74*b1cdbd2cSJim Jagielski                   PROP_ERROR_BAR_POS_ERROR,
75*b1cdbd2cSJim Jagielski                   ::getCppuType( reinterpret_cast< const double * >(0)),
76*b1cdbd2cSJim Jagielski                   beans::PropertyAttribute::BOUND
77*b1cdbd2cSJim Jagielski                   | beans::PropertyAttribute::MAYBEDEFAULT ));
78*b1cdbd2cSJim Jagielski     rOutProperties.push_back(
79*b1cdbd2cSJim Jagielski         Property( C2U( "NegativeError" ),
80*b1cdbd2cSJim Jagielski                   PROP_ERROR_BAR_NEG_ERROR,
81*b1cdbd2cSJim Jagielski                   ::getCppuType( reinterpret_cast< const double * >(0)),
82*b1cdbd2cSJim Jagielski                   beans::PropertyAttribute::BOUND
83*b1cdbd2cSJim Jagielski                   | beans::PropertyAttribute::MAYBEDEFAULT ));
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski     rOutProperties.push_back(
86*b1cdbd2cSJim Jagielski         Property( C2U( "Weight" ),
87*b1cdbd2cSJim Jagielski                   PROP_ERROR_BAR_WEIGHT,
88*b1cdbd2cSJim Jagielski                   ::getCppuType( reinterpret_cast< const double * >(0)),
89*b1cdbd2cSJim Jagielski                   beans::PropertyAttribute::BOUND
90*b1cdbd2cSJim Jagielski                   | beans::PropertyAttribute::MAYBEDEFAULT ));
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski     rOutProperties.push_back(
93*b1cdbd2cSJim Jagielski         Property( C2U( "ShowPositiveError" ),
94*b1cdbd2cSJim Jagielski                   PROP_ERROR_BAR_SHOW_POS_ERROR,
95*b1cdbd2cSJim Jagielski                   ::getBooleanCppuType(),
96*b1cdbd2cSJim Jagielski                   beans::PropertyAttribute::BOUND
97*b1cdbd2cSJim Jagielski                   | beans::PropertyAttribute::MAYBEDEFAULT ));
98*b1cdbd2cSJim Jagielski     rOutProperties.push_back(
99*b1cdbd2cSJim Jagielski         Property( C2U( "ShowNegativeError" ),
100*b1cdbd2cSJim Jagielski                   PROP_ERROR_BAR_SHOW_NEG_ERROR,
101*b1cdbd2cSJim Jagielski                   ::getBooleanCppuType(),
102*b1cdbd2cSJim Jagielski                   beans::PropertyAttribute::BOUND
103*b1cdbd2cSJim Jagielski                   | beans::PropertyAttribute::MAYBEDEFAULT ));
104*b1cdbd2cSJim Jagielski }
105*b1cdbd2cSJim Jagielski 
106*b1cdbd2cSJim Jagielski struct StaticErrorBarDefaults_Initializer
107*b1cdbd2cSJim Jagielski {
operator ()__anon8693bf720111::StaticErrorBarDefaults_Initializer108*b1cdbd2cSJim Jagielski     ::chart::tPropertyValueMap* operator()()
109*b1cdbd2cSJim Jagielski     {
110*b1cdbd2cSJim Jagielski         static ::chart::tPropertyValueMap aStaticDefaults;
111*b1cdbd2cSJim Jagielski         lcl_AddDefaultsToMap( aStaticDefaults );
112*b1cdbd2cSJim Jagielski         return &aStaticDefaults;
113*b1cdbd2cSJim Jagielski     }
114*b1cdbd2cSJim Jagielski private:
lcl_AddDefaultsToMap__anon8693bf720111::StaticErrorBarDefaults_Initializer115*b1cdbd2cSJim Jagielski     void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
116*b1cdbd2cSJim Jagielski     {
117*b1cdbd2cSJim Jagielski         ::chart::LineProperties::AddDefaultsToMap( rOutMap );
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski         ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_ERROR_BAR_STYLE, ::com::sun::star::chart::ErrorBarStyle::NONE );
120*b1cdbd2cSJim Jagielski         ::chart::PropertyHelper::setPropertyValueDefault< double >( rOutMap, PROP_ERROR_BAR_POS_ERROR, 0.0 );
121*b1cdbd2cSJim Jagielski         ::chart::PropertyHelper::setPropertyValueDefault< double >( rOutMap, PROP_ERROR_BAR_NEG_ERROR, 0.0 );
122*b1cdbd2cSJim Jagielski         ::chart::PropertyHelper::setPropertyValueDefault< double >( rOutMap, PROP_ERROR_BAR_WEIGHT, 1.0 );
123*b1cdbd2cSJim Jagielski         ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_ERROR_BAR_SHOW_POS_ERROR, true );
124*b1cdbd2cSJim Jagielski         ::chart::PropertyHelper::setPropertyValueDefault( rOutMap, PROP_ERROR_BAR_SHOW_NEG_ERROR, true );
125*b1cdbd2cSJim Jagielski     }
126*b1cdbd2cSJim Jagielski };
127*b1cdbd2cSJim Jagielski 
128*b1cdbd2cSJim Jagielski struct StaticErrorBarDefaults : public rtl::StaticAggregate< ::chart::tPropertyValueMap, StaticErrorBarDefaults_Initializer >
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski };
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski struct StaticErrorBarInfoHelper_Initializer
133*b1cdbd2cSJim Jagielski {
operator ()__anon8693bf720111::StaticErrorBarInfoHelper_Initializer134*b1cdbd2cSJim Jagielski     ::cppu::OPropertyArrayHelper* operator()()
135*b1cdbd2cSJim Jagielski     {
136*b1cdbd2cSJim Jagielski         static ::cppu::OPropertyArrayHelper aPropHelper( lcl_GetPropertySequence() );
137*b1cdbd2cSJim Jagielski         return &aPropHelper;
138*b1cdbd2cSJim Jagielski     }
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski private:
lcl_GetPropertySequence__anon8693bf720111::StaticErrorBarInfoHelper_Initializer141*b1cdbd2cSJim Jagielski     uno::Sequence< Property > lcl_GetPropertySequence()
142*b1cdbd2cSJim Jagielski     {
143*b1cdbd2cSJim Jagielski         ::std::vector< ::com::sun::star::beans::Property > aProperties;
144*b1cdbd2cSJim Jagielski         lcl_AddPropertiesToVector( aProperties );
145*b1cdbd2cSJim Jagielski         ::chart::LineProperties::AddPropertiesToVector( aProperties );
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski         ::std::sort( aProperties.begin(), aProperties.end(),
148*b1cdbd2cSJim Jagielski                      ::chart::PropertyNameLess() );
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski         return ::chart::ContainerHelper::ContainerToSequence( aProperties );
151*b1cdbd2cSJim Jagielski     }
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski };
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski struct StaticErrorBarInfoHelper : public rtl::StaticAggregate< ::cppu::OPropertyArrayHelper, StaticErrorBarInfoHelper_Initializer >
156*b1cdbd2cSJim Jagielski {
157*b1cdbd2cSJim Jagielski };
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski struct StaticErrorBarInfo_Initializer
160*b1cdbd2cSJim Jagielski {
operator ()__anon8693bf720111::StaticErrorBarInfo_Initializer161*b1cdbd2cSJim Jagielski     uno::Reference< beans::XPropertySetInfo >* operator()()
162*b1cdbd2cSJim Jagielski     {
163*b1cdbd2cSJim Jagielski         static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
164*b1cdbd2cSJim Jagielski             ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticErrorBarInfoHelper::get() ) );
165*b1cdbd2cSJim Jagielski         return &xPropertySetInfo;
166*b1cdbd2cSJim Jagielski     }
167*b1cdbd2cSJim Jagielski };
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski struct StaticErrorBarInfo : public rtl::StaticAggregate< uno::Reference< beans::XPropertySetInfo >, StaticErrorBarInfo_Initializer >
170*b1cdbd2cSJim Jagielski {
171*b1cdbd2cSJim Jagielski };
172*b1cdbd2cSJim Jagielski 
lcl_isInternalData(const uno::Reference<chart2::data::XLabeledDataSequence> & xLSeq)173*b1cdbd2cSJim Jagielski bool lcl_isInternalData( const uno::Reference< chart2::data::XLabeledDataSequence > & xLSeq )
174*b1cdbd2cSJim Jagielski {
175*b1cdbd2cSJim Jagielski     uno::Reference< lang::XServiceInfo > xServiceInfo( xLSeq, uno::UNO_QUERY );
176*b1cdbd2cSJim Jagielski     return ( xServiceInfo.is() && xServiceInfo->getImplementationName().equalsAsciiL(
177*b1cdbd2cSJim Jagielski                  RTL_CONSTASCII_STRINGPARAM("com.sun.star.comp.chart2.LabeledDataSequence")));
178*b1cdbd2cSJim Jagielski }
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski } // anonymous namespace
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski namespace chart
183*b1cdbd2cSJim Jagielski {
184*b1cdbd2cSJim Jagielski 
createErrorBar(const uno::Reference<uno::XComponentContext> & xContext)185*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySet > createErrorBar( const uno::Reference< uno::XComponentContext > & xContext )
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski     return new ErrorBar( xContext );
188*b1cdbd2cSJim Jagielski }
189*b1cdbd2cSJim Jagielski 
ErrorBar(uno::Reference<uno::XComponentContext> const & xContext)190*b1cdbd2cSJim Jagielski ErrorBar::ErrorBar(
191*b1cdbd2cSJim Jagielski     uno::Reference< uno::XComponentContext > const & xContext ) :
192*b1cdbd2cSJim Jagielski         ::property::OPropertySet( m_aMutex ),
193*b1cdbd2cSJim Jagielski     m_xContext( xContext ),
194*b1cdbd2cSJim Jagielski     m_xModifyEventForwarder( ModifyListenerHelper::createModifyEventForwarder())
195*b1cdbd2cSJim Jagielski {}
196*b1cdbd2cSJim Jagielski 
ErrorBar(const ErrorBar & rOther)197*b1cdbd2cSJim Jagielski ErrorBar::ErrorBar( const ErrorBar & rOther ) :
198*b1cdbd2cSJim Jagielski         MutexContainer(),
199*b1cdbd2cSJim Jagielski         impl::ErrorBar_Base(),
200*b1cdbd2cSJim Jagielski         ::property::OPropertySet( rOther, m_aMutex ),
201*b1cdbd2cSJim Jagielski     m_xContext( rOther.m_xContext ),
202*b1cdbd2cSJim Jagielski     m_xModifyEventForwarder( ModifyListenerHelper::createModifyEventForwarder())
203*b1cdbd2cSJim Jagielski {
204*b1cdbd2cSJim Jagielski     if( ! rOther.m_aDataSequences.empty())
205*b1cdbd2cSJim Jagielski     {
206*b1cdbd2cSJim Jagielski         if( lcl_isInternalData( rOther.m_aDataSequences.front()))
207*b1cdbd2cSJim Jagielski             CloneHelper::CloneRefVector< tDataSequenceContainer::value_type >(
208*b1cdbd2cSJim Jagielski                 rOther.m_aDataSequences, m_aDataSequences );
209*b1cdbd2cSJim Jagielski         else
210*b1cdbd2cSJim Jagielski             m_aDataSequences = rOther.m_aDataSequences;
211*b1cdbd2cSJim Jagielski         ModifyListenerHelper::addListenerToAllElements( m_aDataSequences, m_xModifyEventForwarder );
212*b1cdbd2cSJim Jagielski     }
213*b1cdbd2cSJim Jagielski }
214*b1cdbd2cSJim Jagielski 
~ErrorBar()215*b1cdbd2cSJim Jagielski ErrorBar::~ErrorBar()
216*b1cdbd2cSJim Jagielski {}
217*b1cdbd2cSJim Jagielski 
createClone()218*b1cdbd2cSJim Jagielski uno::Reference< util::XCloneable > SAL_CALL ErrorBar::createClone()
219*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
220*b1cdbd2cSJim Jagielski {
221*b1cdbd2cSJim Jagielski     return uno::Reference< util::XCloneable >( new ErrorBar( *this ));
222*b1cdbd2cSJim Jagielski }
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski // ================================================================================
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski // ____ OPropertySet ____
GetDefaultValue(sal_Int32 nHandle) const227*b1cdbd2cSJim Jagielski uno::Any ErrorBar::GetDefaultValue( sal_Int32 nHandle ) const
228*b1cdbd2cSJim Jagielski     throw(beans::UnknownPropertyException)
229*b1cdbd2cSJim Jagielski {
230*b1cdbd2cSJim Jagielski     const tPropertyValueMap& rStaticDefaults = *StaticErrorBarDefaults::get();
231*b1cdbd2cSJim Jagielski     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) );
232*b1cdbd2cSJim Jagielski     if( aFound == rStaticDefaults.end() )
233*b1cdbd2cSJim Jagielski         return uno::Any();
234*b1cdbd2cSJim Jagielski     return (*aFound).second;
235*b1cdbd2cSJim Jagielski }
236*b1cdbd2cSJim Jagielski 
getInfoHelper()237*b1cdbd2cSJim Jagielski ::cppu::IPropertyArrayHelper & SAL_CALL ErrorBar::getInfoHelper()
238*b1cdbd2cSJim Jagielski {
239*b1cdbd2cSJim Jagielski     return *StaticErrorBarInfoHelper::get();
240*b1cdbd2cSJim Jagielski }
241*b1cdbd2cSJim Jagielski 
242*b1cdbd2cSJim Jagielski // ____ XPropertySet ____
getPropertySetInfo()243*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySetInfo > SAL_CALL ErrorBar::getPropertySetInfo()
244*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski     return *StaticErrorBarInfo::get();
247*b1cdbd2cSJim Jagielski }
248*b1cdbd2cSJim Jagielski 
249*b1cdbd2cSJim Jagielski // ____ XModifyBroadcaster ____
addModifyListener(const uno::Reference<util::XModifyListener> & aListener)250*b1cdbd2cSJim Jagielski void SAL_CALL ErrorBar::addModifyListener( const uno::Reference< util::XModifyListener >& aListener )
251*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
252*b1cdbd2cSJim Jagielski {
253*b1cdbd2cSJim Jagielski     try
254*b1cdbd2cSJim Jagielski     {
255*b1cdbd2cSJim Jagielski         uno::Reference< util::XModifyBroadcaster > xBroadcaster( m_xModifyEventForwarder, uno::UNO_QUERY_THROW );
256*b1cdbd2cSJim Jagielski         xBroadcaster->addModifyListener( aListener );
257*b1cdbd2cSJim Jagielski     }
258*b1cdbd2cSJim Jagielski     catch( const uno::Exception & ex )
259*b1cdbd2cSJim Jagielski     {
260*b1cdbd2cSJim Jagielski         ASSERT_EXCEPTION( ex );
261*b1cdbd2cSJim Jagielski     }
262*b1cdbd2cSJim Jagielski }
263*b1cdbd2cSJim Jagielski 
removeModifyListener(const uno::Reference<util::XModifyListener> & aListener)264*b1cdbd2cSJim Jagielski void SAL_CALL ErrorBar::removeModifyListener( const uno::Reference< util::XModifyListener >& aListener )
265*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
266*b1cdbd2cSJim Jagielski {
267*b1cdbd2cSJim Jagielski     try
268*b1cdbd2cSJim Jagielski     {
269*b1cdbd2cSJim Jagielski         uno::Reference< util::XModifyBroadcaster > xBroadcaster( m_xModifyEventForwarder, uno::UNO_QUERY_THROW );
270*b1cdbd2cSJim Jagielski         xBroadcaster->removeModifyListener( aListener );
271*b1cdbd2cSJim Jagielski     }
272*b1cdbd2cSJim Jagielski     catch( const uno::Exception & ex )
273*b1cdbd2cSJim Jagielski     {
274*b1cdbd2cSJim Jagielski         ASSERT_EXCEPTION( ex );
275*b1cdbd2cSJim Jagielski     }
276*b1cdbd2cSJim Jagielski }
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski // ____ XModifyListener ____
modified(const lang::EventObject & aEvent)279*b1cdbd2cSJim Jagielski void SAL_CALL ErrorBar::modified( const lang::EventObject& aEvent )
280*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
281*b1cdbd2cSJim Jagielski {
282*b1cdbd2cSJim Jagielski     m_xModifyEventForwarder->modified( aEvent );
283*b1cdbd2cSJim Jagielski }
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski // ____ XEventListener (base of XModifyListener) ____
disposing(const lang::EventObject &)286*b1cdbd2cSJim Jagielski void SAL_CALL ErrorBar::disposing( const lang::EventObject& /* Source */ )
287*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
288*b1cdbd2cSJim Jagielski {
289*b1cdbd2cSJim Jagielski     // nothing
290*b1cdbd2cSJim Jagielski }
291*b1cdbd2cSJim Jagielski 
292*b1cdbd2cSJim Jagielski // ____ XDataSink ____
setData(const uno::Sequence<uno::Reference<chart2::data::XLabeledDataSequence>> & aData)293*b1cdbd2cSJim Jagielski void SAL_CALL ErrorBar::setData( const uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > >& aData )
294*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
295*b1cdbd2cSJim Jagielski {
296*b1cdbd2cSJim Jagielski     ModifyListenerHelper::removeListenerFromAllElements( m_aDataSequences, m_xModifyEventForwarder );
297*b1cdbd2cSJim Jagielski     EventListenerHelper::removeListenerFromAllElements( m_aDataSequences, this );
298*b1cdbd2cSJim Jagielski     m_aDataSequences = ContainerHelper::SequenceToVector( aData );
299*b1cdbd2cSJim Jagielski     EventListenerHelper::addListenerToAllElements( m_aDataSequences, this );
300*b1cdbd2cSJim Jagielski     ModifyListenerHelper::addListenerToAllElements( m_aDataSequences, m_xModifyEventForwarder );
301*b1cdbd2cSJim Jagielski }
302*b1cdbd2cSJim Jagielski 
303*b1cdbd2cSJim Jagielski // ____ XDataSource ____
getDataSequences()304*b1cdbd2cSJim Jagielski uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > SAL_CALL ErrorBar::getDataSequences()
305*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
306*b1cdbd2cSJim Jagielski {
307*b1cdbd2cSJim Jagielski     return ContainerHelper::ContainerToSequence( m_aDataSequences );
308*b1cdbd2cSJim Jagielski }
309*b1cdbd2cSJim Jagielski 
310*b1cdbd2cSJim Jagielski // ____ XChild ____
getParent()311*b1cdbd2cSJim Jagielski uno::Reference< uno::XInterface > SAL_CALL ErrorBar::getParent()
312*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
313*b1cdbd2cSJim Jagielski {
314*b1cdbd2cSJim Jagielski     return m_xParent;
315*b1cdbd2cSJim Jagielski }
316*b1cdbd2cSJim Jagielski 
setParent(const uno::Reference<uno::XInterface> & Parent)317*b1cdbd2cSJim Jagielski void SAL_CALL ErrorBar::setParent(
318*b1cdbd2cSJim Jagielski     const uno::Reference< uno::XInterface >& Parent )
319*b1cdbd2cSJim Jagielski     throw (lang::NoSupportException,
320*b1cdbd2cSJim Jagielski            uno::RuntimeException)
321*b1cdbd2cSJim Jagielski {
322*b1cdbd2cSJim Jagielski     m_xParent.set( Parent );
323*b1cdbd2cSJim Jagielski }
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski // ____ OPropertySet ____
firePropertyChangeEvent()326*b1cdbd2cSJim Jagielski void ErrorBar::firePropertyChangeEvent()
327*b1cdbd2cSJim Jagielski {
328*b1cdbd2cSJim Jagielski     fireModifyEvent();
329*b1cdbd2cSJim Jagielski }
330*b1cdbd2cSJim Jagielski 
fireModifyEvent()331*b1cdbd2cSJim Jagielski void ErrorBar::fireModifyEvent()
332*b1cdbd2cSJim Jagielski {
333*b1cdbd2cSJim Jagielski     m_xModifyEventForwarder->modified( lang::EventObject( static_cast< uno::XWeak* >( this )));
334*b1cdbd2cSJim Jagielski }
335*b1cdbd2cSJim Jagielski 
336*b1cdbd2cSJim Jagielski // ================================================================================
337*b1cdbd2cSJim Jagielski 
getSupportedServiceNames_Static()338*b1cdbd2cSJim Jagielski uno::Sequence< ::rtl::OUString > ErrorBar::getSupportedServiceNames_Static()
339*b1cdbd2cSJim Jagielski {
340*b1cdbd2cSJim Jagielski     uno::Sequence< ::rtl::OUString > aServices( 2 );
341*b1cdbd2cSJim Jagielski     aServices[ 0 ] = lcl_aServiceName;
342*b1cdbd2cSJim Jagielski     aServices[ 1 ] = C2U( "com.sun.star.chart2.ErrorBar" );
343*b1cdbd2cSJim Jagielski     return aServices;
344*b1cdbd2cSJim Jagielski }
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski // implement XServiceInfo methods basing upon getSupportedServiceNames_Static
347*b1cdbd2cSJim Jagielski APPHELPER_XSERVICEINFO_IMPL( ErrorBar, lcl_aServiceName );
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski // needed by MSC compiler
350*b1cdbd2cSJim Jagielski using impl::ErrorBar_Base;
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski IMPLEMENT_FORWARD_XINTERFACE2( ErrorBar, ErrorBar_Base, OPropertySet )
353*b1cdbd2cSJim Jagielski IMPLEMENT_FORWARD_XTYPEPROVIDER2( ErrorBar, ErrorBar_Base, OPropertySet )
354*b1cdbd2cSJim Jagielski 
355*b1cdbd2cSJim Jagielski } //  namespace chart
356