diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2007-05-22 16:28:29 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2007-05-22 16:28:29 +0000 |
commit | 35685f455508204bbacddf5db4a74a6f41f7ad9e (patch) | |
tree | da15c73a1cbec4941621cb5566758b1a909ba965 /chart2/source/controller/dialogs/ObjectNameProvider.cxx | |
parent | INTEGRATION: CWS chart2mst3 (1.1.2); FILE ADDED (diff) | |
download | core-35685f455508204bbacddf5db4a74a6f41f7ad9e.tar.gz core-35685f455508204bbacddf5db4a74a6f41f7ad9e.zip |
INTEGRATION: CWS chart2mst3 (1.1.2); FILE ADDED
2007/02/08 21:25:32 iha 1.1.2.17: resync m195 -> m202
2006/11/16 15:45:07 iha 1.1.2.16: #i71215# use numberformatter to display values in tip help
2006/11/01 17:47:10 iha 1.1.2.15: cleanup resources: no hardcoded quotes
2006/11/01 15:36:55 iha 1.1.2.14: cleanup resources + changed variable names according to style guide
2006/10/27 15:02:59 iha 1.1.2.13: name consolidation
2006/08/22 17:31:20 bm 1.1.2.12: #i68861# +getSelectedObjectText for the text shown in the status bar
2006/08/02 14:50:53 bm 1.1.2.11: getGridName: correctly determine main and sub grids
2006/08/02 11:16:25 bm 1.1.2.10: #i27352# implement quick help
2006/04/10 15:03:31 iha 1.1.2.9: api restructure axis, grids, scales and increments
2006/04/10 12:25:05 iha 1.1.2.8: api restructure axis, grids, scales and increments
2006/02/20 09:16:38 bm 1.1.2.7: +getHelpText for XChartDocument (in addition to XModel variant), +getNameForCID
2005/12/21 21:29:06 iha 1.1.2.6: remove identifiers from model objects and create an index based CID protocol instead for selection purposes
2005/11/18 18:19:53 iha 1.1.2.5: restructuring for proper subgrid support
2005/10/11 09:20:05 bm 1.1.2.4: license header change
2005/07/13 12:12:47 iha 1.1.2.3: replace all newlines and provide x values
2005/07/13 11:47:26 iha 1.1.2.2: provide ui strings for help and accessibility
2004/05/17 17:46:48 iha 1.1.2.1: provide object naming
Diffstat (limited to 'chart2/source/controller/dialogs/ObjectNameProvider.cxx')
-rw-r--r-- | chart2/source/controller/dialogs/ObjectNameProvider.cxx | 641 |
1 files changed, 641 insertions, 0 deletions
diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx new file mode 100644 index 000000000000..dbf495accb28 --- /dev/null +++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx @@ -0,0 +1,641 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: ObjectNameProvider.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2007-05-22 17:28:29 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_chart2.hxx" + +#include "ObjectNameProvider.hxx" +#include "ResId.hxx" +#include "Strings.hrc" +#include "macros.hxx" +#include "AxisHelper.hxx" +#include "ChartModelHelper.hxx" +#include "DiagramHelper.hxx" +#include "DataSeriesHelper.hxx" +#include "TitleHelper.hxx" +#include "AxisIndexDefines.hxx" +#include "ExplicitCategoriesProvider.hxx" +#include "CommonConverters.hxx" +#include "chartview/NumberFormatterWrapper.hxx" + +#ifndef INCLUDED_RTL_MATH_HXX +#include <rtl/math.hxx> +#endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif + +#ifndef _COM_SUN_STAR_CHART2_XTITLE_HPP_ +#include <com/sun/star/chart2/XTitle.hpp> +#endif + +//............................................................................. +namespace chart +{ +//............................................................................. +using namespace ::com::sun::star; +using namespace ::com::sun::star::chart2; +using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::Sequence; +using ::com::sun::star::uno::Any; +using rtl::OUString; + +namespace +{ + +OUString lcl_getDataSeriesName( const rtl::OUString& rObjectCID, const Reference< frame::XModel >& xChartModel ) +{ + OUString aRet; + + Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); + Reference< XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel ), uno::UNO_QUERY ); + if( xDiagram.is() && xSeries.is() ) + { + Reference< XChartType > xChartType( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries ) ); + if( xChartType.is() ) + { + aRet = ::chart::DataSeriesHelper::getDataSeriesLabel( + xSeries, xChartType->getRoleOfSequenceForSeriesLabel() ) ; + } + } + + return aRet; +} + +void lcl_addText( OUString& rOut, const OUString& rSeparator, const OUString& rNext ) +{ + if( rOut.getLength() && rNext.getLength() ) + rOut+=rSeparator; + if( rNext.getLength() ) + rOut+=rNext; +} + +OUString lcl_getDataPointValueText( const Reference< XDataSeries >& xSeries, sal_Int32 nPointIndex, + const Reference< XCoordinateSystem >& xCooSys, + const Reference< frame::XModel >& xChartModel ) +{ + + OUString aRet; + + Reference<data::XDataSource> xDataSource( + uno::Reference<data::XDataSource>( xSeries, uno::UNO_QUERY ) ); + if(!xDataSource.is()) + return aRet; + + Sequence< Reference< data::XLabeledDataSequence > > aDataSequences( xDataSource->getDataSequences() ); + + rtl::OUString aX, aY, aY_Min, aY_Max, aY_First, aY_Last; + double fValue; + + uno::Reference< util::XNumberFormatsSupplier > xNumberFormatsSupplier( xChartModel, uno::UNO_QUERY ); + NumberFormatterWrapper aNumberFormatterWrapper( xNumberFormatsSupplier ); + sal_Int32 nLabelColor = 0;//dummy + bool bColorChanged;//dummy + + for(sal_Int32 nN = aDataSequences.getLength();nN--;) + { + uno::Reference<data::XDataSequence> xDataSequence( aDataSequences[nN]->getValues()); + if( !xDataSequence.is() ) + continue; + Sequence< Any > aData( xDataSequence->getData() ); + if( nPointIndex >= aData.getLength() ) + continue; + uno::Reference<beans::XPropertySet> xProp(xDataSequence, uno::UNO_QUERY ); + if( xProp.is()) + { + try + { + uno::Any aARole = xProp->getPropertyValue( C2U( "Role" ) ); + rtl::OUString aRole; + aARole >>= aRole; + + if( aRole.equals(C2U("values-x")) ) + { + aData[nPointIndex]>>= fValue; + sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); + aX = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); + } + else if( aRole.equals(C2U("values-y")) ) + { + aData[nPointIndex]>>= fValue; + sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); + aY = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); + } + else if( aRole.equals(C2U("values-first")) ) + { + aData[nPointIndex]>>= fValue; + sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); + aY_First = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); + } + else if( aRole.equals(C2U("values-min")) ) + { + aData[nPointIndex]>>= fValue; + sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); + aY_Min = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); + } + else if( aRole.equals(C2U("values-max")) ) + { + aData[nPointIndex]>>= fValue; + sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); + aY_Max = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); + } + else if( aRole.equals(C2U("values-last")) ) + { + aData[nPointIndex]>>= fValue; + sal_Int32 nNumberFormatKey = xDataSequence->getNumberFormatKeyByIndex( nPointIndex ); + aY_Last = aNumberFormatterWrapper.getFormattedString( nNumberFormatKey, fValue, nLabelColor, bColorChanged ); + } + } + catch( uno::Exception& e ) + { + ASSERT_EXCEPTION( e ); + } + } + } + + if( aX.getLength() == 0 ) + { + rtl::OUString aCategory(String(SchResId(STR_TIP_CATEGORY_VALUE))); + + replaceParamterInString( aCategory + , C2U("%CATEGORYVALUE") + , ExplicitCategoriesProvider::getCategoryByIndex( xCooSys, nPointIndex ) + ); + + aRet = aCategory; + } + else + { + aRet = aX; + } + + OUString aSeparator(C2U(" ")); + + lcl_addText( aRet, aSeparator, aY ); + lcl_addText( aRet, aSeparator, aY_First ); + lcl_addText( aRet, aSeparator, aY_Min ); + lcl_addText( aRet, aSeparator, aY_Max ); + lcl_addText( aRet, aSeparator, aY_Last ); + + return aRet; +} + +} //end anonymous namespace + +rtl::OUString ObjectNameProvider::getName( ObjectType eObjectType, bool bPlural ) +{ + rtl::OUString aRet; + switch( eObjectType ) + { + case OBJECTTYPE_PAGE: + aRet=String(SchResId(STR_OBJECT_PAGE)); + break; + case OBJECTTYPE_TITLE: + { + if(bPlural) + aRet=String(SchResId(STR_OBJECT_TITLES)); + else + aRet=String(SchResId(STR_OBJECT_TITLE)); + } + break; + case OBJECTTYPE_LEGEND: + aRet=String(SchResId(STR_OBJECT_LEGEND)); + break; + case OBJECTTYPE_LEGEND_ENTRY: + aRet=String(SchResId(STR_OBJECT_LEGEND_SYMBOL));//@todo change string if we do differenciate symbol and legend entry in future + break; + case OBJECTTYPE_DIAGRAM: + aRet=String(SchResId(STR_OBJECT_DIAGRAM)); + break; + case OBJECTTYPE_DIAGRAM_WALL: + aRet=String(SchResId(STR_OBJECT_DIAGRAM_WALL)); + break; + case OBJECTTYPE_DIAGRAM_FLOOR: + aRet=String(SchResId(STR_OBJECT_DIAGRAM_FLOOR)); + break; + case OBJECTTYPE_AXIS: + { + if(bPlural) + aRet=String(SchResId(STR_OBJECT_AXES)); + else + aRet=String(SchResId(STR_OBJECT_AXIS)); + } + break; + case OBJECTTYPE_AXIS_UNITLABEL: + aRet=String(SchResId(STR_OBJECT_LABEL));//@todo maybe a more concrete name + break; + case OBJECTTYPE_GRID: + case OBJECTTYPE_SUBGRID: //maybe todo: different names for subgrids + { + if(bPlural) + aRet=String(SchResId(STR_OBJECT_GRIDS)); + else + aRet=String(SchResId(STR_OBJECT_GRID)); + } + break; + case OBJECTTYPE_DATA_SERIES: + { + if(bPlural) + aRet=String(SchResId(STR_OBJECT_DATASERIES_PLURAL)); + else + aRet=String(SchResId(STR_OBJECT_DATASERIES)); + } + break; + case OBJECTTYPE_DATA_POINT: + { + if(bPlural) + aRet=String(SchResId(STR_OBJECT_DATAPOINTS)); + else + aRet=String(SchResId(STR_OBJECT_DATAPOINT)); + } + break; + case OBJECTTYPE_DATA_LABELS: + aRet=String(SchResId(STR_OBJECT_DATALABELS)); + break; + case OBJECTTYPE_DATA_LABEL: + aRet=String(SchResId(STR_OBJECT_LABEL)); + break; + case OBJECTTYPE_DATA_ERRORS: + aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe distinguish plural singular + break; + case OBJECTTYPE_DATA_ERRORS_X: + aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe specialize in future + break; + case OBJECTTYPE_DATA_ERRORS_Y: + aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe specialize in future + break; + case OBJECTTYPE_DATA_ERRORS_Z: + aRet=String(SchResId(STR_OBJECT_ERROR_INDICATOR));//@todo? maybe specialize in future + break; + case OBJECTTYPE_DATA_AVERAGE_LINE: + aRet=String(SchResId(STR_OBJECT_AVERAGE_LINE)); + break; + case OBJECTTYPE_DATA_CURVE: + aRet=String(SchResId(STR_OBJECT_CURVE)); + break; + case OBJECTTYPE_DATA_STOCK_RANGE: + //aRet=String(SchResId()); + break; + case OBJECTTYPE_DATA_STOCK_LOSS: + aRet=String(SchResId(STR_OBJECT_STOCK_LOSS)); + break; + case OBJECTTYPE_DATA_STOCK_GAIN: + aRet=String(SchResId(STR_OBJECT_STOCK_GAIN)); + break; + default: //OBJECTTYPE_UNKNOWN + ; + } + return aRet; +} +//static +rtl::OUString ObjectNameProvider::getAxisName( const rtl::OUString& rObjectCID + , const uno::Reference< frame::XModel >& xChartModel ) +{ + rtl::OUString aRet; + + + + Reference< XAxis > xAxis( + ObjectIdentifier::getObjectPropertySet( rObjectCID , xChartModel ), uno::UNO_QUERY ); + + sal_Int32 nDimensionIndex = AxisHelper::getDimensionIndexOfAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) ); + + switch(nDimensionIndex) + { + case 0://x-axis + aRet=String(SchResId(STR_OBJECT_AXIS_X)); + break; + case 1://y-axis + aRet=String(SchResId(STR_OBJECT_AXIS_Y)); + break; + case 2://z-axis + aRet=String(SchResId(STR_OBJECT_AXIS_Z)); + break; + default://axis + aRet=String(SchResId(STR_OBJECT_AXIS)); + break; + } + + return aRet; +} + +//static +OUString ObjectNameProvider::getTitleName( const OUString& rObjectCID + , const Reference< frame::XModel >& xChartModel ) +{ + OUString aRet; + + Reference< XTitle > xTitle( + ObjectIdentifier::getObjectPropertySet( rObjectCID , xChartModel ), uno::UNO_QUERY ); + if( xTitle.is() ) + { + TitleHelper::eTitleType eType; + if( TitleHelper::getTitleType( eType, xTitle, xChartModel ) ) + { + switch(eType) + { + case TitleHelper::MAIN_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_MAIN)); + break; + case TitleHelper::SUB_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_SUB)); + break; + case TitleHelper::X_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_X_AXIS)); + break; + case TitleHelper::Y_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_Y_AXIS)); + break; + case TitleHelper::Z_AXIS_TITLE: + aRet=String(SchResId(STR_OBJECT_TITLE_Z_AXIS)); + break; + default: + DBG_ERROR("unknown title type"); + break; + } + } + } + if( !aRet.getLength() ) + aRet=String(SchResId(STR_OBJECT_TITLE)); + + return aRet; +} + +//static +rtl::OUString ObjectNameProvider::getGridName( const rtl::OUString& rObjectCID + , const uno::Reference< frame::XModel >& xChartModel ) +{ + rtl::OUString aRet; + + + sal_Int32 nCooSysIndex = -1; + sal_Int32 nDimensionIndex = -1; + sal_Int32 nAxisIndex = -1; + Reference< XAxis > xAxis( ObjectIdentifier::getAxisForCID( rObjectCID , xChartModel ) ); + AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) + , nCooSysIndex , nDimensionIndex, nAxisIndex ); + + bool bMainGrid = (ObjectIdentifier::getObjectType( rObjectCID ) == OBJECTTYPE_GRID); + + if( bMainGrid ) + { + switch(nDimensionIndex) + { + case 0://x-axis + aRet=String(SchResId(STR_OBJECT_GRID_MAJOR_X)); + break; + case 1://y-axis + aRet=String(SchResId(STR_OBJECT_GRID_MAJOR_Y)); + break; + case 2://z-axis + aRet=String(SchResId(STR_OBJECT_GRID_MAJOR_Z)); + break; + default://axis + aRet=String(SchResId(STR_OBJECT_GRID)); + break; + } + } + else + { + switch(nDimensionIndex) + { + case 0://x-axis + aRet=String(SchResId(STR_OBJECT_GRID_MINOR_X)); + break; + case 1://y-axis + aRet=String(SchResId(STR_OBJECT_GRID_MINOR_Y)); + break; + case 2://z-axis + aRet=String(SchResId(STR_OBJECT_GRID_MINOR_Z)); + break; + default://axis + aRet=String(SchResId(STR_OBJECT_GRID)); + break; + } + } + return aRet; +} + +rtl::OUString ObjectNameProvider::getHelpText( const rtl::OUString& rObjectCID, const Reference< chart2::XChartDocument >& xChartDocument, bool bVerbose ) +{ + return getHelpText( rObjectCID, Reference< frame::XModel >( xChartDocument, uno::UNO_QUERY ), bVerbose ); +} + +rtl::OUString ObjectNameProvider::getHelpText( const rtl::OUString& rObjectCID, const Reference< frame::XModel >& xChartModel, bool bVerbose ) +{ + rtl::OUString aRet; + ObjectType eObjectType( ObjectIdentifier::getObjectType(rObjectCID) ); + if( OBJECTTYPE_AXIS == eObjectType ) + { + aRet=ObjectNameProvider::getAxisName( rObjectCID, xChartModel ); + } + else if( OBJECTTYPE_GRID == eObjectType + || OBJECTTYPE_SUBGRID == eObjectType ) + { + aRet=ObjectNameProvider::getGridName( rObjectCID, xChartModel ); + } + else if( OBJECTTYPE_TITLE == eObjectType ) + { + aRet=ObjectNameProvider::getTitleName( rObjectCID, xChartModel ); + } + else if( OBJECTTYPE_DATA_SERIES == eObjectType ) + { + aRet=String(SchResId(STR_TIP_DATASERIES)); + + OUString aWildcard( C2U("%SERIESNAME") ); + sal_Int32 nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) + aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), lcl_getDataSeriesName( rObjectCID, xChartModel ) ); + } + else if( OBJECTTYPE_DATA_POINT == eObjectType ) + { + if( bVerbose ) + { + OUString aNewLine(C2U("\n")); + + aRet=String(SchResId(STR_TIP_DATAPOINT_INDEX)); + aRet+=aNewLine; + aRet+=String(SchResId(STR_TIP_DATASERIES)); + aRet+=aNewLine; + aRet+=String(SchResId(STR_TIP_DATAPOINT_VALUES)); + } + else + aRet=String(SchResId(STR_TIP_DATAPOINT)); + + Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); + Reference< XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel ), uno::UNO_QUERY ); + if( xDiagram.is() && xSeries.is() ) + { + sal_Int32 nPointIndex( ObjectIdentifier::getParticleID(rObjectCID).toInt32() ); + + //replace data point index + sal_Int32 nIndex = -1; + OUString aWildcard( C2U("%POINTNUMBER") ); + nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) + { + aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), OUString::valueOf(nPointIndex+1) ); + } + + //replace data series index + aWildcard = C2U("%SERIESNUMBER"); + nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) + { + ::std::vector< Reference< chart2::XDataSeries > > aSeriesVector( + DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + sal_Int32 nSeriesIndex = -1; + for( nSeriesIndex=aSeriesVector.size();nSeriesIndex--;) + { + if( aSeriesVector[nSeriesIndex] == xSeries ) + { + break; + } + } + + OUString aReplacement( OUString::valueOf(nSeriesIndex+1) ); + aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), aReplacement ); + } + + //replace point values + aWildcard = C2U("%POINTVALUES"); + nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) + aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), lcl_getDataPointValueText( + xSeries,nPointIndex, DataSeriesHelper::getCoordinateSystemOfSeries(xSeries, xDiagram), xChartModel ) ); + + //replace series name + aWildcard = C2U("%SERIESNAME"); + nIndex = aRet.indexOf( aWildcard ); + if( nIndex != -1 ) + aRet = aRet.replaceAt( nIndex, aWildcard.getLength(), lcl_getDataSeriesName( rObjectCID, xChartModel ) ); + } + } + /* + else if( OBJECTTYPE_DIAGRAM == eObjectType ) + { + //todo different names for different diagram types ??? + //or different names for series of diferent charttypes + } + */ + else + { + aRet = ObjectNameProvider::getName( eObjectType, false ); + } + return aRet; +} + +// static +rtl::OUString ObjectNameProvider::getSelectedObjectText( const rtl::OUString & rObjectCID, const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument >& xChartDocument ) +{ + rtl::OUString aRet; + ObjectType eObjectType( ObjectIdentifier::getObjectType(rObjectCID) ); + Reference< frame::XModel > xChartModel( xChartDocument, uno::UNO_QUERY ); + + if( OBJECTTYPE_DATA_POINT == eObjectType ) + { + aRet = String( SchResId( STR_STATUS_DATAPOINT_MARKED )); + + Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); + Reference< XDataSeries > xSeries( ObjectIdentifier::getDataSeriesForCID( rObjectCID , xChartModel ), uno::UNO_QUERY ); + if( xDiagram.is() && xSeries.is() ) + { + sal_Int32 nPointIndex( ObjectIdentifier::getParticleID(rObjectCID).toInt32() ); + + // replace data point index + replaceParamterInString( aRet, C2U("%POINTNUMBER"), OUString::valueOf( nPointIndex + 1 )); + + // replace data series index + { + ::std::vector< Reference< chart2::XDataSeries > > aSeriesVector( + DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + sal_Int32 nSeriesIndex = -1; + for( nSeriesIndex=aSeriesVector.size();nSeriesIndex--;) + { + if( aSeriesVector[nSeriesIndex] == xSeries ) + break; + } + replaceParamterInString( aRet, C2U("%SERIESNUMBER"), OUString::valueOf( nSeriesIndex + 1 ) ); + } + + // replace point value + replaceParamterInString( aRet, C2U("%POINTVALUES"), lcl_getDataPointValueText( + xSeries, nPointIndex, DataSeriesHelper::getCoordinateSystemOfSeries(xSeries, xDiagram), xChartModel ) ); + } + } + else + { + OUString aHelpText( getHelpText( rObjectCID, xChartModel, false )); + if( aHelpText.getLength()) + { + aRet = String( SchResId( STR_STATUS_OBJECT_MARKED )); + replaceParamterInString( aRet, C2U("%OBJECTNAME"), aHelpText ); + } + } + + return aRet; +} + + +// static +rtl::OUString ObjectNameProvider::getNameForCID( + const rtl::OUString& rObjectCID, + const uno::Reference< chart2::XChartDocument >& xChartDocument ) +{ + ObjectType eType( ObjectIdentifier::getObjectType( rObjectCID )); + Reference< frame::XModel > xModel( xChartDocument, uno::UNO_QUERY ); + + switch( eType ) + { + case OBJECTTYPE_AXIS: + return getAxisName( rObjectCID, xModel ); + case OBJECTTYPE_TITLE: + return getTitleName( rObjectCID, xModel ); + case OBJECTTYPE_GRID: + return getGridName( rObjectCID, xModel ); + default: + break; + } + + return getName( eType ); +} + + +//............................................................................. +} //namespace chart +//............................................................................. |