/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_chart2.hxx" #include "ChartTypeDialogController.hxx" #include "ResId.hxx" #include "HelpIds.hrc" #include "Strings.hrc" #include "Bitmaps.hrc" #include "Bitmaps_HC.hrc" #include "macros.hxx" #include "ChartModelHelper.hxx" #include "DiagramHelper.hxx" #include "ControllerLockGuard.hxx" #include "AxisHelper.hxx" #include #include #include #ifndef _SVT_CONTROLDIMS_HRC_ #include #endif // header for class Image #include // header for class Bitmap #include #include #include //............................................................................. namespace chart { //............................................................................. using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; // macro for selecting a normal or high contrast bitmap the stack variable // bIsHighContrast must exist and reflect the correct state #define SELECT_BITMAP(name) Bitmap( SchResId( bIsHighContrast ? name ## _HC : name )) #define SELECT_IMAGE(name) Image( SchResId( bIsHighContrast ? name ## _HC : name )) /* ( C2U( "com.sun.star.chart2.template.Surface" ), CHSTYLE_3D_SURFACE) ( C2U( "com.sun.star.chart2.template.Addin" ), CHSTYLE_ADDIN) */ ChartTypeParameter::ChartTypeParameter() : nSubTypeIndex( 1 ) , bXAxisWithValues( false ) , b3DLook( false ) , bSymbols( true ) , bLines( true ) , eStackMode( GlobalStackMode_NONE ) , eCurveStyle( CurveStyle_LINES ) , nCurveResolution(20) , nSplineOrder(3) , nGeometry3D(DataPointGeometry3D::CUBOID) , eThreeDLookScheme(ThreeDLookScheme_Realistic) , bSortByXValues(sal_False) { } ChartTypeParameter::ChartTypeParameter( sal_Int32 SubTypeIndex, bool HasXAxisWithValues , bool Is3DLook, GlobalStackMode nStackMode , bool HasSymbols, bool HasLines , CurveStyle nCurveStyle ) : nSubTypeIndex( SubTypeIndex ) , bXAxisWithValues( HasXAxisWithValues ) , b3DLook( Is3DLook ) , bSymbols( HasSymbols ) , bLines( HasLines ) , eStackMode( nStackMode ) , eCurveStyle( nCurveStyle ) , nCurveResolution(20) , nSplineOrder(3) , nGeometry3D(DataPointGeometry3D::CUBOID) , eThreeDLookScheme(ThreeDLookScheme_Realistic) , bSortByXValues(sal_False) { } ChartTypeParameter::~ChartTypeParameter() { } bool ChartTypeParameter::mapsToSameService( const ChartTypeParameter& rParameter ) const { return this->mapsToSimilarService( rParameter, 0 ); } bool ChartTypeParameter::mapsToSimilarService( const ChartTypeParameter& rParameter, sal_Int32 nTheHigherTheLess ) const { sal_Int32 nMax=7; if(nTheHigherTheLess>nMax) return true; if( this->bXAxisWithValues!=rParameter.bXAxisWithValues ) return nTheHigherTheLess>nMax-1; if( this->b3DLook!=rParameter.b3DLook ) return nTheHigherTheLess>nMax-2; if( this->eStackMode!=rParameter.eStackMode ) return nTheHigherTheLess>nMax-3; if( this->nSubTypeIndex!=rParameter.nSubTypeIndex ) return nTheHigherTheLess>nMax-4; if( this->bSymbols!=rParameter.bSymbols ) return nTheHigherTheLess>nMax-5; if( this->bLines!=rParameter.bLines ) return nTheHigherTheLess>nMax-6; return true; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- ChartTypeDialogController::ChartTypeDialogController() : bSupportsXAxisWithValues(false) , bSupports3D(true) { } ChartTypeDialogController::~ChartTypeDialogController() { } Image ChartTypeDialogController::getImage( bool /*bIsHighContrast*/ ) { return Image(); } bool ChartTypeDialogController::isSubType( const rtl::OUString& rServiceName ) { const tTemplateServiceChartTypeParameterMap& rTemplateMap = this->getTemplateMap(); tTemplateServiceChartTypeParameterMap::const_iterator aIt( rTemplateMap.find( rServiceName )); if( aIt != rTemplateMap.end()) return true; return false; } ChartTypeParameter ChartTypeDialogController::getChartTypeParameterForService( const rtl::OUString& rServiceName , const uno::Reference< beans::XPropertySet >& xTemplateProps ) { ChartTypeParameter aRet; const tTemplateServiceChartTypeParameterMap& rTemplateMap = this->getTemplateMap(); tTemplateServiceChartTypeParameterMap::const_iterator aIt( rTemplateMap.find( rServiceName )); if( aIt != rTemplateMap.end()) aRet = (*aIt).second; if( xTemplateProps.is() ) { try { xTemplateProps->getPropertyValue( C2U( "CurveStyle" )) >>= aRet.eCurveStyle; xTemplateProps->getPropertyValue( C2U( "CurveResolution" )) >>= aRet.nCurveResolution; xTemplateProps->getPropertyValue( C2U( "SplineOrder" )) >>= aRet.nSplineOrder; } catch( uno::Exception & ex ) { //not all templates need to support CurveStyle, CurveResolution or SplineOrder ex.Context.is();//to have debug information without compilation warnings } try { xTemplateProps->getPropertyValue( C2U( "Geometry3D" )) >>= aRet.nGeometry3D; } catch( uno::Exception& ex ) { //not all templates need to support CGeometry3D ex.Context.is();//to have debug information without compilation warnings } } return aRet; } void ChartTypeDialogController::adjustSubTypeAndEnableControls( ChartTypeParameter& /*rParameter*/ ) { } void ChartTypeDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { switch( rParameter.nSubTypeIndex ) { case 2: rParameter.eStackMode=GlobalStackMode_STACK_Y; break; case 3: rParameter.eStackMode=GlobalStackMode_STACK_Y_PERCENT; break; case 4: rParameter.eStackMode=GlobalStackMode_STACK_Z; break; default: rParameter.eStackMode=GlobalStackMode_NONE; break; } } void ChartTypeDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter ) { bool bFoundSomeMatch=false; rParameter.bXAxisWithValues = bSupportsXAxisWithValues; if( rParameter.b3DLook && !bSupports3D ) rParameter.b3DLook = false; if(!rParameter.b3DLook && rParameter.eStackMode==GlobalStackMode_STACK_Z) rParameter.eStackMode = GlobalStackMode_NONE; const tTemplateServiceChartTypeParameterMap& rMap = getTemplateMap(); tTemplateServiceChartTypeParameterMap::const_iterator aIter = rMap.begin(); const tTemplateServiceChartTypeParameterMap::const_iterator aEnd = rMap.end(); for( sal_Int32 nMatchPrecision=0; nMatchPrecision<7 && !bFoundSomeMatch; nMatchPrecision++ ) { for( aIter = rMap.begin(); aIter != aEnd; aIter++ ) { if( rParameter.mapsToSimilarService( (*aIter).second, nMatchPrecision ) ) { //remind some values ThreeDLookScheme aScheme = rParameter.eThreeDLookScheme; sal_Int32 nCurveResolution = rParameter.nCurveResolution; sal_Int32 nSplineOrder = rParameter.nSplineOrder; CurveStyle eCurveStyle = rParameter.eCurveStyle; sal_Int32 nGeometry3D = rParameter.nGeometry3D; sal_Bool bSortByXValues = rParameter.bSortByXValues; rParameter = (*aIter).second; //some values should not be changed with charttype rParameter.eThreeDLookScheme = aScheme; rParameter.nCurveResolution = nCurveResolution; rParameter.nSplineOrder =nSplineOrder; rParameter.eCurveStyle = eCurveStyle; rParameter.nGeometry3D = nGeometry3D; rParameter.bSortByXValues = bSortByXValues; bFoundSomeMatch = true; break; } } } if(!bFoundSomeMatch) { if(rMap.begin()!=rMap.end()) rParameter = (*rMap.begin()).second; else rParameter = ChartTypeParameter(); } } rtl::OUString ChartTypeDialogController::getServiceNameForParameter( const ChartTypeParameter& rParameter ) const { ChartTypeParameter aParameter(rParameter); if( aParameter.bXAxisWithValues ) aParameter.eStackMode = GlobalStackMode_NONE; if(!aParameter.b3DLook && aParameter.eStackMode==GlobalStackMode_STACK_Z) aParameter.eStackMode = GlobalStackMode_NONE; const tTemplateServiceChartTypeParameterMap& rMap = getTemplateMap(); tTemplateServiceChartTypeParameterMap::const_iterator aIter = rMap.begin(); const tTemplateServiceChartTypeParameterMap::const_iterator aEnd = rMap.end(); for( ; aIter != aEnd; aIter++ ) { if( aParameter.mapsToSameService( (*aIter).second ) ) return (*aIter).first; } OSL_ENSURE( false, "ChartType not implemented yet - use fallback to similar type" ); for( sal_Int32 nMatchPrecision=1; nMatchPrecision<8; nMatchPrecision++ ) { for( aIter = rMap.begin(); aIter != aEnd; aIter++ ) { if( aParameter.mapsToSimilarService( (*aIter).second, nMatchPrecision ) ) return (*aIter).first; } } return ::rtl::OUString(); } uno::Reference< XChartTypeTemplate > ChartTypeDialogController::getCurrentTemplate( const ChartTypeParameter& rParameter , const uno::Reference< lang::XMultiServiceFactory >& xTemplateManager ) const { uno::Reference< XChartTypeTemplate > xTemplate(0); rtl::OUString aServiceName( this->getServiceNameForParameter( rParameter ) ); if( !aServiceName.isEmpty() ) { xTemplate.set( xTemplateManager->createInstance( aServiceName ), uno::UNO_QUERY ); if(xTemplate.is()) { uno::Reference< beans::XPropertySet > xTemplateProps( xTemplate, uno::UNO_QUERY ); if(xTemplateProps.is()) { try { xTemplateProps->setPropertyValue( C2U( "CurveStyle" ), uno::makeAny(rParameter.eCurveStyle) ); xTemplateProps->setPropertyValue( C2U( "CurveResolution" ), uno::makeAny(rParameter.nCurveResolution) ); xTemplateProps->setPropertyValue( C2U( "SplineOrder" ), uno::makeAny(rParameter.nSplineOrder) ); } catch( uno::Exception & ex ) { //not all templates need to support CurveStyle, CurveResolution or SplineOrder ex.Context.is();//to have debug information without compilation warnings } try { xTemplateProps->setPropertyValue( C2U( "Geometry3D" ), uno::makeAny(rParameter.nGeometry3D) ); } catch( uno::Exception & ex ) { //not all templates need to support Geometry3D ex.Context.is();//to have debug information without compilation warnings } try { this->setTemplateProperties( xTemplateProps ); } catch( uno::Exception & ex ) { ASSERT_EXCEPTION( ex ); } } } } return xTemplate; } bool ChartTypeDialogController::commitToModel( const ChartTypeParameter& rParameter , const uno::Reference< XChartDocument >& xChartModel ) { uno::Reference< lang::XMultiServiceFactory > xTemplateManager( xChartModel->getChartTypeManager(), uno::UNO_QUERY ); uno::Reference< XChartTypeTemplate > xTemplate( this->getCurrentTemplate( rParameter, xTemplateManager ) ); if(xTemplate.is()) { uno::Reference< frame::XModel > xModel( xChartModel, uno::UNO_QUERY); // /-- locked controllers ControllerLockGuard aCtrlLockGuard( xModel ); uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( xModel ); DiagramHelper::tTemplateWithServiceName aTemplateWithService( DiagramHelper::getTemplateForDiagram( xDiagram, xTemplateManager )); if( aTemplateWithService.first.is()) aTemplateWithService.first->resetStyles( xDiagram ); xTemplate->changeDiagram( xDiagram ); if( Application::GetSettings().GetLayoutRTL() ) AxisHelper::setRTLAxisLayout( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ) ); if( rParameter.b3DLook ) ThreeDHelper::setScheme( xDiagram, rParameter.eThreeDLookScheme ); //SortByXValues { uno::Reference< beans::XPropertySet > xDiaProp( xDiagram, uno::UNO_QUERY ); if( xDiaProp.is() ) xDiaProp->setPropertyValue( C2U( "SortByXValues" ), uno::makeAny( rParameter.bSortByXValues ) ); } // \-- locked controllers } return false; } void ChartTypeDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool /*bIsHighContrast*/, const ChartTypeParameter& /*rParameter*/ ) { rSubTypeList.Clear(); } bool ChartTypeDialogController::shouldShow_XAxisTypeControl() const { return false; } bool ChartTypeDialogController::shouldShow_3DLookControl() const { return false; } bool ChartTypeDialogController::shouldShow_StackingControl() const { return false; } bool ChartTypeDialogController::shouldShow_DeepStackingControl() const { return false; } bool ChartTypeDialogController::shouldShow_SplineControl() const { return false; } bool ChartTypeDialogController::shouldShow_GeometryControl() const { return false; } bool ChartTypeDialogController::shouldShow_SortByXValuesResourceGroup() const { return false; } void ChartTypeDialogController::showExtraControls( Window* /*pParent*/, const Point& /*rPosition*/, const Size& /*rSize*/ ) { } void ChartTypeDialogController::hideExtraControls() const { } void ChartTypeDialogController::fillExtraControls( const ChartTypeParameter& /*rParameter*/ , const uno::Reference< XChartDocument >& /*xChartModel*/ , const uno::Reference< beans::XPropertySet >& /*xTemplateProps*/ ) const { } void ChartTypeDialogController::setTemplateProperties( const uno::Reference< beans::XPropertySet >& /*xTemplateProps*/ ) const throw (uno::RuntimeException) { } //-------------------------------------------------------------------------- ColumnOrBarChartDialogController_Base::ColumnOrBarChartDialogController_Base() : ChartTypeDialogController() { } ColumnOrBarChartDialogController_Base::~ColumnOrBarChartDialogController_Base() { } bool ColumnOrBarChartDialogController_Base::shouldShow_3DLookControl() const { return true; } bool ColumnOrBarChartDialogController_Base::shouldShow_GeometryControl() const { return true; } void ColumnOrBarChartDialogController_Base::adjustSubTypeAndEnableControls( ChartTypeParameter& rParameter ) { if(rParameter.nSubTypeIndex>3 && !rParameter.b3DLook) { rParameter.nSubTypeIndex=1; } } //-------------------------------------------------------------------------- ColumnChartDialogController::ColumnChartDialogController() { } ColumnChartDialogController::~ColumnChartDialogController() { } String ColumnChartDialogController::getName() { return String( SchResId( STR_TYPE_COLUMN )); } Image ColumnChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_COLUMN ); } const tTemplateServiceChartTypeParameterMap& ColumnChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap ( C2U( "com.sun.star.chart2.template.Column" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE) ) ( C2U( "com.sun.star.chart2.template.StackedColumn" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) ( C2U( "com.sun.star.chart2.template.PercentStackedColumn" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) ) ( C2U( "com.sun.star.chart2.template.ThreeDColumnFlat" ), ChartTypeParameter(1,false,true,GlobalStackMode_NONE) ) ( C2U( "com.sun.star.chart2.template.StackedThreeDColumnFlat" ), ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) ) ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDColumnFlat" ), ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) ) ( C2U( "com.sun.star.chart2.template.ThreeDColumnDeep" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z) ) ; return m_aTemplateMap; } void ColumnChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) { rSubTypeList.Clear(); if( rParameter.b3DLook ) { switch(rParameter.nGeometry3D) { case DataPointGeometry3D::CYLINDER: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_SAEULE_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_SAEULE_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_SAEULE_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_SAEULE_3D_4 ) ); break; case DataPointGeometry3D::CONE: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_KEGEL_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_KEGEL_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_KEGEL_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_KEGEL_3D_4 ) ); break; case DataPointGeometry3D::PYRAMID: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_PYRAMID_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_PYRAMID_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_PYRAMID_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_PYRAMID_3D_4 ) ); break; default: //DataPointGeometry3D::CUBOID: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_COLUMNS_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_COLUMNS_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_COLUMNS_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_COLUMNS_3D ) ); break; } } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_COLUMNS_2D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_COLUMNS_2D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_COLUMNS_2D_3 ) ); } rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) ); rSubTypeList.SetItemText( 4, String( SchResId( STR_DEEP )) ); } //-------------------------------------------------------------------------- BarChartDialogController::BarChartDialogController() { } BarChartDialogController::~BarChartDialogController() { } String BarChartDialogController::getName() { return String( SchResId( STR_TYPE_BAR )); } Image BarChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_BAR ); } const tTemplateServiceChartTypeParameterMap& BarChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap ( C2U( "com.sun.star.chart2.template.Bar" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE) ) ( C2U( "com.sun.star.chart2.template.StackedBar" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) ( C2U( "com.sun.star.chart2.template.PercentStackedBar" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) ) ( C2U( "com.sun.star.chart2.template.ThreeDBarFlat" ), ChartTypeParameter(1,false,true,GlobalStackMode_NONE) ) ( C2U( "com.sun.star.chart2.template.StackedThreeDBarFlat" ), ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) ) ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDBarFlat" ), ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) ) ( C2U( "com.sun.star.chart2.template.ThreeDBarDeep" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z) ) ; return m_aTemplateMap; } void BarChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) { rSubTypeList.Clear(); if( rParameter.b3DLook ) { switch(rParameter.nGeometry3D) { case DataPointGeometry3D::CYLINDER: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_ROEHRE_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_ROEHRE_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_ROEHRE_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_ROEHRE_3D_4 ) ); break; case DataPointGeometry3D::CONE: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_KEGELQ_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_KEGELQ_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_KEGELQ_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_KEGELQ_3D_4 ) ); break; case DataPointGeometry3D::PYRAMID: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_PYRAMIDQ_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_PYRAMIDQ_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_PYRAMIDQ_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_PYRAMIDQ_3D_4 ) ); break; default: //DataPointGeometry3D::CUBOID: rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_BARS_3D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_BARS_3D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_BARS_3D_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_BARS_3D ) ); break; } } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_BARS_2D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_BARS_2D_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_BARS_2D_3 ) ); } rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) ); rSubTypeList.SetItemText( 4, String( SchResId( STR_DEEP )) ); } //-------------------------------------------------------------------------- PieChartDialogController::PieChartDialogController() { } PieChartDialogController::~PieChartDialogController() { } String PieChartDialogController::getName() { return String( SchResId( STR_TYPE_PIE )); } Image PieChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_PIE ); } const tTemplateServiceChartTypeParameterMap& PieChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap ( C2U( "com.sun.star.chart2.template.Pie" ), ChartTypeParameter(1,false,false) ) ( C2U( "com.sun.star.chart2.template.PieAllExploded" ), ChartTypeParameter(2,false,false) ) ( C2U( "com.sun.star.chart2.template.Donut" ), ChartTypeParameter(3,false,false) ) ( C2U( "com.sun.star.chart2.template.DonutAllExploded" ), ChartTypeParameter(4,false,false) ) ( C2U( "com.sun.star.chart2.template.ThreeDPie" ), ChartTypeParameter(1,false,true) ) ( C2U( "com.sun.star.chart2.template.ThreeDPieAllExploded" ), ChartTypeParameter(2,false,true) ) ( C2U( "com.sun.star.chart2.template.ThreeDDonut" ), ChartTypeParameter(3,false,true) ) ( C2U( "com.sun.star.chart2.template.ThreeDDonutAllExploded" ), ChartTypeParameter(4,false,true) ) ; return m_aTemplateMap; } void PieChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) { rSubTypeList.Clear(); if( rParameter.b3DLook ) { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_CIRCLES_3D ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_CIRCLES_3D_EXPLODED ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_DONUT_3D ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_DONUT_3D_EXPLODED ) ); } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_CIRCLES_2D ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_CIRCLES_2D_EXPLODED ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_DONUT_2D ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_DONUT_2D_EXPLODED ) ); } rSubTypeList.SetItemText( 1, String( SchResId( STR_NORMAL )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_PIE_EXPLODED )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_DONUT )) ); rSubTypeList.SetItemText( 4, String( SchResId( STR_DONUT_EXPLODED )) ); } bool PieChartDialogController::shouldShow_3DLookControl() const { return true; } void PieChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { if(rParameter.eStackMode==GlobalStackMode_STACK_Z) rParameter.eStackMode = GlobalStackMode_NONE; } //-------------------------------------------------------------------------- LineChartDialogController::LineChartDialogController() { } LineChartDialogController::~LineChartDialogController() { } String LineChartDialogController::getName() { return String( SchResId( STR_TYPE_LINE )); } Image LineChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_LINE ); } const tTemplateServiceChartTypeParameterMap& LineChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap //------------------------------------------------------- ( C2U( "com.sun.star.chart2.template.Symbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE,true,false) ) ( C2U( "com.sun.star.chart2.template.StackedSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y,true,false) ) ( C2U( "com.sun.star.chart2.template.PercentStackedSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y_PERCENT,true,false) ) ( C2U( "com.sun.star.chart2.template.LineSymbol" ), ChartTypeParameter(2,false,false,GlobalStackMode_NONE,true,true) ) ( C2U( "com.sun.star.chart2.template.StackedLineSymbol" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y,true,true) ) ( C2U( "com.sun.star.chart2.template.PercentStackedLineSymbol" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y_PERCENT,true,true) ) ( C2U( "com.sun.star.chart2.template.Line" ), ChartTypeParameter(3,false,false,GlobalStackMode_NONE,false,true) ) ( C2U( "com.sun.star.chart2.template.StackedLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y,false,true) ) ( C2U( "com.sun.star.chart2.template.PercentStackedLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT,false,true) ) //------------------------------------------------------- //( C2U( "com.sun.star.chart2.template.ThreeDLine" ), ChartTypeParameter(4,false,true,GlobalStackMode_NONE,false,true) ) ( C2U( "com.sun.star.chart2.template.StackedThreeDLine" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Y,false,true) ) ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDLine" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Y_PERCENT,false,true) ) ( C2U( "com.sun.star.chart2.template.ThreeDLineDeep" ), ChartTypeParameter(4,false,true,GlobalStackMode_STACK_Z,false,true) ) //------------------------------------------------------- ; return m_aTemplateMap; } void LineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) { rSubTypeList.Clear(); if( CurveStyle_LINES==rParameter.eCurveStyle ) { //direct lines if( GlobalStackMode_NONE == rParameter.eStackMode || GlobalStackMode_STACK_Z == rParameter.eStackMode ) { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XCATEGORY ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XCATEGORY ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XCATEGORY ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XCATEGORY ) ); } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_STACKED ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_STACKED ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_STACKED ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_STACKED ) ); } } else //CurveStyle_LINES { if( GlobalStackMode_NONE == rParameter.eStackMode || GlobalStackMode_STACK_Z == rParameter.eStackMode ) { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XCATEGORY ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XCATEGORY_SMOOTH ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XCATEGORY_SMOOTH ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XCATEGORY_SMOOTH ) ); } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_STACKED ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_STACKED_SMOOTH ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_STACKED_SMOOTH ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_STACKED_SMOOTH ) ); } } rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) ); rSubTypeList.SetItemText( 4, String( SchResId( STR_LINES_3D )) ); } bool LineChartDialogController::shouldShow_StackingControl() const { return true; } bool LineChartDialogController::shouldShow_DeepStackingControl() const { return false; } bool LineChartDialogController::shouldShow_SplineControl() const { return true; } void LineChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { rParameter.b3DLook = false; switch( rParameter.nSubTypeIndex ) { case 2: rParameter.bSymbols = true; rParameter.bLines = true; break; case 3: rParameter.bSymbols = false; rParameter.bLines = true; break; case 4: rParameter.bSymbols = false; rParameter.bLines = true; rParameter.b3DLook = true; if( rParameter.eStackMode == GlobalStackMode_NONE ) rParameter.eStackMode = GlobalStackMode_STACK_Z; break; default: rParameter.bSymbols = true; rParameter.bLines = false; break; } if(!rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_STACK_Z ) rParameter.eStackMode = GlobalStackMode_NONE; } void LineChartDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter ) { if( rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_NONE ) rParameter.eStackMode = GlobalStackMode_STACK_Z; ChartTypeDialogController::adjustParameterToMainType( rParameter ); } //-------------------------------------------------------------------------- XYChartDialogController::XYChartDialogController() { bSupportsXAxisWithValues = true; } XYChartDialogController::~XYChartDialogController() { } String XYChartDialogController::getName() { return String( SchResId( STR_TYPE_XY )); } Image XYChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_XY ); } const tTemplateServiceChartTypeParameterMap& XYChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap //------------------------------------------------------- ( C2U( "com.sun.star.chart2.template.ScatterSymbol" ), ChartTypeParameter(1,true,false,GlobalStackMode_NONE,true,false) ) ( C2U( "com.sun.star.chart2.template.ScatterLineSymbol" ), ChartTypeParameter(2,true,false,GlobalStackMode_NONE,true,true) ) ( C2U( "com.sun.star.chart2.template.ScatterLine" ), ChartTypeParameter(3,true,false,GlobalStackMode_NONE,false,true) ) ( C2U( "com.sun.star.chart2.template.ThreeDScatter" ), ChartTypeParameter(4,true,true,GlobalStackMode_NONE,false,true) ) ; return m_aTemplateMap; } void XYChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) { rSubTypeList.Clear(); if( CurveStyle_LINES==rParameter.eCurveStyle ) { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XVALUES ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XVALUES ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XVALUES ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XVALUES ) ); } else //CurveStyle_LINES { //smooth lines rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_POINTS_XVALUES ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_LINE_P_XVALUES_SMOOTH ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_LINE_O_XVALUES_SMOOTH ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_LINE3D_XVALUES_SMOOTH ) ); } rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) ); rSubTypeList.SetItemText( 4, String( SchResId( STR_LINES_3D )) ); } bool XYChartDialogController::shouldShow_SplineControl() const { return true; } bool XYChartDialogController::shouldShow_SortByXValuesResourceGroup() const { return true; } void XYChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { rParameter.eStackMode=GlobalStackMode_NONE; rParameter.b3DLook = false; switch( rParameter.nSubTypeIndex ) { case 2: rParameter.bSymbols = true; rParameter.bLines = true; break; case 3: rParameter.bSymbols = false; rParameter.bLines = true; break; case 4: rParameter.bSymbols = false; rParameter.bLines = true; rParameter.b3DLook = true; rParameter.eStackMode=GlobalStackMode_STACK_Z; break; default: rParameter.bSymbols = true; rParameter.bLines = false; break; } } //-------------------------------------------------------------------------- AreaChartDialogController::AreaChartDialogController() { } AreaChartDialogController::~AreaChartDialogController() { } String AreaChartDialogController::getName() { return String( SchResId( STR_TYPE_AREA )); } Image AreaChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_AREA ); } bool AreaChartDialogController::shouldShow_3DLookControl() const { return true; } const tTemplateServiceChartTypeParameterMap& AreaChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap ( C2U( "com.sun.star.chart2.template.Area" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE) ) ( C2U( "com.sun.star.chart2.template.ThreeDArea" ), ChartTypeParameter(1,false,true,GlobalStackMode_STACK_Z) ) ( C2U( "com.sun.star.chart2.template.StackedArea" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) ( C2U( "com.sun.star.chart2.template.StackedThreeDArea" ), ChartTypeParameter(2,false,true,GlobalStackMode_STACK_Y) ) ( C2U( "com.sun.star.chart2.template.PercentStackedArea" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT) ) ( C2U( "com.sun.star.chart2.template.PercentStackedThreeDArea" ), ChartTypeParameter(3,false,true,GlobalStackMode_STACK_Y_PERCENT) ) ; return m_aTemplateMap; } void AreaChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) { rSubTypeList.Clear(); if( rParameter.b3DLook ) { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_AREAS_3D ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_AREAS_3D_1 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_AREAS_3D_2 ) ); } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_AREAS_2D_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_AREAS_2D ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_AREAS_2D_3 ) ); } rSubTypeList.SetItemText( 1, String( SchResId( rParameter.b3DLook ? STR_DEEP : STR_NORMAL )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_STACKED )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_PERCENT )) ); } void AreaChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { rParameter.eCurveStyle = CurveStyle_LINES; if( rParameter.nSubTypeIndex>3 ) rParameter.nSubTypeIndex = 1; switch( rParameter.nSubTypeIndex ) { case 2: rParameter.eStackMode=GlobalStackMode_STACK_Y; break; case 3: rParameter.eStackMode=GlobalStackMode_STACK_Y_PERCENT; break; default: if( rParameter.b3DLook ) rParameter.eStackMode=GlobalStackMode_STACK_Z; else rParameter.eStackMode=GlobalStackMode_NONE; break; } } void AreaChartDialogController::adjustParameterToMainType( ChartTypeParameter& rParameter ) { if( rParameter.b3DLook && rParameter.eStackMode == GlobalStackMode_NONE ) rParameter.eStackMode = GlobalStackMode_STACK_Z; ChartTypeDialogController::adjustParameterToMainType( rParameter ); } //-------------------------------------------------------------------------- NetChartDialogController::NetChartDialogController() { bSupports3D = false; } NetChartDialogController::~NetChartDialogController() { } String NetChartDialogController::getName() { return String( SchResId( STR_TYPE_NET )); } Image NetChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_NET ); } bool NetChartDialogController::shouldShow_StackingControl() const { return true; } const tTemplateServiceChartTypeParameterMap& NetChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap //@todo need templates with symbols only ( C2U( "com.sun.star.chart2.template.NetSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_NONE,true,false) ) ( C2U( "com.sun.star.chart2.template.StackedNetSymbol" ), ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y,true,false) ) ( C2U( "com.sun.star.chart2.template.PercentStackedNetSymbol" ),ChartTypeParameter(1,false,false,GlobalStackMode_STACK_Y_PERCENT,true,false) ) ( C2U( "com.sun.star.chart2.template.Net" ), ChartTypeParameter(2,false,false,GlobalStackMode_NONE,true,true) ) ( C2U( "com.sun.star.chart2.template.StackedNet" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y,true,true) ) ( C2U( "com.sun.star.chart2.template.PercentStackedNet" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y_PERCENT,true,true) ) ( C2U( "com.sun.star.chart2.template.NetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_NONE,false,true) ) ( C2U( "com.sun.star.chart2.template.StackedNetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y,false,true) ) ( C2U( "com.sun.star.chart2.template.PercentStackedNetLine" ), ChartTypeParameter(3,false,false,GlobalStackMode_STACK_Y_PERCENT,false,true) ) ( C2U( "com.sun.star.chart2.template.FilledNet" ), ChartTypeParameter(4,false,false,GlobalStackMode_NONE,false,false) ) ( C2U( "com.sun.star.chart2.template.StackedFilledNet" ), ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y,false,false) ) ( C2U( "com.sun.star.chart2.template.PercentStackedFilledNet" ),ChartTypeParameter(4,false,false,GlobalStackMode_STACK_Y_PERCENT,false,false) ) ; return m_aTemplateMap; } void NetChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& rParameter ) { rSubTypeList.Clear(); if( GlobalStackMode_NONE == rParameter.eStackMode ) { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_NET_SYMB ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_NET_LINESYMB ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_NET ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_NET_FILL ) ); } else { rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_NET_SYMB_STACK ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_NET_LINESYMB_STACK ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_NET_STACK ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_NET_FILL_STACK ) ); } rSubTypeList.SetItemText( 1, String( SchResId( STR_POINTS_ONLY )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_POINTS_AND_LINES )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_LINES_ONLY )) ); rSubTypeList.SetItemText( 4, String( SchResId( STR_FILLED )) ); } void NetChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { rParameter.b3DLook = false; if(rParameter.eStackMode==GlobalStackMode_STACK_Z) rParameter.eStackMode = GlobalStackMode_NONE; switch( rParameter.nSubTypeIndex ) { case 2: rParameter.bSymbols = true; rParameter.bLines = true; break; case 3: rParameter.bSymbols = false; rParameter.bLines = true; break; case 4: rParameter.bSymbols = false; rParameter.bLines = false; break; default: rParameter.bSymbols = true; rParameter.bLines = false; break; } } //-------------------------------------------------------------------------- StockChartDialogController::StockChartDialogController() { bSupports3D = false; } StockChartDialogController::~StockChartDialogController() { } String StockChartDialogController::getName() { return String( SchResId( STR_TYPE_STOCK )); } Image StockChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_STOCK ); } const tTemplateServiceChartTypeParameterMap& StockChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap ( C2U( "com.sun.star.chart2.template.StockLowHighClose" ), ChartTypeParameter(1) ) ( C2U( "com.sun.star.chart2.template.StockOpenLowHighClose" ), ChartTypeParameter(2) ) ( C2U( "com.sun.star.chart2.template.StockVolumeLowHighClose" ), ChartTypeParameter(3) ) ( C2U( "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ),ChartTypeParameter(4) ) ; return m_aTemplateMap; } void StockChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& /*rParameter*/ ) { rSubTypeList.Clear(); rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_STOCK_1 ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_STOCK_2 ) ); rSubTypeList.InsertItem( 3, SELECT_BITMAP( BMP_STOCK_3 ) ); rSubTypeList.InsertItem( 4, SELECT_BITMAP( BMP_STOCK_4 ) ); rSubTypeList.SetItemText( 1, String( SchResId( STR_STOCK_1 )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_STOCK_2 )) ); rSubTypeList.SetItemText( 3, String( SchResId( STR_STOCK_3 )) ); rSubTypeList.SetItemText( 4, String( SchResId( STR_STOCK_4 )) ); } void StockChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { rParameter.b3DLook = false; rParameter.eStackMode = GlobalStackMode_NONE; } //-------------------------------------------------------------------------- CombiColumnLineChartDialogController::CombiColumnLineChartDialogController() : m_pFT_NumberOfLines(0) , m_pMF_NumberOfLines(0) { bSupports3D = false; } CombiColumnLineChartDialogController::~CombiColumnLineChartDialogController() { if(m_pFT_NumberOfLines) delete m_pFT_NumberOfLines; if(m_pMF_NumberOfLines) delete m_pMF_NumberOfLines; } String CombiColumnLineChartDialogController::getName() { return String( SchResId( STR_TYPE_COMBI_COLUMN_LINE )); } Image CombiColumnLineChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_COLUMN_LINE ); } const tTemplateServiceChartTypeParameterMap& CombiColumnLineChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap ( C2U( "com.sun.star.chart2.template.ColumnWithLine" ), ChartTypeParameter(1) ) ( C2U( "com.sun.star.chart2.template.StackedColumnWithLine" ), ChartTypeParameter(2,false,false,GlobalStackMode_STACK_Y) ) ; return m_aTemplateMap; } void CombiColumnLineChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& /*rParameter*/ ) { rSubTypeList.Clear(); rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_COLUMN_LINE ) ); rSubTypeList.InsertItem( 2, SELECT_BITMAP( BMP_COLUMN_LINE_STACKED ) ); rSubTypeList.SetItemText( 1, String( SchResId( STR_LINE_COLUMN )) ); rSubTypeList.SetItemText( 2, String( SchResId( STR_LINE_STACKEDCOLUMN )) ); } void CombiColumnLineChartDialogController::showExtraControls( Window* pParent, const Point& rPosition, const Size& rSize ) { if(!m_pFT_NumberOfLines) { m_pFT_NumberOfLines = new FixedText(pParent,pParent->GetStyle()); m_pFT_NumberOfLines->SetText( String( SchResId( STR_NUMBER_OF_LINES )) ); } if(!m_pMF_NumberOfLines) { m_pMF_NumberOfLines = new MetricField(pParent,pParent->GetStyle() | WB_SPIN | WB_REPEAT | WB_BORDER ); m_pMF_NumberOfLines->SetDefaultUnit( FUNIT_CUSTOM ); m_pMF_NumberOfLines->SetUnit( FUNIT_CUSTOM ); m_pMF_NumberOfLines->SetSpinSize(1); m_pMF_NumberOfLines->SetFirst( 1, FUNIT_CUSTOM ); m_pMF_NumberOfLines->SetLast( 100, FUNIT_CUSTOM ); m_pMF_NumberOfLines->SetMin( 1, FUNIT_CUSTOM ); m_pMF_NumberOfLines->SetMax( 100, FUNIT_CUSTOM ); m_pMF_NumberOfLines->SetHelpId( HID_SCH_NUM_OF_LINES ); m_pMF_NumberOfLines->SetModifyHdl( LINK( this, CombiColumnLineChartDialogController, ChangeLineCountHdl ) ); } Size aDistanceSize( pParent->LogicToPixel( Size(RSC_SP_CTRL_DESC_X,2), MapMode(MAP_APPFONT) ) ); Size aMFSize( pParent->LogicToPixel( Size(20,RSC_CD_TEXTBOX_HEIGHT), MapMode(MAP_APPFONT) ) ); m_pMF_NumberOfLines->SetSizePixel( aMFSize ); Size aFTSize(m_pFT_NumberOfLines->CalcMinimumSize(rSize.Width()-aMFSize.Width()-aDistanceSize.Width())); m_pFT_NumberOfLines->SetSizePixel(aFTSize); m_pFT_NumberOfLines->SetPosPixel( Point( rPosition.X(), rPosition.Y()+aDistanceSize.Height()) ); m_pMF_NumberOfLines->SetPosPixel( Point( rPosition.X()+aFTSize.Width()+aDistanceSize.Width(), rPosition.Y()) ); m_pFT_NumberOfLines->Show(); m_pMF_NumberOfLines->Show(); m_pMF_NumberOfLines->SetAccessibleName(m_pFT_NumberOfLines->GetText()); m_pMF_NumberOfLines->SetAccessibleRelationLabeledBy(m_pFT_NumberOfLines); } void CombiColumnLineChartDialogController::hideExtraControls() const { if(m_pFT_NumberOfLines) m_pFT_NumberOfLines->Hide(); if(m_pMF_NumberOfLines) m_pMF_NumberOfLines->Hide(); } void CombiColumnLineChartDialogController::fillExtraControls( const ChartTypeParameter& /*rParameter*/ , const uno::Reference< XChartDocument >& xChartModel , const uno::Reference< beans::XPropertySet >& xTemplateProps ) const { if(!m_pMF_NumberOfLines) return; uno::Reference< frame::XModel > xModel( xChartModel, uno::UNO_QUERY ); uno::Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( xModel ); if(!xDiagram.is()) return; sal_Int32 nNumLines = 0; if(xTemplateProps.is()) try { xTemplateProps->getPropertyValue( C2U("NumberOfLines") ) >>= nNumLines; } catch( uno::Exception & ex ) { ASSERT_EXCEPTION( ex ); } if( nNumLines < 0 ) nNumLines = 0; m_pMF_NumberOfLines->SetValue( nNumLines ); sal_Int32 nMaxLines = ChartModelHelper::getDataSeries( xModel ).size() - 1; if( nMaxLines < 0 ) nMaxLines = 0; m_pMF_NumberOfLines->SetLast( nMaxLines ); m_pMF_NumberOfLines->SetMax( nMaxLines ); } void CombiColumnLineChartDialogController::setTemplateProperties( const uno::Reference< beans::XPropertySet >& xTemplateProps ) const throw (uno::RuntimeException) { if( xTemplateProps.is() ) { sal_Int32 nNumLines = static_cast< sal_Int32 >( m_pMF_NumberOfLines->GetValue()); xTemplateProps->setPropertyValue( C2U( "NumberOfLines" ), uno::makeAny(nNumLines) ); } } IMPL_LINK( CombiColumnLineChartDialogController, ChangeLineCountHdl, void *, EMPTYARG ) { if( m_pChangeListener ) m_pChangeListener->stateChanged(this); return 0; } void CombiColumnLineChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { rParameter.b3DLook = false; if(rParameter.eStackMode==GlobalStackMode_STACK_Z) rParameter.eStackMode = GlobalStackMode_NONE; switch( rParameter.nSubTypeIndex ) { case 2: rParameter.eStackMode=GlobalStackMode_STACK_Y; break; default: rParameter.eStackMode=GlobalStackMode_NONE; break; } } //-------------------------------------------------------------------------- BubbleChartDialogController::BubbleChartDialogController() { } BubbleChartDialogController::~BubbleChartDialogController() { } String BubbleChartDialogController::getName() { return String( SchResId( STR_TYPE_BUBBLE )); } Image BubbleChartDialogController::getImage( bool bIsHighContrast ) { return SELECT_IMAGE( IMG_TYPE_BUBBLE ); } const tTemplateServiceChartTypeParameterMap& BubbleChartDialogController::getTemplateMap() const { static tTemplateServiceChartTypeParameterMap m_aTemplateMap = tTemplateServiceChartTypeParameterMap ( C2U( "com.sun.star.chart2.template.Bubble" ), ChartTypeParameter(1,true) ) ; return m_aTemplateMap; } void BubbleChartDialogController::fillSubTypeList( ValueSet& rSubTypeList, bool bIsHighContrast, const ChartTypeParameter& /*rParameter*/ ) { rSubTypeList.Clear(); rSubTypeList.InsertItem( 1, SELECT_BITMAP( BMP_BUBBLE_1 ) ); rSubTypeList.SetItemText( 1, String( SchResId( STR_BUBBLE_1 )) ); } void BubbleChartDialogController::adjustParameterToSubType( ChartTypeParameter& rParameter ) { rParameter.b3DLook = false; rParameter.eStackMode = GlobalStackMode_NONE; } //............................................................................. } //namespace chart //.............................................................................