blob: 3d0f7034127da76fb1eb3432c923e78fea50d352 [file] [log] [blame]
/**************************************************************
*
* 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 <com/sun/star/chart2/DataPointGeometry3D.hpp>
#include <com/sun/star/chart2/PieChartOffsetMode.hpp>
#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
#ifndef _SVT_CONTROLDIMS_HRC_
#include <svtools/controldims.hrc>
#endif
// header for class Image
#include <vcl/image.hxx>
// header for class Bitmap
#include <vcl/bitmap.hxx>
#include <vcl/svapp.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
//.............................................................................
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
//.............................................................................