diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index c5999ac63f2c..045837e7ccfd 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -61,6 +61,8 @@ #include #include #include +#include +#include #include #include @@ -298,6 +300,26 @@ bool ChartController::TheModelRef::is() const return (m_pTheModel != 0); } +namespace { + +css::uno::Reference getChartType( + css::uno::Reference xChartDoc) +{ + Reference xDiagram = xChartDoc->getFirstDiagram(); + + Reference< chart2::XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY_THROW ); + + Sequence< Reference< chart2::XCoordinateSystem > > xCooSysSequence( xCooSysContainer->getCoordinateSystems()); + + Reference< chart2::XChartTypeContainer > xChartTypeContainer( xCooSysSequence[0], uno::UNO_QUERY_THROW ); + + Sequence< Reference< chart2::XChartType > > xChartTypeSequence( xChartTypeContainer->getChartTypes() ); + + return xChartTypeSequence[0]; +} + +} + OUString ChartController::GetContextName() { if (m_bDisposed) @@ -314,6 +336,8 @@ OUString ChartController::GetContextName() return OUString("Chart"); ObjectType eObjectID = ObjectIdentifier::getObjectType(aCID); + + css::uno::Reference xChartType = getChartType(css::uno::Reference(getModel(), uno::UNO_QUERY_THROW)); switch (eObjectID) { case OBJECTTYPE_DATA_SERIES: @@ -327,6 +351,9 @@ OUString ChartController::GetContextName() return OUString("Axis"); case OBJECTTYPE_GRID: return OUString("Grid"); + case OBJECTTYPE_DIAGRAM: + if (xChartType->getChartType() == "com.sun.star.chart2.PieChartType") + return OUString("ChartElements"); default: break; } diff --git a/include/sfx2/sidebar/EnumContext.hxx b/include/sfx2/sidebar/EnumContext.hxx index d9dbe80fdff7..080a81836013 100644 --- a/include/sfx2/sidebar/EnumContext.hxx +++ b/include/sfx2/sidebar/EnumContext.hxx @@ -69,6 +69,7 @@ public: Context_Axis, Context_Cell, Context_Chart, + Context_ChartElements, Context_Draw, Context_DrawLine, Context_DrawPage, diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu index 8de92bc3516e..ecfd7d32a82a 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu @@ -1307,7 +1307,11 @@ - Chart, any, visible ; + Chart, Chart, visible ; + Chart, Series, visible ; + Chart, ErrorBar, visible ; + Chart, Axis, visible ; + Chart, Grid, visible ; diff --git a/sfx2/source/sidebar/EnumContext.cxx b/sfx2/source/sidebar/EnumContext.cxx index ba5e655d6d9e..7af70d9ad4d9 100644 --- a/sfx2/source/sidebar/EnumContext.cxx +++ b/sfx2/source/sidebar/EnumContext.cxx @@ -179,6 +179,7 @@ void EnumContext::ProvideContextContainers() AddContext(Cell); AddContext(Chart); AddContext(Chart); + AddContext(ChartElements); AddContext(Draw); AddContext(DrawLine); AddContext(DrawPage);