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 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_chart2.hxx" 26 27 #include "WrappedAxisAndGridExistenceProperties.hxx" 28 #include "AxisHelper.hxx" 29 #include "ChartModelHelper.hxx" 30 #include "TitleHelper.hxx" 31 #include "macros.hxx" 32 33 using namespace ::com::sun::star; 34 using ::com::sun::star::uno::Any; 35 using ::com::sun::star::uno::Reference; 36 using ::com::sun::star::uno::Sequence; 37 using ::rtl::OUString; 38 39 //............................................................................. 40 namespace chart 41 { 42 namespace wrapper 43 { 44 45 class WrappedAxisAndGridExistenceProperty : public WrappedProperty 46 { 47 public: 48 WrappedAxisAndGridExistenceProperty( bool bAxis, bool bMain, sal_Int32 nDimensionIndex 49 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ); 50 virtual ~WrappedAxisAndGridExistenceProperty(); 51 52 virtual void setPropertyValue( const ::com::sun::star::uno::Any& rOuterValue, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xInnerPropertySet ) const 53 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); 54 55 virtual ::com::sun::star::uno::Any getPropertyValue( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xInnerPropertySet ) const 56 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 57 58 virtual ::com::sun::star::uno::Any getPropertyDefault( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState >& xInnerPropertyState ) const 59 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 60 61 private: //member 62 ::boost::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; 63 bool m_bAxis; 64 bool m_bMain; 65 sal_Int32 m_nDimensionIndex; 66 }; 67 68 void WrappedAxisAndGridExistenceProperties::addWrappedProperties( std::vector< WrappedProperty* >& rList 69 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 70 { 71 rList.push_back( new WrappedAxisAndGridExistenceProperty( true, true, 0, spChart2ModelContact ) );//x axis 72 rList.push_back( new WrappedAxisAndGridExistenceProperty( true, false, 0, spChart2ModelContact ) );//x secondary axis 73 rList.push_back( new WrappedAxisAndGridExistenceProperty( false, true, 0, spChart2ModelContact ) );//x grid 74 rList.push_back( new WrappedAxisAndGridExistenceProperty( false, false, 0, spChart2ModelContact ) );//x help grid 75 76 rList.push_back( new WrappedAxisAndGridExistenceProperty( true, true, 1, spChart2ModelContact ) );//y axis 77 rList.push_back( new WrappedAxisAndGridExistenceProperty( true, false, 1, spChart2ModelContact ) );//y secondary axis 78 rList.push_back( new WrappedAxisAndGridExistenceProperty( false, true, 1, spChart2ModelContact ) );//y grid 79 rList.push_back( new WrappedAxisAndGridExistenceProperty( false, false, 1, spChart2ModelContact ) );//y help grid 80 81 rList.push_back( new WrappedAxisAndGridExistenceProperty( true, true, 2, spChart2ModelContact ) );//z axis 82 rList.push_back( new WrappedAxisAndGridExistenceProperty( false, true, 2, spChart2ModelContact ) );//z grid 83 rList.push_back( new WrappedAxisAndGridExistenceProperty( false, false, 2, spChart2ModelContact ) );//z help grid 84 } 85 86 WrappedAxisAndGridExistenceProperty::WrappedAxisAndGridExistenceProperty( bool bAxis, bool bMain, sal_Int32 nDimensionIndex 87 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 88 : WrappedProperty(OUString(),OUString()) 89 , m_spChart2ModelContact( spChart2ModelContact ) 90 , m_bAxis( bAxis ) 91 , m_bMain( bMain ) 92 , m_nDimensionIndex( nDimensionIndex ) 93 { 94 switch( m_nDimensionIndex ) 95 { 96 case 0: 97 { 98 if( m_bAxis ) 99 { 100 if( m_bMain ) 101 m_aOuterName = C2U( "HasXAxis" ); 102 else 103 m_aOuterName = C2U( "HasSecondaryXAxis" ); 104 } 105 else 106 { 107 if( m_bMain ) 108 m_aOuterName = C2U( "HasXAxisGrid" ); 109 else 110 m_aOuterName = C2U( "HasXAxisHelpGrid" ); 111 } 112 } 113 break; 114 case 2: 115 { 116 if( m_bAxis ) 117 { 118 OSL_ENSURE(m_bMain == true,"there is no secondary z axis at the old api"); 119 m_bMain = true; 120 m_aOuterName = C2U( "HasZAxis" ); 121 } 122 else 123 { 124 if( m_bMain ) 125 m_aOuterName = C2U( "HasZAxisGrid" ); 126 else 127 m_aOuterName = C2U( "HasZAxisHelpGrid" ); 128 } 129 } 130 break; 131 default: 132 { 133 if( m_bAxis ) 134 { 135 if( m_bMain ) 136 m_aOuterName = C2U( "HasYAxis" ); 137 else 138 m_aOuterName = C2U( "HasSecondaryYAxis" ); 139 } 140 else 141 { 142 if( m_bMain ) 143 m_aOuterName = C2U( "HasYAxisGrid" ); 144 else 145 m_aOuterName = C2U( "HasYAxisHelpGrid" ); 146 } 147 } 148 break; 149 } 150 } 151 152 WrappedAxisAndGridExistenceProperty::~WrappedAxisAndGridExistenceProperty() 153 { 154 } 155 156 void WrappedAxisAndGridExistenceProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const 157 throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) 158 { 159 sal_Bool bNewValue = false; 160 if( ! (rOuterValue >>= bNewValue) ) 161 throw lang::IllegalArgumentException( C2U("Has axis or grid properties require boolean values"), 0, 0 ); 162 163 sal_Bool bOldValue = sal_False; 164 getPropertyValue( xInnerPropertySet ) >>= bOldValue; 165 166 if( bOldValue == bNewValue ) 167 return; 168 169 Reference< chart2::XDiagram > xDiagram( m_spChart2ModelContact->getChart2Diagram() ); 170 if( bNewValue ) 171 { 172 if( m_bAxis ) 173 AxisHelper::showAxis( m_nDimensionIndex, m_bMain, xDiagram, m_spChart2ModelContact->m_xContext ); 174 else 175 AxisHelper::showGrid( m_nDimensionIndex, 0, m_bMain, xDiagram, m_spChart2ModelContact->m_xContext ); 176 } 177 else 178 { 179 if( m_bAxis ) 180 AxisHelper::hideAxis( m_nDimensionIndex, m_bMain, xDiagram ); 181 else 182 AxisHelper::hideGrid( m_nDimensionIndex, 0, m_bMain, xDiagram ); 183 } 184 } 185 186 Any WrappedAxisAndGridExistenceProperty::getPropertyValue( const Reference< beans::XPropertySet >& /* xInnerPropertySet */ ) const 187 throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 188 { 189 Any aRet; 190 Reference< chart2::XDiagram > xDiagram( m_spChart2ModelContact->getChart2Diagram() ); 191 if(m_bAxis) 192 { 193 sal_Bool bShown = AxisHelper::isAxisShown( m_nDimensionIndex, m_bMain, xDiagram ); 194 aRet <<= bShown; 195 } 196 else 197 { 198 sal_Bool bShown = AxisHelper::isGridShown( m_nDimensionIndex, 0, m_bMain, xDiagram ); 199 aRet <<= bShown; 200 } 201 return aRet; 202 } 203 204 Any WrappedAxisAndGridExistenceProperty::getPropertyDefault( const Reference< beans::XPropertyState >& /*xInnerPropertyState*/ ) const 205 throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 206 { 207 Any aRet; 208 aRet <<= false; 209 return aRet; 210 } 211 212 //--------------------------------------------------------------------------------------------------------------- 213 //--------------------------------------------------------------------------------------------------------------- 214 //--------------------------------------------------------------------------------------------------------------- 215 216 class WrappedAxisTitleExistenceProperty : public WrappedProperty 217 { 218 public: 219 WrappedAxisTitleExistenceProperty( sal_Int32 nTitleIndex 220 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ); 221 virtual ~WrappedAxisTitleExistenceProperty(); 222 223 virtual void setPropertyValue( const ::com::sun::star::uno::Any& rOuterValue, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xInnerPropertySet ) const 224 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); 225 226 virtual ::com::sun::star::uno::Any getPropertyValue( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xInnerPropertySet ) const 227 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 228 229 virtual ::com::sun::star::uno::Any getPropertyDefault( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState >& xInnerPropertyState ) const 230 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 231 232 private: //member 233 ::boost::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; 234 TitleHelper::eTitleType m_eTitleType; 235 }; 236 237 void WrappedAxisTitleExistenceProperties::addWrappedProperties( std::vector< WrappedProperty* >& rList 238 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 239 { 240 rList.push_back( new WrappedAxisTitleExistenceProperty( 0, spChart2ModelContact ) );//x axis title 241 rList.push_back( new WrappedAxisTitleExistenceProperty( 1, spChart2ModelContact ) );//y axis title 242 rList.push_back( new WrappedAxisTitleExistenceProperty( 2, spChart2ModelContact ) );//z axis title 243 rList.push_back( new WrappedAxisTitleExistenceProperty( 3, spChart2ModelContact ) );//secondary x axis title 244 rList.push_back( new WrappedAxisTitleExistenceProperty( 4, spChart2ModelContact ) );//secondary y axis title 245 } 246 247 WrappedAxisTitleExistenceProperty::WrappedAxisTitleExistenceProperty( sal_Int32 nTitleIndex 248 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 249 : WrappedProperty(OUString(),OUString()) 250 , m_spChart2ModelContact( spChart2ModelContact ) 251 , m_eTitleType( TitleHelper::Y_AXIS_TITLE ) 252 { 253 switch( nTitleIndex ) 254 { 255 case 0: 256 m_aOuterName = C2U( "HasXAxisTitle" ); 257 m_eTitleType = TitleHelper::X_AXIS_TITLE; 258 break; 259 case 2: 260 m_aOuterName = C2U( "HasZAxisTitle" ); 261 m_eTitleType = TitleHelper::Z_AXIS_TITLE; 262 break; 263 case 3: 264 m_aOuterName = C2U( "HasSecondaryXAxisTitle" ); 265 m_eTitleType = TitleHelper::SECONDARY_X_AXIS_TITLE; 266 break; 267 case 4: 268 m_aOuterName = C2U( "HasSecondaryYAxisTitle" ); 269 m_eTitleType = TitleHelper::SECONDARY_Y_AXIS_TITLE; 270 break; 271 default: 272 m_aOuterName = C2U( "HasYAxisTitle" ); 273 m_eTitleType = TitleHelper::Y_AXIS_TITLE; 274 break; 275 } 276 } 277 278 WrappedAxisTitleExistenceProperty::~WrappedAxisTitleExistenceProperty() 279 { 280 } 281 282 void WrappedAxisTitleExistenceProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const 283 throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) 284 { 285 sal_Bool bNewValue = false; 286 if( ! (rOuterValue >>= bNewValue) ) 287 throw lang::IllegalArgumentException( C2U("Has axis or grid properties require boolean values"), 0, 0 ); 288 289 sal_Bool bOldValue = sal_False; 290 getPropertyValue( xInnerPropertySet ) >>= bOldValue; 291 292 if( bOldValue == bNewValue ) 293 return; 294 295 if( bNewValue ) 296 { 297 rtl::OUString aTitleText; 298 TitleHelper::createTitle( m_eTitleType, aTitleText 299 , m_spChart2ModelContact->getChartModel(), m_spChart2ModelContact->m_xContext ); 300 } 301 else 302 { 303 TitleHelper::removeTitle( m_eTitleType, m_spChart2ModelContact->getChartModel() ); 304 } 305 } 306 307 Any WrappedAxisTitleExistenceProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const 308 throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 309 { 310 sal_Bool bHasTitle = sal_False; 311 312 Reference< chart2::XTitle > xTitle( TitleHelper::getTitle( m_eTitleType, m_spChart2ModelContact->getChartModel() ) ); 313 if( xTitle.is() && (TitleHelper::getCompleteString( xTitle ).getLength() != 0) ) 314 bHasTitle = sal_True; 315 316 Any aRet; 317 aRet <<= bHasTitle; 318 return aRet; 319 320 } 321 322 Any WrappedAxisTitleExistenceProperty::getPropertyDefault( const Reference< beans::XPropertyState >& /*xInnerPropertyState*/ ) const 323 throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 324 { 325 Any aRet; 326 aRet <<= sal_Bool( sal_False ); 327 return aRet; 328 } 329 330 //--------------------------------------------------------------------------------------------------------------- 331 //--------------------------------------------------------------------------------------------------------------- 332 //--------------------------------------------------------------------------------------------------------------- 333 334 class WrappedAxisLabelExistenceProperty : public WrappedProperty 335 { 336 public: 337 WrappedAxisLabelExistenceProperty( bool bMain, sal_Int32 nDimensionIndex 338 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ); 339 virtual ~WrappedAxisLabelExistenceProperty(); 340 341 virtual void setPropertyValue( const ::com::sun::star::uno::Any& rOuterValue, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xInnerPropertySet ) const 342 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); 343 344 virtual ::com::sun::star::uno::Any getPropertyValue( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xInnerPropertySet ) const 345 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 346 347 virtual ::com::sun::star::uno::Any getPropertyDefault( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyState >& xInnerPropertyState ) const 348 throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); 349 350 private: //member 351 ::boost::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; 352 bool m_bMain; 353 sal_Int32 m_nDimensionIndex; 354 }; 355 356 void WrappedAxisLabelExistenceProperties::addWrappedProperties( std::vector< WrappedProperty* >& rList 357 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 358 { 359 rList.push_back( new WrappedAxisLabelExistenceProperty( true, 0, spChart2ModelContact ) );//x axis 360 rList.push_back( new WrappedAxisLabelExistenceProperty( true, 1, spChart2ModelContact ) );//y axis 361 rList.push_back( new WrappedAxisLabelExistenceProperty( true, 2, spChart2ModelContact ) );//z axis 362 rList.push_back( new WrappedAxisLabelExistenceProperty( false, 0, spChart2ModelContact ) );//secondary x axis 363 rList.push_back( new WrappedAxisLabelExistenceProperty( false, 1, spChart2ModelContact ) );//secondary y axis 364 } 365 366 WrappedAxisLabelExistenceProperty::WrappedAxisLabelExistenceProperty( bool bMain, sal_Int32 nDimensionIndex 367 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 368 : WrappedProperty(OUString(),OUString()) 369 , m_spChart2ModelContact( spChart2ModelContact ) 370 , m_bMain( bMain ) 371 , m_nDimensionIndex( nDimensionIndex ) 372 { 373 switch( m_nDimensionIndex ) 374 { 375 case 0: 376 m_aOuterName = m_bMain ? C2U( "HasXAxisDescription" ) : C2U( "HasSecondaryXAxisDescription" ); 377 break; 378 case 2: 379 OSL_ENSURE(m_bMain,"there is no description available for a secondary z axis"); 380 m_aOuterName = C2U( "HasZAxisDescription" ); 381 break; 382 default: 383 m_aOuterName = m_bMain ? C2U( "HasYAxisDescription" ) : C2U( "HasSecondaryYAxisDescription" ); 384 break; 385 } 386 } 387 388 WrappedAxisLabelExistenceProperty::~WrappedAxisLabelExistenceProperty() 389 { 390 } 391 392 void WrappedAxisLabelExistenceProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const 393 throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) 394 { 395 sal_Bool bNewValue = false; 396 if( ! (rOuterValue >>= bNewValue) ) 397 throw lang::IllegalArgumentException( C2U("Has axis or grid properties require boolean values"), 0, 0 ); 398 399 sal_Bool bOldValue = sal_False; 400 getPropertyValue( xInnerPropertySet ) >>= bOldValue; 401 402 if( bOldValue == bNewValue ) 403 return; 404 405 Reference< chart2::XDiagram > xDiagram( m_spChart2ModelContact->getChart2Diagram() ); 406 Reference< beans::XPropertySet > xProp( AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ), uno::UNO_QUERY ); 407 if( !xProp.is() && bNewValue ) 408 { 409 //create axis if needed 410 xProp.set( AxisHelper::createAxis( m_nDimensionIndex, m_bMain, xDiagram, m_spChart2ModelContact->m_xContext ), uno::UNO_QUERY ); 411 if( xProp.is() ) 412 xProp->setPropertyValue( C2U( "Show" ), uno::makeAny( sal_False ) ); 413 } 414 if( xProp.is() ) 415 xProp->setPropertyValue( C2U( "DisplayLabels" ), rOuterValue ); 416 } 417 418 Any WrappedAxisLabelExistenceProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const 419 throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 420 { 421 Any aRet; 422 Reference< chart2::XDiagram > xDiagram( m_spChart2ModelContact->getChart2Diagram() ); 423 Reference< beans::XPropertySet > xProp( AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ), uno::UNO_QUERY ); 424 if( xProp.is() ) 425 aRet = xProp->getPropertyValue( C2U( "DisplayLabels" )); 426 else 427 aRet <<= sal_False; 428 return aRet; 429 } 430 431 Any WrappedAxisLabelExistenceProperty::getPropertyDefault( const Reference< beans::XPropertyState >& /*xInnerPropertyState*/ ) const 432 throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) 433 { 434 Any aRet; 435 aRet <<= sal_Bool( sal_True ); 436 return aRet; 437 } 438 439 } //namespace wrapper 440 } //namespace chart 441 //............................................................................. 442