1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_chart2.hxx" 30 31 #include "ChartTypeDialogController.hxx" 32 #include "ResId.hxx" 33 #include "HelpIds.hrc" 34 #include "Strings.hrc" 35 #include "Bitmaps.hrc" 36 #include "Bitmaps_HC.hrc" 37 #include "macros.hxx" 38 #include "ChartModelHelper.hxx" 39 #include "DiagramHelper.hxx" 40 #include "ControllerLockGuard.hxx" 41 #include "AxisHelper.hxx" 42 43 #include <com/sun/star/chart2/DataPointGeometry3D.hpp> 44 #include <com/sun/star/chart2/PieChartOffsetMode.hpp> 45 #include <com/sun/star/chart2/XDataSeriesContainer.hpp> 46 47 #ifndef _SVT_CONTROLDIMS_HRC_ 48 #include <svtools/controldims.hrc> 49 #endif 50 // header for class Image 51 #include <vcl/image.hxx> 52 // header for class Bitmap 53 #include <vcl/bitmap.hxx> 54 #include <vcl/svapp.hxx> 55 56 #include <com/sun/star/lang/XMultiServiceFactory.hpp> 57 58 //............................................................................. 59 namespace chart 60 { 61 //............................................................................. 62 using namespace ::com::sun::star; 63 using namespace ::com::sun::star::chart2; 64 65 // macro for selecting a normal or high contrast bitmap the stack variable 66 // bIsHighContrast must exist and reflect the correct state 67 #define SELECT_BITMAP(name) Bitmap( SchResId( bIsHighContrast ? name ## _HC : name )) 68 #define SELECT_IMAGE(name) Image( SchResId( bIsHighContrast ? name ## _HC : name )) 69 70 /* 71 ( C2U( "com.sun.star.chart2.template.Surface" ), CHSTYLE_3D_SURFACE) 72 ( C2U( "com.sun.star.chart2.template.Addin" ), CHSTYLE_ADDIN) 73 */ 74 75 ChartTypeParameter::ChartTypeParameter() 76 : nSubTypeIndex( 1 ) 77 , bXAxisWithValues( false ) 78 , b3DLook( false ) 79 , bSymbols( true ) 80 , bLines( true ) 81 , eStackMode( GlobalStackMode_NONE ) 82 , eCurveStyle( CurveStyle_LINES ) 83 , nCurveResolution(20) 84 , nSplineOrder(3) 85 , nGeometry3D(DataPointGeometry3D::CUBOID) 86 , eThreeDLookScheme(ThreeDLookScheme_Realistic) 87 , bSortByXValues(sal_False) 88 { 89 } 90 91 ChartTypeParameter::ChartTypeParameter( sal_Int32 SubTypeIndex, bool HasXAxisWithValues 92 , bool Is3DLook, GlobalStackMode nStackMode 93 , bool HasSymbols, bool HasLines 94 , CurveStyle nCurveStyle ) 95 : nSubTypeIndex( SubTypeIndex ) 96 , bXAxisWithValues( HasXAxisWithValues ) 97 , b3DLook( Is3DLook ) 98 , bSymbols( HasSymbols ) 99 , bLines( HasLines ) 100 , eStackMode( nStackMode ) 101 , eCurveStyle( nCurveStyle ) 102 , nCurveResolution(20) 103 , nSplineOrder(3) 104 , nGeometry3D(DataPointGeometry3D::CUBOID) 105 , eThreeDLookScheme(ThreeDLookScheme_Realistic) 106 , bSortByXValues(sal_False) 107 { 108 } 109 ChartTypeParameter::~ChartTypeParameter() 110 { 111 } 112 113 bool ChartTypeParameter::mapsToSameService( const ChartTypeParameter& rParameter ) const 114 { 115 return this->mapsToSimilarService( rParameter, 0 ); 116 } 117 bool ChartTypeParameter::mapsToSimilarService( const ChartTypeParameter& rParameter, sal_Int32 nTheHigherTheLess ) const 118 { 119 sal_Int32 nMax=7; 120 if(nTheHigherTheLess>nMax) 121 return true; 122 if( this->bXAxisWithValues!=rParameter.bXAxisWithValues ) 123 return nTheHigherTheLess>nMax-1; 124 if( this->b3DLook!=rParameter.b3DLook ) 125 return nTheHigherTheLess>nMax-2; 126 if( this->eStackMode!=rParameter.eStackMode ) 127 return nTheHigherTheLess>nMax-3; 128 if( this->nSubTypeIndex!=rParameter.nSubTypeIndex ) 129 return nTheHigherTheLess>nMax-4; 130 if( this->bSymbols!=rParameter.bSymbols ) 131 return nTheHigherTheLess>nMax-5; 132 if( this->bLines!=rParameter.bLines ) 133 return nTheHigherTheLess>nMax-6; 134 return true; 135 } 136 137 //----------------------------------------------------------------------------- 138 //----------------------------------------------------------------------------- 139 //----------------------------------------------------------------------------- 140 141 ChartTypeDialogController::ChartTypeDialogController() 142 : bSupportsXAxisWithValues(false) 143 , bSupports3D(true) 144 { 145 } 146 147 ChartTypeDialogController::~ChartTypeDialogController() 148 { 149 } 150 Image ChartTypeDialogController::getImage( bool /*bIsHighContrast*/ ) 151 { 152 return Image(); 153 } 154 bool ChartTypeDialogController::isSubType( const rtl::OUString& rServiceName ) 155 { 156 const tTemplateServiceChartTypeParameterMap& rTemplateMap = this->getTemplateMap(); 157 tTemplateServiceChartTypeParameterMap::const_iterator aIt( rTemplateMap.find( rServiceName )); 158 if( aIt != rTemplateMap.end()) 159 return true; 160 return false; 161 } 162 ChartTypeParameter ChartTypeDialogController::getChartTypeParameterForService( 163 const rtl::OUString& rServiceName 164 , const uno::Reference< beans::XPropertySet >& xTemplateProps ) 165 { 166 ChartTypeParameter aRet; 167 const tTemplateServiceChartTypeParameterMap& rTemplateMap = this->getTemplateMap(); 168 tTemplateServiceChartTypeParameterMap::const_iterator aIt( rTemplateMap.find( rServiceName )); 169 if( aIt != rTemplateMap.end()) 170 aRet = (*aIt).second; 171 if( xTemplateProps.is() ) 172 { 173 try 174 { 175 xTemplateProps->getPropertyValue( C2U( "CurveStyle" )) >>= aRet.eCurveStyle; 176 xTemplateProps->getPropertyValue( C2U( "CurveResolution" )) >>= aRet.nCurveResolution; 177 xTemplateProps->getPropertyValue( C2U( "SplineOrder" )) >>= aRet.nSplineOrder; 178 } 179 catch( uno::Exception & ex ) 180 { 181 //not all templates need to support CurveStyle, CurveResolution or SplineOrder 182 ex.Context.is();//to have debug information without compilation warnings 183 } 184 185 try 186 { 187 xTemplateProps->getPropertyValue( C2U( "Geometry3D" )) >>= aRet.nGeometry3D; 188 } 189 catch( uno::Exception& ex ) 190 { 191 //not all templates need to support CGeometry3D 192 ex.Context.is();//to have debug information without compilation warnings 193 } 194 } 195 return aRet; 196 } 197 void ChartTypeDialogController::adjustSubTypeAndEnableControls( ChartTypeParameter& /*rParameter*/ ) 198 { 199 } 200 void ChartTypeDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 201 { 202 switch( rParameter.nSubTypeIndex ) 203 { 204 case 2: 205 rParameter.eStackMode=GlobalStackMode_STACK_Y; 206 break; 207 case 3: 208 rParameter.eStackMode=GlobalStackMode_STACK_Y_PERCENT; 209 break; 210 case 4: 211 rParameter.eStackMode=GlobalStackMode_STACK_Z; 212 break; 213 default: 214 rParameter.eStackMode=GlobalStackMode_NONE; 215 break; 216 } 217 } 218 void ChartTypeDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter ) 219 { 220 bool bFoundSomeMatch=false; 221 222 rParameter.bXAxisWithValues = bSupportsXAxisWithValues; 223 if( rParameter.b3DLook && !bSupports3D ) 224 rParameter.b3DLook = false; 225 if(!rParameter.b3DLook && rParameter.eStackMode==GlobalStackMode_STACK_Z) 226 rParameter.eStackMode = GlobalStackMode_NONE; 227 228 const tTemplateServiceChartTypeParameterMap& rMap = getTemplateMap(); 229 tTemplateServiceChartTypeParameterMap::const_iterator aIter = rMap.begin(); 230 const tTemplateServiceChartTypeParameterMap::const_iterator aEnd = rMap.end(); 231 for( sal_Int32 nMatchPrecision=0; nMatchPrecision<7 && !bFoundSomeMatch; nMatchPrecision++ ) 232 { 233 for( aIter = rMap.begin(); aIter != aEnd; aIter++ ) 234 { 235 if( rParameter.mapsToSimilarService( (*aIter).second, nMatchPrecision ) ) 236 { 237 //remind some values 238 ThreeDLookScheme aScheme = rParameter.eThreeDLookScheme; 239 sal_Int32 nCurveResolution = rParameter.nCurveResolution; 240 sal_Int32 nSplineOrder = rParameter.nSplineOrder; 241 CurveStyle eCurveStyle = rParameter.eCurveStyle; 242 sal_Int32 nGeometry3D = rParameter.nGeometry3D; 243 sal_Bool bSortByXValues = rParameter.bSortByXValues; 244 245 rParameter = (*aIter).second; 246 247 //some values should not be changed with charttype 248 rParameter.eThreeDLookScheme = aScheme; 249 rParameter.nCurveResolution = nCurveResolution; 250 rParameter.nSplineOrder =nSplineOrder; 251 rParameter.eCurveStyle = eCurveStyle; 252 rParameter.nGeometry3D = nGeometry3D; 253 rParameter.bSortByXValues = bSortByXValues; 254 255 bFoundSomeMatch = true; 256 break; 257 } 258 } 259 } 260 if(!bFoundSomeMatch) 261 { 262 if(rMap.begin()!=rMap.end()) 263 rParameter = (*rMap.begin()).second; 264 else 265 rParameter = ChartTypeParameter(); 266 } 267 } 268 rtl::OUString ChartTypeDialogController::getServiceNameForParameter( const ChartTypeParameter& rParameter ) const 269 { 270 ChartTypeParameter aParameter(rParameter); 271 if( aParameter.bXAxisWithValues ) 272 aParameter.eStackMode = GlobalStackMode_NONE; 273 if(!aParameter.b3DLook && aParameter.eStackMode==GlobalStackMode_STACK_Z) 274 aParameter.eStackMode = GlobalStackMode_NONE; 275 const tTemplateServiceChartTypeParameterMap& rMap = getTemplateMap(); 276 tTemplateServiceChartTypeParameterMap::const_iterator aIter = rMap.begin(); 277 const tTemplateServiceChartTypeParameterMap::const_iterator aEnd = rMap.end(); 278 for( ; aIter != aEnd; aIter++ ) 279 { 280 if( aParameter.mapsToSameService( (*aIter).second ) ) 281 return (*aIter).first; 282 } 283 284 OSL_ENSURE( false, "ChartType not implemented yet - use fallback to similar type" ); 285 for( sal_Int32 nMatchPrecision=1; nMatchPrecision<8; nMatchPrecision++ ) 286 { 287 for( aIter = rMap.begin(); aIter != aEnd; aIter++ ) 288 { 289 if( aParameter.mapsToSimilarService( (*aIter).second, nMatchPrecision ) ) 290 return (*aIter).first; 291 } 292 } 293 return ::rtl::OUString(); 294 } 295 uno::Reference< XChartTypeTemplate > ChartTypeDialogController::getCurrentTemplate( 296 const ChartTypeParameter& rParameter 297 , const uno::Reference< lang::XMultiServiceFactory >& xTemplateManager ) const 298 { 299 uno::Reference< XChartTypeTemplate > xTemplate(0); 300 301 rtl::OUString aServiceName( this->getServiceNameForParameter( rParameter ) ); 302 if(aServiceName.getLength()) 303 { 304 xTemplate.set( xTemplateManager->createInstance( aServiceName ), uno::UNO_QUERY ); 305 if(xTemplate.is()) 306 { 307 uno::Reference< beans::XPropertySet > xTemplateProps( xTemplate, uno::UNO_QUERY ); 308 if(xTemplateProps.is()) 309 { 310 try 311 { 312 xTemplateProps->setPropertyValue( C2U( "CurveStyle" ), uno::makeAny(rParameter.eCurveStyle) ); 313 xTemplateProps->setPropertyValue( C2U( "CurveResolution" ), uno::makeAny(rParameter.nCurveResolution) ); 314 xTemplateProps->setPropertyValue( C2U( "SplineOrder" ), uno::makeAny(rParameter.nSplineOrder) ); 315 } 316 catch( uno::Exception & ex ) 317 { 318 //not all templates need to support CurveStyle, CurveResolution or SplineOrder 319 ex.Context.is();//to have debug information without compilation warnings 320 } 321 try 322 { 323 xTemplateProps->setPropertyValue( C2U( "Geometry3D" ), uno::makeAny(rParameter.nGeometry3D) ); 324 } 325 catch( uno::Exception & ex ) 326 { 327 //not all templates need to support Geometry3D 328 ex.Context.is();//to have debug information without compilation warnings 329 } 330 try 331 { 332 this->setTemplateProperties( xTemplateProps ); 333 } 334 catch( uno::Exception & ex ) 335 { 336 ASSERT_EXCEPTION( ex ); 337 } 338 } 339 } 340 } 341 return xTemplate; 342 } 343 344 bool ChartTypeDialogController::commitToModel( const ChartTypeParameter& rParameter 345 , const uno::Reference< XChartDocument >& xChartModel ) 346 { 347 uno::Reference< lang::XMultiServiceFactory > xTemplateManager( xChartModel->getChartTypeManager(), uno::UNO_QUERY ); 348 uno::Reference< XChartTypeTemplate > xTemplate( this->getCurrentTemplate( rParameter, xTemplateManager ) ); 349 if(xTemplate.is()) 350 { 351 uno::Reference< frame::XModel > xModel( xChartModel, uno::UNO_QUERY); 352 353 // /-- locked controllers 354 ControllerLockGuard aCtrlLockGuard( xModel ); 355 uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( xModel ); 356 DiagramHelper::tTemplateWithServiceName aTemplateWithService( 357 DiagramHelper::getTemplateForDiagram( xDiagram, xTemplateManager )); 358 if( aTemplateWithService.first.is()) 359 aTemplateWithService.first->resetStyles( xDiagram ); 360 xTemplate->changeDiagram( xDiagram ); 361 if( Application::GetSettings().GetLayoutRTL() ) 362 AxisHelper::setRTLAxisLayout( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ) ); 363 if( rParameter.b3DLook ) 364 ThreeDHelper::setScheme( xDiagram, rParameter.eThreeDLookScheme ); 365 366 //SortByXValues 367 { 368 uno::Reference< beans::XPropertySet > xDiaProp( xDiagram, uno::UNO_QUERY ); 369 if( xDiaProp.is() ) 370 xDiaProp->setPropertyValue( C2U( "SortByXValues" ), uno::makeAny( rParameter.bSortByXValues ) ); 371 } 372 // \-- locked controllers 373 } 374 return false; 375 } 376 void ChartTypeDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool /*bIsHighContrast*/, const ChartTypeParameter& /*rParameter*/ ) 377 { 378 rSubTypeList.Clear(); 379 } 380 bool ChartTypeDialogController::shouldShow_XAxisTypeControl() const 381 { 382 return false; 383 } 384 bool ChartTypeDialogController::shouldShow_3DLookControl() const 385 { 386 return false; 387 } 388 bool ChartTypeDialogController::shouldShow_StackingControl() const 389 { 390 return false; 391 } 392 bool ChartTypeDialogController::shouldShow_DeepStackingControl() const 393 { 394 return false; 395 } 396 bool ChartTypeDialogController::shouldShow_SplineControl() const 397 { 398 return false; 399 } 400 bool ChartTypeDialogController::shouldShow_GeometryControl() const 401 { 402 return false; 403 } 404 bool ChartTypeDialogController::shouldShow_SortByXValuesResourceGroup() const 405 { 406 return false; 407 } 408 409 void ChartTypeDialogController::showExtraControls( Window* /*pParent*/, const Point& /*rPosition*/, const Size& /*rSize*/ ) 410 { 411 } 412 void ChartTypeDialogController::hideExtraControls() const 413 { 414 } 415 void ChartTypeDialogController::fillExtraControls( const ChartTypeParameter& /*rParameter*/ 416 , const uno::Reference< XChartDocument >& /*xChartModel*/ 417 , const uno::Reference< beans::XPropertySet >& /*xTemplateProps*/ ) const 418 { 419 } 420 void ChartTypeDialogController::setTemplateProperties( const uno::Reference< beans::XPropertySet >& /*xTemplateProps*/ ) const throw (uno::RuntimeException) 421 { 422 } 423 //-------------------------------------------------------------------------- 424 425 ColumnOrBarChartDialogController_Base::ColumnOrBarChartDialogController_Base() 426 : ChartTypeDialogController() 427 { 428 } 429 ColumnOrBarChartDialogController_Base::~ColumnOrBarChartDialogController_Base() 430 { 431 } 432 bool ColumnOrBarChartDialogController_Base::shouldShow_3DLookControl() const 433 { 434 return true; 435 } 436 bool ColumnOrBarChartDialogController_Base::shouldShow_GeometryControl() const 437 { 438 return true; 439 } 440 void ColumnOrBarChartDialogController_Base::adjustSubTypeAndEnableControls( ChartTypeParameter& rParameter ) 441 { 442 if(rParameter.nSubTypeIndex>3 && !rParameter.b3DLook) 443 { 444 rParameter.nSubTypeIndex=1; 445 } 446 } 447 //-------------------------------------------------------------------------- 448 ColumnChartDialogController::ColumnChartDialogController() 449 { 450 } 451 ColumnChartDialogController::~ColumnChartDialogController() 452 { 453 } 454 String ColumnChartDialogController::getName() 455 { 456 return String( SchResId( STR_TYPE_COLUMN )); 457 } 458 Image ColumnChartDialogController::getImage( bool bIsHighContrast ) 459 { 460 return SELECT_IMAGE( IMG_TYPE_COLUMN ); 461 } 462 const tTemplateServiceChartTypeParameterMap& ColumnChartDialogController::getTemplateMap() const 463 { 464 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 465 tTemplateServiceChartTypeParameterMap 466 ( C2U( "com.sun.star.chart2.template.Column" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE) ) 467 ( C2U( "com.sun.star.chart2.template.StackedColumn" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) 468 ( C2U( "com.sun.star.chart2.template.PercentStackedColumn" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) ) 469 ( C2U( "com.sun.star.chart2.template.ThreeDColumnFlat" ), ChartTypeParameter(1,false,true,GlobalStackMode_NONE) ) 470 ( C2U( "com.sun.star.chart2.template.StackedThreeDColumnFlat" ), ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) ) 471 ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDColumnFlat" ), ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) ) 472 ( C2U( "com.sun.star.chart2.template.ThreeDColumnDeep" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z) ) 473 ; 474 return m_aTemplateMap; 475 } 476 void ColumnChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) 477 { 478 rSubTypeList.Clear(); 479 480 if( rParameter.b3DLook ) 481 { 482 switch(rParameter.nGeometry3D) 483 { 484 case DataPointGeometry3D::CYLINDER: 485 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_SAEULE_3D_1 ) ); 486 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_SAEULE_3D_2 ) ); 487 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_SAEULE_3D_3 ) ); 488 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_SAEULE_3D_4 ) ); 489 break; 490 case DataPointGeometry3D::CONE: 491 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_KEGEL_3D_1 ) ); 492 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_KEGEL_3D_2 ) ); 493 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_KEGEL_3D_3 ) ); 494 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_KEGEL_3D_4 ) ); 495 break; 496 case DataPointGeometry3D::PYRAMID: 497 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_PYRAMID_3D_1 ) ); 498 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_PYRAMID_3D_2 ) ); 499 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_PYRAMID_3D_3 ) ); 500 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_PYRAMID_3D_4 ) ); 501 break; 502 default: //DataPointGeometry3D::CUBOID: 503 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_COLUMNS_3D_1 ) ); 504 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_COLUMNS_3D_2 ) ); 505 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_COLUMNS_3D_3 ) ); 506 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_COLUMNS_3D ) ); 507 break; 508 } 509 } 510 else 511 { 512 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_COLUMNS_2D_1 ) ); 513 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_COLUMNS_2D_2 ) ); 514 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_COLUMNS_2D_3 ) ); 515 } 516 517 rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) ); 518 rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) ); 519 rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) ); 520 rSubTypeList.SetItemText( 4, String( SchResId( STR_DEEP )) ); 521 } 522 523 //-------------------------------------------------------------------------- 524 525 BarChartDialogController::BarChartDialogController() 526 { 527 } 528 BarChartDialogController::~BarChartDialogController() 529 { 530 } 531 String BarChartDialogController::getName() 532 { 533 return String( SchResId( STR_TYPE_BAR )); 534 } 535 Image BarChartDialogController::getImage( bool bIsHighContrast ) 536 { 537 return SELECT_IMAGE( IMG_TYPE_BAR ); 538 } 539 const tTemplateServiceChartTypeParameterMap& BarChartDialogController::getTemplateMap() const 540 { 541 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 542 tTemplateServiceChartTypeParameterMap 543 ( C2U( "com.sun.star.chart2.template.Bar" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE) ) 544 ( C2U( "com.sun.star.chart2.template.StackedBar" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) 545 ( C2U( "com.sun.star.chart2.template.PercentStackedBar" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) ) 546 ( C2U( "com.sun.star.chart2.template.ThreeDBarFlat" ), ChartTypeParameter(1,false,true,GlobalStackMode_NONE) ) 547 ( C2U( "com.sun.star.chart2.template.StackedThreeDBarFlat" ), ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) ) 548 ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDBarFlat" ), ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) ) 549 ( C2U( "com.sun.star.chart2.template.ThreeDBarDeep" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z) ) 550 ; 551 return m_aTemplateMap; 552 } 553 void BarChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) 554 { 555 rSubTypeList.Clear(); 556 557 if( rParameter.b3DLook ) 558 { 559 switch(rParameter.nGeometry3D) 560 { 561 case DataPointGeometry3D::CYLINDER: 562 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_ROEHRE_3D_1 ) ); 563 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_ROEHRE_3D_2 ) ); 564 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_ROEHRE_3D_3 ) ); 565 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_ROEHRE_3D_4 ) ); 566 break; 567 case DataPointGeometry3D::CONE: 568 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_KEGELQ_3D_1 ) ); 569 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_KEGELQ_3D_2 ) ); 570 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_KEGELQ_3D_3 ) ); 571 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_KEGELQ_3D_4 ) ); 572 break; 573 case DataPointGeometry3D::PYRAMID: 574 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_PYRAMIDQ_3D_1 ) ); 575 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_PYRAMIDQ_3D_2 ) ); 576 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_PYRAMIDQ_3D_3 ) ); 577 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_PYRAMIDQ_3D_4 ) ); 578 break; 579 default: //DataPointGeometry3D::CUBOID: 580 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_BARS_3D_1 ) ); 581 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_BARS_3D_2 ) ); 582 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_BARS_3D_3 ) ); 583 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_BARS_3D ) ); 584 break; 585 } 586 } 587 else 588 { 589 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_BARS_2D_1 ) ); 590 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_BARS_2D_2 ) ); 591 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_BARS_2D_3 ) ); 592 } 593 rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) ); 594 rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) ); 595 rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) ); 596 rSubTypeList.SetItemText( 4, String( SchResId( STR_DEEP )) ); 597 } 598 599 //-------------------------------------------------------------------------- 600 601 PieChartDialogController::PieChartDialogController() 602 { 603 } 604 PieChartDialogController::~PieChartDialogController() 605 { 606 } 607 String PieChartDialogController::getName() 608 { 609 return String( SchResId( STR_TYPE_PIE )); 610 } 611 Image PieChartDialogController::getImage( bool bIsHighContrast ) 612 { 613 return SELECT_IMAGE( IMG_TYPE_PIE ); 614 } 615 const tTemplateServiceChartTypeParameterMap& PieChartDialogController::getTemplateMap() const 616 { 617 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 618 tTemplateServiceChartTypeParameterMap 619 ( C2U( "com.sun.star.chart2.template.Pie" ), ChartTypeParameter(1,false,false) ) 620 ( C2U( "com.sun.star.chart2.template.PieAllExploded" ), ChartTypeParameter(2,false,false) ) 621 ( C2U( "com.sun.star.chart2.template.Donut" ), ChartTypeParameter(3,false,false) ) 622 ( C2U( "com.sun.star.chart2.template.DonutAllExploded" ), ChartTypeParameter(4,false,false) ) 623 ( C2U( "com.sun.star.chart2.template.ThreeDPie" ), ChartTypeParameter(1,false,true) ) 624 ( C2U( "com.sun.star.chart2.template.ThreeDPieAllExploded" ), ChartTypeParameter(2,false,true) ) 625 ( C2U( "com.sun.star.chart2.template.ThreeDDonut" ), ChartTypeParameter(3,false,true) ) 626 ( C2U( "com.sun.star.chart2.template.ThreeDDonutAllExploded" ), ChartTypeParameter(4,false,true) ) 627 ; 628 return m_aTemplateMap; 629 } 630 void PieChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) 631 { 632 rSubTypeList.Clear(); 633 634 if( rParameter.b3DLook ) 635 { 636 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_CIRCLES_3D ) ); 637 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_CIRCLES_3D_EXPLODED ) ); 638 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_DONUT_3D ) ); 639 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_DONUT_3D_EXPLODED ) ); 640 } 641 else 642 { 643 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_CIRCLES_2D ) ); 644 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_CIRCLES_2D_EXPLODED ) ); 645 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_DONUT_2D ) ); 646 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_DONUT_2D_EXPLODED ) ); 647 } 648 rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) ); 649 rSubTypeList.SetItemText( 2, String( SchResId( STR_PIE_EXPLODED )) ); 650 rSubTypeList.SetItemText( 3, String( SchResId( STR_DONUT )) ); 651 rSubTypeList.SetItemText( 4, String( SchResId( STR_DONUT_EXPLODED )) ); 652 } 653 bool PieChartDialogController::shouldShow_3DLookControl() const 654 { 655 return true; 656 } 657 void PieChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 658 { 659 if(rParameter.eStackMode==GlobalStackMode_STACK_Z) 660 rParameter.eStackMode = GlobalStackMode_NONE; 661 } 662 //-------------------------------------------------------------------------- 663 LineChartDialogController::LineChartDialogController() 664 { 665 } 666 LineChartDialogController::~LineChartDialogController() 667 { 668 } 669 String LineChartDialogController::getName() 670 { 671 return String( SchResId( STR_TYPE_LINE )); 672 } 673 Image LineChartDialogController::getImage( bool bIsHighContrast ) 674 { 675 return SELECT_IMAGE( IMG_TYPE_LINE ); 676 } 677 const tTemplateServiceChartTypeParameterMap& LineChartDialogController::getTemplateMap() const 678 { 679 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 680 tTemplateServiceChartTypeParameterMap 681 //------------------------------------------------------- 682 ( C2U( "com.sun.star.chart2.template.Symbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE,true,false) ) 683 ( C2U( "com.sun.star.chart2.template.StackedSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y,true,false) ) 684 ( C2U( "com.sun.star.chart2.template.PercentStackedSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y_PERCENT,true,false) ) 685 ( C2U( "com.sun.star.chart2.template.LineSymbol" ), ChartTypeParameter(2,false,false,GlobalStackMode_NONE,true,true) ) 686 ( C2U( "com.sun.star.chart2.template.StackedLineSymbol" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y,true,true) ) 687 ( C2U( "com.sun.star.chart2.template.PercentStackedLineSymbol" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y_PERCENT,true,true) ) 688 ( C2U( "com.sun.star.chart2.template.Line" ), ChartTypeParameter(3,false,false,GlobalStackMode_NONE,false,true) ) 689 ( C2U( "com.sun.star.chart2.template.StackedLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y,false,true) ) 690 ( C2U( "com.sun.star.chart2.template.PercentStackedLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT,false,true) ) 691 //------------------------------------------------------- 692 //( C2U( "com.sun.star.chart2.template.ThreeDLine" ), ChartTypeParameter(4,false,true,GlobalStackMode_NONE,false,true) ) 693 ( C2U( "com.sun.star.chart2.template.StackedThreeDLine" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Y,false,true) ) 694 ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDLine" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Y_PERCENT,false,true) ) 695 ( C2U( "com.sun.star.chart2.template.ThreeDLineDeep" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z,false,true) ) 696 //------------------------------------------------------- 697 ; 698 return m_aTemplateMap; 699 } 700 void LineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) 701 { 702 rSubTypeList.Clear(); 703 704 if( CurveStyle_LINES==rParameter.eCurveStyle ) 705 { 706 //direct lines 707 if( GlobalStackMode_NONE == rParameter.eStackMode || GlobalStackMode_STACK_Z == rParameter.eStackMode ) 708 { 709 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XCATEGORY ) ); 710 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XCATEGORY ) ); 711 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XCATEGORY ) ); 712 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XCATEGORY ) ); 713 } 714 else 715 { 716 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_STACKED ) ); 717 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_STACKED ) ); 718 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_STACKED ) ); 719 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_STACKED ) ); 720 } 721 } 722 else //CurveStyle_LINES 723 { 724 if( GlobalStackMode_NONE == rParameter.eStackMode || GlobalStackMode_STACK_Z == rParameter.eStackMode ) 725 { 726 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XCATEGORY ) ); 727 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XCATEGORY_SMOOTH ) ); 728 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XCATEGORY_SMOOTH ) ); 729 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XCATEGORY_SMOOTH ) ); 730 } 731 else 732 { 733 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_STACKED ) ); 734 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_STACKED_SMOOTH ) ); 735 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_STACKED_SMOOTH ) ); 736 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_STACKED_SMOOTH ) ); 737 } 738 } 739 740 rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) ); 741 rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) ); 742 rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) ); 743 rSubTypeList.SetItemText( 4, String( SchResId( STR_LINES_3D )) ); 744 } 745 bool LineChartDialogController::shouldShow_StackingControl() const 746 { 747 return true; 748 } 749 bool LineChartDialogController::shouldShow_DeepStackingControl() const 750 { 751 return false; 752 } 753 bool LineChartDialogController::shouldShow_SplineControl() const 754 { 755 return true; 756 } 757 void LineChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 758 { 759 rParameter.b3DLook = false; 760 761 switch( rParameter.nSubTypeIndex ) 762 { 763 case 2: 764 rParameter.bSymbols = true; 765 rParameter.bLines = true; 766 break; 767 case 3: 768 rParameter.bSymbols = false; 769 rParameter.bLines = true; 770 break; 771 case 4: 772 rParameter.bSymbols = false; 773 rParameter.bLines = true; 774 rParameter.b3DLook = true; 775 if( rParameter.eStackMode == GlobalStackMode_NONE ) 776 rParameter.eStackMode = GlobalStackMode_STACK_Z; 777 break; 778 default: 779 rParameter.bSymbols = true; 780 rParameter.bLines = false; 781 break; 782 } 783 784 if(!rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_STACK_Z ) 785 rParameter.eStackMode = GlobalStackMode_NONE; 786 } 787 void LineChartDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter ) 788 { 789 if( rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_NONE ) 790 rParameter.eStackMode = GlobalStackMode_STACK_Z; 791 792 ChartTypeDialogController::adjustParameterToMainType( rParameter ); 793 } 794 //-------------------------------------------------------------------------- 795 XYChartDialogController::XYChartDialogController() 796 { 797 bSupportsXAxisWithValues = true; 798 } 799 XYChartDialogController::~XYChartDialogController() 800 { 801 } 802 String XYChartDialogController::getName() 803 { 804 return String( SchResId( STR_TYPE_XY )); 805 } 806 Image XYChartDialogController::getImage( bool bIsHighContrast ) 807 { 808 return SELECT_IMAGE( IMG_TYPE_XY ); 809 } 810 const tTemplateServiceChartTypeParameterMap& XYChartDialogController::getTemplateMap() const 811 { 812 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 813 tTemplateServiceChartTypeParameterMap 814 //------------------------------------------------------- 815 ( C2U( "com.sun.star.chart2.template.ScatterSymbol" ), ChartTypeParameter(1,true,false,GlobalStackMode_NONE,true,false) ) 816 ( C2U( "com.sun.star.chart2.template.ScatterLineSymbol" ), ChartTypeParameter(2,true,false,GlobalStackMode_NONE,true,true) ) 817 ( C2U( "com.sun.star.chart2.template.ScatterLine" ), ChartTypeParameter(3,true,false,GlobalStackMode_NONE,false,true) ) 818 ( C2U( "com.sun.star.chart2.template.ThreeDScatter" ), ChartTypeParameter(4,true,true,GlobalStackMode_NONE,false,true) ) 819 ; 820 return m_aTemplateMap; 821 } 822 void XYChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) 823 { 824 rSubTypeList.Clear(); 825 826 if( CurveStyle_LINES==rParameter.eCurveStyle ) 827 { 828 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XVALUES ) ); 829 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XVALUES ) ); 830 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XVALUES ) ); 831 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XVALUES ) ); 832 } 833 else //CurveStyle_LINES 834 { 835 //smooth lines 836 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XVALUES ) ); 837 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XVALUES_SMOOTH ) ); 838 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XVALUES_SMOOTH ) ); 839 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XVALUES_SMOOTH ) ); 840 } 841 842 rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) ); 843 rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) ); 844 rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) ); 845 rSubTypeList.SetItemText( 4, String( SchResId( STR_LINES_3D )) ); 846 } 847 bool XYChartDialogController::shouldShow_SplineControl() const 848 { 849 return true; 850 } 851 bool XYChartDialogController::shouldShow_SortByXValuesResourceGroup() const 852 { 853 return true; 854 } 855 void XYChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 856 { 857 rParameter.eStackMode=GlobalStackMode_NONE; 858 rParameter.b3DLook = false; 859 860 switch( rParameter.nSubTypeIndex ) 861 { 862 case 2: 863 rParameter.bSymbols = true; 864 rParameter.bLines = true; 865 break; 866 case 3: 867 rParameter.bSymbols = false; 868 rParameter.bLines = true; 869 break; 870 case 4: 871 rParameter.bSymbols = false; 872 rParameter.bLines = true; 873 rParameter.b3DLook = true; 874 rParameter.eStackMode=GlobalStackMode_STACK_Z; 875 break; 876 default: 877 rParameter.bSymbols = true; 878 rParameter.bLines = false; 879 break; 880 } 881 } 882 //-------------------------------------------------------------------------- 883 AreaChartDialogController::AreaChartDialogController() 884 { 885 } 886 AreaChartDialogController::~AreaChartDialogController() 887 { 888 } 889 String AreaChartDialogController::getName() 890 { 891 return String( SchResId( STR_TYPE_AREA )); 892 } 893 Image AreaChartDialogController::getImage( bool bIsHighContrast ) 894 { 895 return SELECT_IMAGE( IMG_TYPE_AREA ); 896 } 897 bool AreaChartDialogController::shouldShow_3DLookControl() const 898 { 899 return true; 900 } 901 const tTemplateServiceChartTypeParameterMap& AreaChartDialogController::getTemplateMap() const 902 { 903 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 904 tTemplateServiceChartTypeParameterMap 905 ( C2U( "com.sun.star.chart2.template.Area" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE) ) 906 ( C2U( "com.sun.star.chart2.template.ThreeDArea" ), ChartTypeParameter(1,false,true,GlobalStackMode_STACK_Z) ) 907 ( C2U( "com.sun.star.chart2.template.StackedArea" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) 908 ( C2U( "com.sun.star.chart2.template.StackedThreeDArea" ), ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) ) 909 ( C2U( "com.sun.star.chart2.template.PercentStackedArea" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) ) 910 ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDArea" ), ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) ) 911 ; 912 return m_aTemplateMap; 913 } 914 void AreaChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) 915 { 916 rSubTypeList.Clear(); 917 918 if( rParameter.b3DLook ) 919 { 920 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_AREAS_3D ) ); 921 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_AREAS_3D_1 ) ); 922 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_AREAS_3D_2 ) ); 923 } 924 else 925 { 926 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_AREAS_2D_1 ) ); 927 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_AREAS_2D ) ); 928 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_AREAS_2D_3 ) ); 929 } 930 931 rSubTypeList.SetItemText( 1, String( SchResId( rParameter.b3DLook ? STR_DEEP : STR_NORMAL )) ); 932 rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) ); 933 rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) ); 934 } 935 void AreaChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 936 { 937 rParameter.eCurveStyle = CurveStyle_LINES; 938 939 if( rParameter.nSubTypeIndex>3 ) 940 rParameter.nSubTypeIndex = 1; 941 switch( rParameter.nSubTypeIndex ) 942 { 943 case 2: 944 rParameter.eStackMode=GlobalStackMode_STACK_Y; 945 break; 946 case 3: 947 rParameter.eStackMode=GlobalStackMode_STACK_Y_PERCENT; 948 break; 949 default: 950 if( rParameter.b3DLook ) 951 rParameter.eStackMode=GlobalStackMode_STACK_Z; 952 else 953 rParameter.eStackMode=GlobalStackMode_NONE; 954 break; 955 } 956 } 957 void AreaChartDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter ) 958 { 959 if( rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_NONE ) 960 rParameter.eStackMode = GlobalStackMode_STACK_Z; 961 962 ChartTypeDialogController::adjustParameterToMainType( rParameter ); 963 } 964 //-------------------------------------------------------------------------- 965 NetChartDialogController::NetChartDialogController() 966 { 967 bSupports3D = false; 968 } 969 NetChartDialogController::~NetChartDialogController() 970 { 971 } 972 String NetChartDialogController::getName() 973 { 974 return String( SchResId( STR_TYPE_NET )); 975 } 976 Image NetChartDialogController::getImage( bool bIsHighContrast ) 977 { 978 return SELECT_IMAGE( IMG_TYPE_NET ); 979 } 980 bool NetChartDialogController::shouldShow_StackingControl() const 981 { 982 return true; 983 } 984 const tTemplateServiceChartTypeParameterMap& NetChartDialogController::getTemplateMap() const 985 { 986 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 987 tTemplateServiceChartTypeParameterMap 988 //@todo need templates with symbols only 989 ( C2U( "com.sun.star.chart2.template.NetSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE,true,false) ) 990 ( C2U( "com.sun.star.chart2.template.StackedNetSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y,true,false) ) 991 ( C2U( "com.sun.star.chart2.template.PercentStackedNetSymbol" ),ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y_PERCENT,true,false) ) 992 993 ( C2U( "com.sun.star.chart2.template.Net" ), ChartTypeParameter(2,false,false,GlobalStackMode_NONE,true,true) ) 994 ( C2U( "com.sun.star.chart2.template.StackedNet" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y,true,true) ) 995 ( C2U( "com.sun.star.chart2.template.PercentStackedNet" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y_PERCENT,true,true) ) 996 997 ( C2U( "com.sun.star.chart2.template.NetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_NONE,false,true) ) 998 ( C2U( "com.sun.star.chart2.template.StackedNetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y,false,true) ) 999 ( C2U( "com.sun.star.chart2.template.PercentStackedNetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT,false,true) ) 1000 1001 ( C2U( "com.sun.star.chart2.template.FilledNet" ), ChartTypeParameter(4,false,false,GlobalStackMode_NONE,false,false) ) 1002 ( C2U( "com.sun.star.chart2.template.StackedFilledNet" ), ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y,false,false) ) 1003 ( C2U( "com.sun.star.chart2.template.PercentStackedFilledNet" ),ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y_PERCENT,false,false) ) 1004 ; 1005 return m_aTemplateMap; 1006 } 1007 void NetChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) 1008 { 1009 rSubTypeList.Clear(); 1010 1011 if( GlobalStackMode_NONE == rParameter.eStackMode ) 1012 { 1013 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_NET_SYMB ) ); 1014 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_NET_LINESYMB ) ); 1015 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_NET ) ); 1016 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_NET_FILL ) ); 1017 } 1018 else 1019 { 1020 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_NET_SYMB_STACK ) ); 1021 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_NET_LINESYMB_STACK ) ); 1022 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_NET_STACK ) ); 1023 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_NET_FILL_STACK ) ); 1024 } 1025 1026 rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) ); 1027 rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) ); 1028 rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) ); 1029 rSubTypeList.SetItemText( 4, String( SchResId( STR_FILLED )) ); 1030 } 1031 void NetChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 1032 { 1033 rParameter.b3DLook = false; 1034 if(rParameter.eStackMode==GlobalStackMode_STACK_Z) 1035 rParameter.eStackMode = GlobalStackMode_NONE; 1036 1037 switch( rParameter.nSubTypeIndex ) 1038 { 1039 case 2: 1040 rParameter.bSymbols = true; 1041 rParameter.bLines = true; 1042 break; 1043 case 3: 1044 rParameter.bSymbols = false; 1045 rParameter.bLines = true; 1046 break; 1047 case 4: 1048 rParameter.bSymbols = false; 1049 rParameter.bLines = false; 1050 break; 1051 default: 1052 rParameter.bSymbols = true; 1053 rParameter.bLines = false; 1054 break; 1055 } 1056 } 1057 //-------------------------------------------------------------------------- 1058 StockChartDialogController::StockChartDialogController() 1059 { 1060 bSupports3D = false; 1061 } 1062 StockChartDialogController::~StockChartDialogController() 1063 { 1064 } 1065 String StockChartDialogController::getName() 1066 { 1067 return String( SchResId( STR_TYPE_STOCK )); 1068 } 1069 Image StockChartDialogController::getImage( bool bIsHighContrast ) 1070 { 1071 return SELECT_IMAGE( IMG_TYPE_STOCK ); 1072 } 1073 const tTemplateServiceChartTypeParameterMap& StockChartDialogController::getTemplateMap() const 1074 { 1075 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 1076 tTemplateServiceChartTypeParameterMap 1077 ( C2U( "com.sun.star.chart2.template.StockLowHighClose" ), ChartTypeParameter(1) ) 1078 ( C2U( "com.sun.star.chart2.template.StockOpenLowHighClose" ), ChartTypeParameter(2) ) 1079 ( C2U( "com.sun.star.chart2.template.StockVolumeLowHighClose" ), ChartTypeParameter(3) ) 1080 ( C2U( "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ),ChartTypeParameter(4) ) 1081 ; 1082 return m_aTemplateMap; 1083 } 1084 void StockChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& /*rParameter*/ ) 1085 { 1086 rSubTypeList.Clear(); 1087 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_STOCK_1 ) ); 1088 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_STOCK_2 ) ); 1089 rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_STOCK_3 ) ); 1090 rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_STOCK_4 ) ); 1091 1092 rSubTypeList.SetItemText( 1, String( SchResId( STR_STOCK_1 )) ); 1093 rSubTypeList.SetItemText( 2, String( SchResId( STR_STOCK_2 )) ); 1094 rSubTypeList.SetItemText( 3, String( SchResId( STR_STOCK_3 )) ); 1095 rSubTypeList.SetItemText( 4, String( SchResId( STR_STOCK_4 )) ); 1096 } 1097 void StockChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 1098 { 1099 rParameter.b3DLook = false; 1100 rParameter.eStackMode = GlobalStackMode_NONE; 1101 } 1102 //-------------------------------------------------------------------------- 1103 CombiColumnLineChartDialogController::CombiColumnLineChartDialogController() 1104 : m_pFT_NumberOfLines(0) 1105 , m_pMF_NumberOfLines(0) 1106 { 1107 bSupports3D = false; 1108 } 1109 CombiColumnLineChartDialogController::~CombiColumnLineChartDialogController() 1110 { 1111 if(m_pFT_NumberOfLines) 1112 delete m_pFT_NumberOfLines; 1113 if(m_pMF_NumberOfLines) 1114 delete m_pMF_NumberOfLines; 1115 } 1116 String CombiColumnLineChartDialogController::getName() 1117 { 1118 return String( SchResId( STR_TYPE_COMBI_COLUMN_LINE )); 1119 } 1120 Image CombiColumnLineChartDialogController::getImage( bool bIsHighContrast ) 1121 { 1122 return SELECT_IMAGE( IMG_TYPE_COLUMN_LINE ); 1123 } 1124 const tTemplateServiceChartTypeParameterMap& CombiColumnLineChartDialogController::getTemplateMap() const 1125 { 1126 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 1127 tTemplateServiceChartTypeParameterMap 1128 ( C2U( "com.sun.star.chart2.template.ColumnWithLine" ), ChartTypeParameter(1) ) 1129 ( C2U( "com.sun.star.chart2.template.StackedColumnWithLine" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) 1130 ; 1131 return m_aTemplateMap; 1132 } 1133 void CombiColumnLineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& /*rParameter*/ ) 1134 { 1135 rSubTypeList.Clear(); 1136 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_COLUMN_LINE ) ); 1137 rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_COLUMN_LINE_STACKED ) ); 1138 1139 rSubTypeList.SetItemText( 1, String( SchResId( STR_LINE_COLUMN )) ); 1140 rSubTypeList.SetItemText( 2, String( SchResId( STR_LINE_STACKEDCOLUMN )) ); 1141 } 1142 void CombiColumnLineChartDialogController::showExtraControls( Window* pParent, const Point& rPosition, const Size& rSize ) 1143 { 1144 if(!m_pFT_NumberOfLines) 1145 { 1146 m_pFT_NumberOfLines = new FixedText(pParent,pParent->GetStyle()); 1147 m_pFT_NumberOfLines->SetText( String( SchResId( STR_NUMBER_OF_LINES )) ); 1148 } 1149 if(!m_pMF_NumberOfLines) 1150 { 1151 m_pMF_NumberOfLines = new MetricField(pParent,pParent->GetStyle() | WB_SPIN | WB_REPEAT | WB_BORDER ); 1152 m_pMF_NumberOfLines->SetDefaultUnit( FUNIT_CUSTOM ); 1153 m_pMF_NumberOfLines->SetUnit( FUNIT_CUSTOM ); 1154 m_pMF_NumberOfLines->SetSpinSize(1); 1155 m_pMF_NumberOfLines->SetFirst( 1, FUNIT_CUSTOM ); 1156 m_pMF_NumberOfLines->SetLast( 100, FUNIT_CUSTOM ); 1157 m_pMF_NumberOfLines->SetMin( 1, FUNIT_CUSTOM ); 1158 m_pMF_NumberOfLines->SetMax( 100, FUNIT_CUSTOM ); 1159 m_pMF_NumberOfLines->SetHelpId( HID_SCH_NUM_OF_LINES ); 1160 1161 m_pMF_NumberOfLines->SetModifyHdl( LINK( this, CombiColumnLineChartDialogController, ChangeLineCountHdl ) ); 1162 } 1163 1164 Size aDistanceSize( pParent->LogicToPixel( Size(RSC_SP_CTRL_DESC_X,2), MapMode(MAP_APPFONT) ) ); 1165 Size aMFSize( pParent->LogicToPixel( Size(20,RSC_CD_TEXTBOX_HEIGHT), MapMode(MAP_APPFONT) ) ); 1166 m_pMF_NumberOfLines->SetSizePixel( aMFSize ); 1167 1168 Size aFTSize(m_pFT_NumberOfLines->CalcMinimumSize(rSize.Width()-aMFSize.Width()-aDistanceSize.Width())); 1169 m_pFT_NumberOfLines->SetSizePixel(aFTSize); 1170 1171 m_pFT_NumberOfLines->SetPosPixel( Point( rPosition.X(), rPosition.Y()+aDistanceSize.Height()) ); 1172 m_pMF_NumberOfLines->SetPosPixel( Point( rPosition.X()+aFTSize.Width()+aDistanceSize.Width(), rPosition.Y()) ); 1173 1174 m_pFT_NumberOfLines->Show(); 1175 m_pMF_NumberOfLines->Show(); 1176 m_pMF_NumberOfLines->SetAccessibleName(m_pFT_NumberOfLines->GetText()); 1177 m_pMF_NumberOfLines->SetAccessibleRelationLabeledBy(m_pFT_NumberOfLines); 1178 } 1179 void CombiColumnLineChartDialogController::hideExtraControls() const 1180 { 1181 if(m_pFT_NumberOfLines) 1182 m_pFT_NumberOfLines->Hide(); 1183 if(m_pMF_NumberOfLines) 1184 m_pMF_NumberOfLines->Hide(); 1185 } 1186 void CombiColumnLineChartDialogController::fillExtraControls( const ChartTypeParameter& /*rParameter*/ 1187 , const uno::Reference< XChartDocument >& xChartModel 1188 , const uno::Reference< beans::XPropertySet >& xTemplateProps ) const 1189 { 1190 if(!m_pMF_NumberOfLines) 1191 return; 1192 1193 uno::Reference< frame::XModel > xModel( xChartModel, uno::UNO_QUERY ); 1194 1195 uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( xModel ); 1196 if(!xDiagram.is()) 1197 return; 1198 1199 sal_Int32 nNumLines = 0; 1200 1201 if(xTemplateProps.is()) 1202 try 1203 { 1204 xTemplateProps->getPropertyValue( C2U("NumberOfLines") ) >>= nNumLines; 1205 } 1206 catch( uno::Exception & ex ) 1207 { 1208 ASSERT_EXCEPTION( ex ); 1209 } 1210 if( nNumLines < 0 ) 1211 nNumLines = 0; 1212 m_pMF_NumberOfLines->SetValue( nNumLines ); 1213 1214 sal_Int32 nMaxLines = ChartModelHelper::getDataSeries( xModel ).size() - 1; 1215 if( nMaxLines < 0 ) 1216 nMaxLines = 0; 1217 m_pMF_NumberOfLines->SetLast( nMaxLines ); 1218 m_pMF_NumberOfLines->SetMax( nMaxLines ); 1219 } 1220 void CombiColumnLineChartDialogController::setTemplateProperties( const uno::Reference< beans::XPropertySet >& xTemplateProps ) const throw (uno::RuntimeException) 1221 { 1222 if( xTemplateProps.is() ) 1223 { 1224 sal_Int32 nNumLines = static_cast< sal_Int32 >( m_pMF_NumberOfLines->GetValue()); 1225 xTemplateProps->setPropertyValue( C2U( "NumberOfLines" ), uno::makeAny(nNumLines) ); 1226 } 1227 } 1228 1229 IMPL_LINK( CombiColumnLineChartDialogController, ChangeLineCountHdl, void *, EMPTYARG ) 1230 { 1231 if( m_pChangeListener ) 1232 m_pChangeListener->stateChanged(this); 1233 return 0; 1234 } 1235 void CombiColumnLineChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 1236 { 1237 rParameter.b3DLook = false; 1238 if(rParameter.eStackMode==GlobalStackMode_STACK_Z) 1239 rParameter.eStackMode = GlobalStackMode_NONE; 1240 1241 switch( rParameter.nSubTypeIndex ) 1242 { 1243 case 2: 1244 rParameter.eStackMode=GlobalStackMode_STACK_Y; 1245 break; 1246 default: 1247 rParameter.eStackMode=GlobalStackMode_NONE; 1248 break; 1249 } 1250 } 1251 //-------------------------------------------------------------------------- 1252 BubbleChartDialogController::BubbleChartDialogController() 1253 { 1254 } 1255 BubbleChartDialogController::~BubbleChartDialogController() 1256 { 1257 } 1258 String BubbleChartDialogController::getName() 1259 { 1260 return String( SchResId( STR_TYPE_BUBBLE )); 1261 } 1262 Image BubbleChartDialogController::getImage( bool bIsHighContrast ) 1263 { 1264 return SELECT_IMAGE( IMG_TYPE_BUBBLE ); 1265 } 1266 const tTemplateServiceChartTypeParameterMap& BubbleChartDialogController::getTemplateMap() const 1267 { 1268 static tTemplateServiceChartTypeParameterMap m_aTemplateMap = 1269 tTemplateServiceChartTypeParameterMap 1270 ( C2U( "com.sun.star.chart2.template.Bubble" ), ChartTypeParameter(1,true) ) ; 1271 return m_aTemplateMap; 1272 } 1273 void BubbleChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& /*rParameter*/ ) 1274 { 1275 rSubTypeList.Clear(); 1276 rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_BUBBLE_1 ) ); 1277 1278 rSubTypeList.SetItemText( 1, String( SchResId( STR_BUBBLE_1 )) ); 1279 } 1280 void BubbleChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) 1281 { 1282 rParameter.b3DLook = false; 1283 rParameter.eStackMode = GlobalStackMode_NONE; 1284 } 1285 //............................................................................. 1286 } //namespace chart 1287 //............................................................................. 1288