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 
27*b1cdbd2cSJim Jagielski #include "MinMaxLineWrapper.hxx"
28*b1cdbd2cSJim Jagielski #include "macros.hxx"
29*b1cdbd2cSJim Jagielski #include "Chart2ModelContact.hxx"
30*b1cdbd2cSJim Jagielski #include "DiagramHelper.hxx"
31*b1cdbd2cSJim Jagielski #include "servicenames_charttypes.hxx"
32*b1cdbd2cSJim Jagielski #include "ContainerHelper.hxx"
33*b1cdbd2cSJim Jagielski #include <com/sun/star/chart2/XChartType.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/chart2/XDataSeriesContainer.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/drawing/LineJoint.hpp>
36*b1cdbd2cSJim Jagielski 
37*b1cdbd2cSJim Jagielski #include "LineProperties.hxx"
38*b1cdbd2cSJim Jagielski #include "UserDefinedProperties.hxx"
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
41*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::chart2;
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski using ::com::sun::star::beans::Property;
44*b1cdbd2cSJim Jagielski using ::osl::MutexGuard;
45*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Reference;
46*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Sequence;
47*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Any;
48*b1cdbd2cSJim Jagielski using ::rtl::OUString;
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski namespace
51*b1cdbd2cSJim Jagielski {
52*b1cdbd2cSJim Jagielski static const OUString lcl_aServiceName(
53*b1cdbd2cSJim Jagielski     RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.chart.ChartLine" ));
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperDefaults_Initializer
56*b1cdbd2cSJim Jagielski {
operator ()__anonbb8d6e550111::StaticMinMaxLineWrapperDefaults_Initializer57*b1cdbd2cSJim Jagielski     ::chart::tPropertyValueMap* operator()()
58*b1cdbd2cSJim Jagielski     {
59*b1cdbd2cSJim Jagielski         static ::chart::tPropertyValueMap aStaticDefaults;
60*b1cdbd2cSJim Jagielski         lcl_AddDefaultsToMap( aStaticDefaults );
61*b1cdbd2cSJim Jagielski         return &aStaticDefaults;
62*b1cdbd2cSJim Jagielski     }
63*b1cdbd2cSJim Jagielski private:
lcl_AddDefaultsToMap__anonbb8d6e550111::StaticMinMaxLineWrapperDefaults_Initializer64*b1cdbd2cSJim Jagielski     void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap )
65*b1cdbd2cSJim Jagielski     {
66*b1cdbd2cSJim Jagielski         ::chart::LineProperties::AddDefaultsToMap( rOutMap );
67*b1cdbd2cSJim Jagielski     }
68*b1cdbd2cSJim Jagielski };
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperDefaults : public rtl::StaticAggregate< ::chart::tPropertyValueMap, StaticMinMaxLineWrapperDefaults_Initializer >
71*b1cdbd2cSJim Jagielski {
72*b1cdbd2cSJim Jagielski };
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperPropertyArray_Initializer
75*b1cdbd2cSJim Jagielski {
operator ()__anonbb8d6e550111::StaticMinMaxLineWrapperPropertyArray_Initializer76*b1cdbd2cSJim Jagielski     Sequence< Property >* operator()()
77*b1cdbd2cSJim Jagielski     {
78*b1cdbd2cSJim Jagielski         static Sequence< Property > aPropSeq( lcl_GetPropertySequence() );
79*b1cdbd2cSJim Jagielski         return &aPropSeq;
80*b1cdbd2cSJim Jagielski     }
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski private:
lcl_GetPropertySequence__anonbb8d6e550111::StaticMinMaxLineWrapperPropertyArray_Initializer83*b1cdbd2cSJim Jagielski     Sequence< Property > lcl_GetPropertySequence()
84*b1cdbd2cSJim Jagielski     {
85*b1cdbd2cSJim Jagielski         ::std::vector< ::com::sun::star::beans::Property > aProperties;
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski         ::chart::LineProperties::AddPropertiesToVector( aProperties );
88*b1cdbd2cSJim Jagielski         //::chart::NamedLineProperties::AddPropertiesToVector( aProperties );
89*b1cdbd2cSJim Jagielski         ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties );
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski         ::std::sort( aProperties.begin(), aProperties.end(),
92*b1cdbd2cSJim Jagielski                      ::chart::PropertyNameLess() );
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski         return ::chart::ContainerHelper::ContainerToSequence( aProperties );
95*b1cdbd2cSJim Jagielski     }
96*b1cdbd2cSJim Jagielski };
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticMinMaxLineWrapperPropertyArray_Initializer >
99*b1cdbd2cSJim Jagielski {
100*b1cdbd2cSJim Jagielski };
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperInfoHelper_Initializer
103*b1cdbd2cSJim Jagielski {
operator ()__anonbb8d6e550111::StaticMinMaxLineWrapperInfoHelper_Initializer104*b1cdbd2cSJim Jagielski     ::cppu::OPropertyArrayHelper* operator()()
105*b1cdbd2cSJim Jagielski     {
106*b1cdbd2cSJim Jagielski         static ::cppu::OPropertyArrayHelper aPropHelper( *StaticMinMaxLineWrapperPropertyArray::get() );
107*b1cdbd2cSJim Jagielski         return &aPropHelper;
108*b1cdbd2cSJim Jagielski     }
109*b1cdbd2cSJim Jagielski };
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperInfoHelper : public rtl::StaticAggregate< ::cppu::OPropertyArrayHelper, StaticMinMaxLineWrapperInfoHelper_Initializer >
112*b1cdbd2cSJim Jagielski {
113*b1cdbd2cSJim Jagielski };
114*b1cdbd2cSJim Jagielski 
115*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperInfo_Initializer
116*b1cdbd2cSJim Jagielski {
operator ()__anonbb8d6e550111::StaticMinMaxLineWrapperInfo_Initializer117*b1cdbd2cSJim Jagielski     uno::Reference< beans::XPropertySetInfo >* operator()()
118*b1cdbd2cSJim Jagielski     {
119*b1cdbd2cSJim Jagielski         static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
120*b1cdbd2cSJim Jagielski             ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticMinMaxLineWrapperInfoHelper::get() ) );
121*b1cdbd2cSJim Jagielski         return &xPropertySetInfo;
122*b1cdbd2cSJim Jagielski     }
123*b1cdbd2cSJim Jagielski };
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski struct StaticMinMaxLineWrapperInfo : public rtl::StaticAggregate< uno::Reference< beans::XPropertySetInfo >, StaticMinMaxLineWrapperInfo_Initializer >
126*b1cdbd2cSJim Jagielski {
127*b1cdbd2cSJim Jagielski };
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski } // anonymous namespace
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski // --------------------------------------------------------------------------------
132*b1cdbd2cSJim Jagielski 
133*b1cdbd2cSJim Jagielski namespace chart
134*b1cdbd2cSJim Jagielski {
135*b1cdbd2cSJim Jagielski namespace wrapper
136*b1cdbd2cSJim Jagielski {
137*b1cdbd2cSJim Jagielski 
MinMaxLineWrapper(::boost::shared_ptr<Chart2ModelContact> spChart2ModelContact)138*b1cdbd2cSJim Jagielski MinMaxLineWrapper::MinMaxLineWrapper( ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact )
139*b1cdbd2cSJim Jagielski         : m_spChart2ModelContact( spChart2ModelContact )
140*b1cdbd2cSJim Jagielski         , m_aEventListenerContainer( m_aMutex )
141*b1cdbd2cSJim Jagielski         , m_aWrappedLineJointProperty( C2U("LineJoint"), uno::makeAny( drawing::LineJoint_NONE ))
142*b1cdbd2cSJim Jagielski {
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski 
~MinMaxLineWrapper()145*b1cdbd2cSJim Jagielski MinMaxLineWrapper::~MinMaxLineWrapper()
146*b1cdbd2cSJim Jagielski {
147*b1cdbd2cSJim Jagielski }
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski // ____ XComponent ____
dispose()150*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::dispose()
151*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
152*b1cdbd2cSJim Jagielski {
153*b1cdbd2cSJim Jagielski     Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) );
154*b1cdbd2cSJim Jagielski     m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) );
155*b1cdbd2cSJim Jagielski }
156*b1cdbd2cSJim Jagielski 
addEventListener(const Reference<lang::XEventListener> & xListener)157*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::addEventListener(
158*b1cdbd2cSJim Jagielski     const Reference< lang::XEventListener >& xListener )
159*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
160*b1cdbd2cSJim Jagielski {
161*b1cdbd2cSJim Jagielski 	m_aEventListenerContainer.addInterface( xListener );
162*b1cdbd2cSJim Jagielski }
163*b1cdbd2cSJim Jagielski 
removeEventListener(const Reference<lang::XEventListener> & aListener)164*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::removeEventListener(
165*b1cdbd2cSJim Jagielski     const Reference< lang::XEventListener >& aListener )
166*b1cdbd2cSJim Jagielski     throw (uno::RuntimeException)
167*b1cdbd2cSJim Jagielski {
168*b1cdbd2cSJim Jagielski 	m_aEventListenerContainer.removeInterface( aListener );
169*b1cdbd2cSJim Jagielski }
170*b1cdbd2cSJim Jagielski 
getInfoHelper()171*b1cdbd2cSJim Jagielski ::cppu::IPropertyArrayHelper& MinMaxLineWrapper::getInfoHelper()
172*b1cdbd2cSJim Jagielski {
173*b1cdbd2cSJim Jagielski     return *StaticMinMaxLineWrapperInfoHelper::get();
174*b1cdbd2cSJim Jagielski }
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski //XPropertySet
getPropertySetInfo()177*b1cdbd2cSJim Jagielski uno::Reference< beans::XPropertySetInfo > SAL_CALL MinMaxLineWrapper::getPropertySetInfo()
178*b1cdbd2cSJim Jagielski                     throw (uno::RuntimeException)
179*b1cdbd2cSJim Jagielski {
180*b1cdbd2cSJim Jagielski     return *StaticMinMaxLineWrapperInfo::get();
181*b1cdbd2cSJim Jagielski }
182*b1cdbd2cSJim Jagielski 
setPropertyValue(const::rtl::OUString & rPropertyName,const uno::Any & rValue)183*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::setPropertyValue( const ::rtl::OUString& rPropertyName, const uno::Any& rValue )
184*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
185*b1cdbd2cSJim Jagielski {
186*b1cdbd2cSJim Jagielski     Reference< beans::XPropertySet > xPropSet(0);
187*b1cdbd2cSJim Jagielski 
188*b1cdbd2cSJim Jagielski     Reference< chart2::XDiagram > xDiagram( m_spChart2ModelContact->getChart2Diagram() );
189*b1cdbd2cSJim Jagielski     Sequence< Reference< chart2::XChartType > > aTypes(
190*b1cdbd2cSJim Jagielski             ::chart::DiagramHelper::getChartTypesFromDiagram( xDiagram ) );
191*b1cdbd2cSJim Jagielski     for( sal_Int32 nN = 0; nN < aTypes.getLength(); nN++ )
192*b1cdbd2cSJim Jagielski     {
193*b1cdbd2cSJim Jagielski         Reference< chart2::XChartType > xType( aTypes[nN] );
194*b1cdbd2cSJim Jagielski         if( xType->getChartType().equals(CHART2_SERVICE_NAME_CHARTTYPE_CANDLESTICK) )
195*b1cdbd2cSJim Jagielski         {
196*b1cdbd2cSJim Jagielski             Reference< chart2::XDataSeriesContainer > xSeriesContainer(xType,uno::UNO_QUERY);
197*b1cdbd2cSJim Jagielski             if( xSeriesContainer.is() )
198*b1cdbd2cSJim Jagielski             {
199*b1cdbd2cSJim Jagielski                 Sequence< Reference< chart2::XDataSeries > > aSeriesSeq( xSeriesContainer->getDataSeries() );
200*b1cdbd2cSJim Jagielski                 if(aSeriesSeq.getLength())
201*b1cdbd2cSJim Jagielski                 {
202*b1cdbd2cSJim Jagielski                     xPropSet = Reference< beans::XPropertySet >(aSeriesSeq[0],uno::UNO_QUERY);
203*b1cdbd2cSJim Jagielski                     if(xPropSet.is())
204*b1cdbd2cSJim Jagielski                     {
205*b1cdbd2cSJim Jagielski                         if( rPropertyName.equals( C2U("LineColor")) )
206*b1cdbd2cSJim Jagielski                             xPropSet->setPropertyValue( C2U("Color"), rValue );
207*b1cdbd2cSJim Jagielski                         else if( rPropertyName.equals( C2U("LineTransparence")) )
208*b1cdbd2cSJim Jagielski                             xPropSet->setPropertyValue( C2U("Transparency"), rValue );
209*b1cdbd2cSJim Jagielski                         else if( rPropertyName.equals( m_aWrappedLineJointProperty.getOuterName() ) )
210*b1cdbd2cSJim Jagielski                             m_aWrappedLineJointProperty.setPropertyValue( rValue, xPropSet );
211*b1cdbd2cSJim Jagielski                         else
212*b1cdbd2cSJim Jagielski                             xPropSet->setPropertyValue( rPropertyName, rValue );
213*b1cdbd2cSJim Jagielski                         return;
214*b1cdbd2cSJim Jagielski                     }
215*b1cdbd2cSJim Jagielski                 }
216*b1cdbd2cSJim Jagielski             }
217*b1cdbd2cSJim Jagielski         }
218*b1cdbd2cSJim Jagielski     }
219*b1cdbd2cSJim Jagielski }
getPropertyValue(const::rtl::OUString & rPropertyName)220*b1cdbd2cSJim Jagielski uno::Any SAL_CALL MinMaxLineWrapper::getPropertyValue( const ::rtl::OUString& rPropertyName )
221*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
222*b1cdbd2cSJim Jagielski {
223*b1cdbd2cSJim Jagielski     Any aRet;
224*b1cdbd2cSJim Jagielski 
225*b1cdbd2cSJim Jagielski     Reference< beans::XPropertySet > xPropSet(0);
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski     Reference< chart2::XDiagram > xDiagram( m_spChart2ModelContact->getChart2Diagram() );
228*b1cdbd2cSJim Jagielski     Sequence< Reference< chart2::XChartType > > aTypes(
229*b1cdbd2cSJim Jagielski             ::chart::DiagramHelper::getChartTypesFromDiagram( xDiagram ) );
230*b1cdbd2cSJim Jagielski     for( sal_Int32 nN = 0; nN < aTypes.getLength(); nN++ )
231*b1cdbd2cSJim Jagielski     {
232*b1cdbd2cSJim Jagielski         Reference< chart2::XChartType > xType( aTypes[nN] );
233*b1cdbd2cSJim Jagielski         if( xType->getChartType().equals(CHART2_SERVICE_NAME_CHARTTYPE_CANDLESTICK) )
234*b1cdbd2cSJim Jagielski         {
235*b1cdbd2cSJim Jagielski             Reference< chart2::XDataSeriesContainer > xSeriesContainer(xType,uno::UNO_QUERY);
236*b1cdbd2cSJim Jagielski             if( xSeriesContainer.is() )
237*b1cdbd2cSJim Jagielski             {
238*b1cdbd2cSJim Jagielski                 Sequence< Reference< chart2::XDataSeries > > aSeriesSeq( xSeriesContainer->getDataSeries() );
239*b1cdbd2cSJim Jagielski                 if(aSeriesSeq.getLength())
240*b1cdbd2cSJim Jagielski                 {
241*b1cdbd2cSJim Jagielski                     xPropSet = Reference< beans::XPropertySet >(aSeriesSeq[0],uno::UNO_QUERY);
242*b1cdbd2cSJim Jagielski                     break;
243*b1cdbd2cSJim Jagielski                 }
244*b1cdbd2cSJim Jagielski             }
245*b1cdbd2cSJim Jagielski         }
246*b1cdbd2cSJim Jagielski     }
247*b1cdbd2cSJim Jagielski     if(xPropSet.is())
248*b1cdbd2cSJim Jagielski     {
249*b1cdbd2cSJim Jagielski         if( rPropertyName.equals( C2U("LineColor")) )
250*b1cdbd2cSJim Jagielski             aRet = xPropSet->getPropertyValue( C2U("Color") );
251*b1cdbd2cSJim Jagielski         else if( rPropertyName.equals( C2U("LineTransparence")) )
252*b1cdbd2cSJim Jagielski             aRet = xPropSet->getPropertyValue( C2U("Transparency") );
253*b1cdbd2cSJim Jagielski         else if( rPropertyName.equals( m_aWrappedLineJointProperty.getOuterName() ) )
254*b1cdbd2cSJim Jagielski             aRet = m_aWrappedLineJointProperty.getPropertyValue( xPropSet );
255*b1cdbd2cSJim Jagielski         else
256*b1cdbd2cSJim Jagielski             aRet = xPropSet->getPropertyValue( rPropertyName );
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski     }
259*b1cdbd2cSJim Jagielski     return aRet;
260*b1cdbd2cSJim Jagielski }
261*b1cdbd2cSJim Jagielski 
addPropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)262*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::addPropertyChangeListener( const ::rtl::OUString& /*aPropertyName*/, const uno::Reference< beans::XPropertyChangeListener >& /*xListener*/ )
263*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
264*b1cdbd2cSJim Jagielski {
265*b1cdbd2cSJim Jagielski     OSL_ENSURE(false,"not implemented");
266*b1cdbd2cSJim Jagielski }
removePropertyChangeListener(const::rtl::OUString &,const uno::Reference<beans::XPropertyChangeListener> &)267*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::removePropertyChangeListener( const ::rtl::OUString& /*aPropertyName*/, const uno::Reference< beans::XPropertyChangeListener >& /*aListener*/ )
268*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
269*b1cdbd2cSJim Jagielski {
270*b1cdbd2cSJim Jagielski     OSL_ENSURE(false,"not implemented");
271*b1cdbd2cSJim Jagielski }
addVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)272*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::addVetoableChangeListener( const ::rtl::OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener >& /*aListener*/ )
273*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
274*b1cdbd2cSJim Jagielski {
275*b1cdbd2cSJim Jagielski     OSL_ENSURE(false,"not implemented");
276*b1cdbd2cSJim Jagielski }
removeVetoableChangeListener(const::rtl::OUString &,const uno::Reference<beans::XVetoableChangeListener> &)277*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::removeVetoableChangeListener( const ::rtl::OUString& /*PropertyName*/, const uno::Reference< beans::XVetoableChangeListener >& /*aListener*/ )
278*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
279*b1cdbd2cSJim Jagielski {
280*b1cdbd2cSJim Jagielski     OSL_ENSURE(false,"not implemented");
281*b1cdbd2cSJim Jagielski }
282*b1cdbd2cSJim Jagielski 
283*b1cdbd2cSJim Jagielski //XMultiPropertySet
284*b1cdbd2cSJim Jagielski //getPropertySetInfo() already declared in XPropertySet
setPropertyValues(const uno::Sequence<::rtl::OUString> & rNameSeq,const uno::Sequence<uno::Any> & rValueSeq)285*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::setPropertyValues( const uno::Sequence< ::rtl::OUString >& rNameSeq, const uno::Sequence< uno::Any >& rValueSeq )
286*b1cdbd2cSJim Jagielski                     throw (beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
287*b1cdbd2cSJim Jagielski {
288*b1cdbd2cSJim Jagielski     bool bUnknownProperty = false;
289*b1cdbd2cSJim Jagielski     sal_Int32 nMinCount = std::min( rValueSeq.getLength(), rNameSeq.getLength() );
290*b1cdbd2cSJim Jagielski     for(sal_Int32 nN=0; nN<nMinCount; nN++)
291*b1cdbd2cSJim Jagielski     {
292*b1cdbd2cSJim Jagielski         ::rtl::OUString aPropertyName( rNameSeq[nN] );
293*b1cdbd2cSJim Jagielski         try
294*b1cdbd2cSJim Jagielski         {
295*b1cdbd2cSJim Jagielski             this->setPropertyValue( aPropertyName, rValueSeq[nN] );
296*b1cdbd2cSJim Jagielski         }
297*b1cdbd2cSJim Jagielski         catch( beans::UnknownPropertyException& ex )
298*b1cdbd2cSJim Jagielski         {
299*b1cdbd2cSJim Jagielski             ASSERT_EXCEPTION( ex );
300*b1cdbd2cSJim Jagielski             bUnknownProperty = true;
301*b1cdbd2cSJim Jagielski         }
302*b1cdbd2cSJim Jagielski     }
303*b1cdbd2cSJim Jagielski     //todo: store unknown properties elsewhere
304*b1cdbd2cSJim Jagielski //    if( bUnknownProperty )
305*b1cdbd2cSJim Jagielski //        throw beans::UnknownPropertyException();
306*b1cdbd2cSJim Jagielski }
getPropertyValues(const uno::Sequence<::rtl::OUString> & rNameSeq)307*b1cdbd2cSJim Jagielski uno::Sequence< uno::Any > SAL_CALL MinMaxLineWrapper::getPropertyValues( const uno::Sequence< ::rtl::OUString >& rNameSeq )
308*b1cdbd2cSJim Jagielski                     throw (uno::RuntimeException)
309*b1cdbd2cSJim Jagielski {
310*b1cdbd2cSJim Jagielski     Sequence< Any > aRetSeq;
311*b1cdbd2cSJim Jagielski     if( rNameSeq.getLength() )
312*b1cdbd2cSJim Jagielski     {
313*b1cdbd2cSJim Jagielski         aRetSeq.realloc( rNameSeq.getLength() );
314*b1cdbd2cSJim Jagielski         for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++)
315*b1cdbd2cSJim Jagielski         {
316*b1cdbd2cSJim Jagielski             ::rtl::OUString aPropertyName( rNameSeq[nN] );
317*b1cdbd2cSJim Jagielski             aRetSeq[nN] = this->getPropertyValue( aPropertyName );
318*b1cdbd2cSJim Jagielski         }
319*b1cdbd2cSJim Jagielski     }
320*b1cdbd2cSJim Jagielski     return aRetSeq;
321*b1cdbd2cSJim Jagielski }
addPropertiesChangeListener(const uno::Sequence<::rtl::OUString> &,const uno::Reference<beans::XPropertiesChangeListener> &)322*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::addPropertiesChangeListener(
323*b1cdbd2cSJim Jagielski     const uno::Sequence< ::rtl::OUString >& /* aPropertyNames */,
324*b1cdbd2cSJim Jagielski     const uno::Reference< beans::XPropertiesChangeListener >& /* xListener */ )
325*b1cdbd2cSJim Jagielski                     throw (uno::RuntimeException)
326*b1cdbd2cSJim Jagielski {
327*b1cdbd2cSJim Jagielski     OSL_ENSURE(false,"not implemented");
328*b1cdbd2cSJim Jagielski }
removePropertiesChangeListener(const uno::Reference<beans::XPropertiesChangeListener> &)329*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::removePropertiesChangeListener(
330*b1cdbd2cSJim Jagielski     const uno::Reference< beans::XPropertiesChangeListener >& /* xListener */ )
331*b1cdbd2cSJim Jagielski                     throw (uno::RuntimeException)
332*b1cdbd2cSJim Jagielski {
333*b1cdbd2cSJim Jagielski     OSL_ENSURE(false,"not implemented");
334*b1cdbd2cSJim Jagielski }
firePropertiesChangeEvent(const uno::Sequence<::rtl::OUString> &,const uno::Reference<beans::XPropertiesChangeListener> &)335*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::firePropertiesChangeEvent(
336*b1cdbd2cSJim Jagielski     const uno::Sequence< ::rtl::OUString >& /* aPropertyNames */,
337*b1cdbd2cSJim Jagielski     const uno::Reference< beans::XPropertiesChangeListener >& /* xListener */ )
338*b1cdbd2cSJim Jagielski                     throw (uno::RuntimeException)
339*b1cdbd2cSJim Jagielski {
340*b1cdbd2cSJim Jagielski     OSL_ENSURE(false,"not implemented");
341*b1cdbd2cSJim Jagielski }
342*b1cdbd2cSJim Jagielski 
343*b1cdbd2cSJim Jagielski //XPropertyState
getPropertyState(const::rtl::OUString & rPropertyName)344*b1cdbd2cSJim Jagielski beans::PropertyState SAL_CALL MinMaxLineWrapper::getPropertyState( const ::rtl::OUString& rPropertyName )
345*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, uno::RuntimeException)
346*b1cdbd2cSJim Jagielski {
347*b1cdbd2cSJim Jagielski     if( rPropertyName.equals( m_aWrappedLineJointProperty.getOuterName() ) )
348*b1cdbd2cSJim Jagielski         return beans::PropertyState_DEFAULT_VALUE;
349*b1cdbd2cSJim Jagielski 
350*b1cdbd2cSJim Jagielski     uno::Any aDefault( this->getPropertyDefault( rPropertyName ) );
351*b1cdbd2cSJim Jagielski     uno::Any aValue( this->getPropertyValue( rPropertyName ) );
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski     if( aDefault == aValue )
354*b1cdbd2cSJim Jagielski         return beans::PropertyState_DEFAULT_VALUE;
355*b1cdbd2cSJim Jagielski 
356*b1cdbd2cSJim Jagielski     return beans::PropertyState_DIRECT_VALUE;
357*b1cdbd2cSJim Jagielski }
getPropertyStates(const uno::Sequence<::rtl::OUString> & rNameSeq)358*b1cdbd2cSJim Jagielski uno::Sequence< beans::PropertyState > SAL_CALL MinMaxLineWrapper::getPropertyStates( const uno::Sequence< ::rtl::OUString >& rNameSeq )
359*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, uno::RuntimeException)
360*b1cdbd2cSJim Jagielski {
361*b1cdbd2cSJim Jagielski     Sequence< beans::PropertyState > aRetSeq;
362*b1cdbd2cSJim Jagielski     if( rNameSeq.getLength() )
363*b1cdbd2cSJim Jagielski     {
364*b1cdbd2cSJim Jagielski         aRetSeq.realloc( rNameSeq.getLength() );
365*b1cdbd2cSJim Jagielski         for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++)
366*b1cdbd2cSJim Jagielski         {
367*b1cdbd2cSJim Jagielski             ::rtl::OUString aPropertyName( rNameSeq[nN] );
368*b1cdbd2cSJim Jagielski             aRetSeq[nN] = this->getPropertyState( aPropertyName );
369*b1cdbd2cSJim Jagielski         }
370*b1cdbd2cSJim Jagielski     }
371*b1cdbd2cSJim Jagielski     return aRetSeq;
372*b1cdbd2cSJim Jagielski }
setPropertyToDefault(const::rtl::OUString & rPropertyName)373*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::setPropertyToDefault( const ::rtl::OUString& rPropertyName )
374*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, uno::RuntimeException)
375*b1cdbd2cSJim Jagielski {
376*b1cdbd2cSJim Jagielski     this->setPropertyValue( rPropertyName, this->getPropertyDefault(rPropertyName) );
377*b1cdbd2cSJim Jagielski }
378*b1cdbd2cSJim Jagielski 
getPropertyDefault(const::rtl::OUString & rPropertyName)379*b1cdbd2cSJim Jagielski uno::Any SAL_CALL MinMaxLineWrapper::getPropertyDefault( const ::rtl::OUString& rPropertyName )
380*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
381*b1cdbd2cSJim Jagielski {
382*b1cdbd2cSJim Jagielski     const tPropertyValueMap& rStaticDefaults = *StaticMinMaxLineWrapperDefaults::get();
383*b1cdbd2cSJim Jagielski     tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( getInfoHelper().getHandleByName( rPropertyName ) ) );
384*b1cdbd2cSJim Jagielski     if( aFound == rStaticDefaults.end() )
385*b1cdbd2cSJim Jagielski         return uno::Any();
386*b1cdbd2cSJim Jagielski     return (*aFound).second;
387*b1cdbd2cSJim Jagielski }
388*b1cdbd2cSJim Jagielski 
389*b1cdbd2cSJim Jagielski //XMultiPropertyStates
390*b1cdbd2cSJim Jagielski //getPropertyStates() already declared in XPropertyState
setAllPropertiesToDefault()391*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::setAllPropertiesToDefault(  )
392*b1cdbd2cSJim Jagielski                     throw (uno::RuntimeException)
393*b1cdbd2cSJim Jagielski {
394*b1cdbd2cSJim Jagielski     const Sequence< beans::Property >& rPropSeq = *StaticMinMaxLineWrapperPropertyArray::get();
395*b1cdbd2cSJim Jagielski     for(sal_Int32 nN=0; nN<rPropSeq.getLength(); nN++)
396*b1cdbd2cSJim Jagielski     {
397*b1cdbd2cSJim Jagielski         ::rtl::OUString aPropertyName( rPropSeq[nN].Name );
398*b1cdbd2cSJim Jagielski         this->setPropertyToDefault( aPropertyName );
399*b1cdbd2cSJim Jagielski     }
400*b1cdbd2cSJim Jagielski }
setPropertiesToDefault(const uno::Sequence<::rtl::OUString> & rNameSeq)401*b1cdbd2cSJim Jagielski void SAL_CALL MinMaxLineWrapper::setPropertiesToDefault( const uno::Sequence< ::rtl::OUString >& rNameSeq )
402*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, uno::RuntimeException)
403*b1cdbd2cSJim Jagielski {
404*b1cdbd2cSJim Jagielski     for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++)
405*b1cdbd2cSJim Jagielski     {
406*b1cdbd2cSJim Jagielski         ::rtl::OUString aPropertyName( rNameSeq[nN] );
407*b1cdbd2cSJim Jagielski         this->setPropertyToDefault( aPropertyName );
408*b1cdbd2cSJim Jagielski     }
409*b1cdbd2cSJim Jagielski }
getPropertyDefaults(const uno::Sequence<::rtl::OUString> & rNameSeq)410*b1cdbd2cSJim Jagielski uno::Sequence< uno::Any > SAL_CALL MinMaxLineWrapper::getPropertyDefaults( const uno::Sequence< ::rtl::OUString >& rNameSeq )
411*b1cdbd2cSJim Jagielski                     throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException)
412*b1cdbd2cSJim Jagielski {
413*b1cdbd2cSJim Jagielski     Sequence< Any > aRetSeq;
414*b1cdbd2cSJim Jagielski     if( rNameSeq.getLength() )
415*b1cdbd2cSJim Jagielski     {
416*b1cdbd2cSJim Jagielski         aRetSeq.realloc( rNameSeq.getLength() );
417*b1cdbd2cSJim Jagielski         for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++)
418*b1cdbd2cSJim Jagielski         {
419*b1cdbd2cSJim Jagielski             ::rtl::OUString aPropertyName( rNameSeq[nN] );
420*b1cdbd2cSJim Jagielski             aRetSeq[nN] = this->getPropertyDefault( aPropertyName );
421*b1cdbd2cSJim Jagielski         }
422*b1cdbd2cSJim Jagielski     }
423*b1cdbd2cSJim Jagielski     return aRetSeq;
424*b1cdbd2cSJim Jagielski }
425*b1cdbd2cSJim Jagielski 
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski // ================================================================================
428*b1cdbd2cSJim Jagielski 
getSupportedServiceNames_Static()429*b1cdbd2cSJim Jagielski Sequence< OUString > MinMaxLineWrapper::getSupportedServiceNames_Static()
430*b1cdbd2cSJim Jagielski {
431*b1cdbd2cSJim Jagielski     Sequence< OUString > aServices( 3 );
432*b1cdbd2cSJim Jagielski     aServices[ 0 ] = C2U( "com.sun.star.chart.ChartLine" );
433*b1cdbd2cSJim Jagielski     aServices[ 1 ] = C2U( "com.sun.star.xml.UserDefinedAttributeSupplier" );
434*b1cdbd2cSJim Jagielski     aServices[ 2 ] = C2U( "com.sun.star.drawing.LineProperties" );
435*b1cdbd2cSJim Jagielski 
436*b1cdbd2cSJim Jagielski     return aServices;
437*b1cdbd2cSJim Jagielski }
438*b1cdbd2cSJim Jagielski 
439*b1cdbd2cSJim Jagielski // implement XServiceInfo methods basing upon getSupportedServiceNames_Static
440*b1cdbd2cSJim Jagielski APPHELPER_XSERVICEINFO_IMPL( MinMaxLineWrapper, lcl_aServiceName );
441*b1cdbd2cSJim Jagielski 
442*b1cdbd2cSJim Jagielski } //  namespace wrapper
443*b1cdbd2cSJim Jagielski } //  namespace chart
444