47#include <com/sun/star/chart2/XRegressionCurve.hpp>
48#include <com/sun/star/chart2/XDataProviderAccess.hpp>
51#include <com/sun/star/frame/XLayoutManager.hpp>
55using ::com::sun::star::uno::Reference;
56using ::com::sun::star::uno::Sequence;
60bool lcl_isStatusBarVisible(
const Reference< frame::XController > & xController )
62 bool bIsStatusBarVisible =
false;
67 Reference< beans::XPropertySet > xPropSet(
xController->getFrame(), uno::UNO_QUERY );
70 uno::Reference< css::frame::XLayoutManager > xLayoutManager;
71 xPropSet->getPropertyValue(
"LayoutManager" ) >>= xLayoutManager;
72 if ( xLayoutManager.is() )
73 bIsStatusBarVisible = xLayoutManager->isElementVisible(
"private:resource/statusbar/statusbar" );
76 return bIsStatusBarVisible;
89 bool const MOVE_SERIES_FORWARD =
true;
90 bool const MOVE_SERIES_BACKWARD =
false;
147 bHasSelectedObject( false ),
148 bIsPositionableObject( false ),
149 bIsTextObject(false),
150 bIsDeleteableObjectSelected(false),
151 bIsFormateableObjectSelected(false),
152 bMayMoveSeriesForward( false ),
153 bMayMoveSeriesBackward( false ),
154 bMayAddMenuTrendline( false ),
155 bMayAddTrendline( false ),
156 bMayAddTrendlineEquation( false ),
157 bMayAddR2Value( false ),
158 bMayAddMeanValue( false ),
159 bMayAddXErrorBars( false ),
160 bMayAddYErrorBars( false ),
161 bMayDeleteTrendline( false ),
162 bMayDeleteTrendlineEquation( false ),
163 bMayDeleteR2Value( false ),
164 bMayDeleteMeanValue( false ),
165 bMayDeleteXErrorBars( false ),
166 bMayDeleteYErrorBars( false ),
167 bMayFormatTrendline( false ),
168 bMayFormatTrendlineEquation( false ),
169 bMayFormatMeanValue( false ),
170 bMayFormatXErrorBars( false ),
171 bMayFormatYErrorBars( false )
182 if( !xSelectionSupplier.is())
185 uno::Any aSelObj( xSelectionSupplier->getSelection() );
209 MOVE_SERIES_FORWARD );
213 MOVE_SERIES_BACKWARD );
236 if( xGivenDataSeries.is())
239 sal_Int32 nDimensionCount = xDiagram->getDimension();
291 bool bHasR2Value =
false;
292 bool bMayHaveR2 =
true;
297 if( xEquationProperties.is() )
299 xEquationProperties->getPropertyValue(
"ShowCorrelationCoefficient" ) >>= bHasR2Value;
300 xEquationProperties->getPropertyValue(
"MayHaveCorrelationCoefficient" ) >>= bMayHaveR2;
303 catch(
const uno::RuntimeException&)
374 bHasDataFromPivotTable(false),
375 bHasMainTitle(false),
377 bHasXAxisTitle(false),
378 bHasYAxisTitle(false),
379 bHasZAxisTitle(false),
380 bHasSecondaryXAxisTitle(false),
381 bHasSecondaryYAxisTitle(false),
387 bHasMainXGrid(false),
388 bHasMainYGrid(false),
389 bHasMainZGrid(false),
390 bHasHelpXGrid(false),
391 bHasHelpYGrid(false),
392 bHasHelpZGrid(false),
393 bHasAutoScaledText(false),
397 bSupportsStatistics(false),
407 sal_Int32 nDimensionCount = 0;
409 nDimensionCount = xDiagram->getDimension();
413 xFirstChartType = xDiagram->getChartTypeByIndex( 0 );
450 bHasWall = xDiagram && xDiagram->isSupportingFloorAndWall();
453 bDataTable = xDiagram.is() && xDiagram->getDataTable().is();
478 m_xChartController( pController ),
479 m_xSelectionSupplier(
Reference< view::XSelectionSupplier >( pController ) ),
481 m_apModelState( new
impl::ModelState() ),
482 m_apControllerState( new
impl::ControllerState() ),
483 m_pDispatchContainer( pContainer )
499 xModel->addModifyListener(
this );
515 const OUString & rURL,
520 fireStatusEventForURL( rURL, aArgIt->second,
commandAvailable( rURL ), xSingleListener );
530 OSL_ASSERT( bModelStateIsValid );
531 OSL_ASSERT( bControllerStateIsValid );
534 bool bIsWritable = bModelStateIsValid && (!
m_apModelState->bIsReadOnly);
537 bool bEnableDataTableDialog =
false;
538 bool bCanCreateDataProvider =
false;
547 xProps->getPropertyValue(
"EnableDataTableDialog") >>= bEnableDataTableDialog;
549 catch(
const uno::Exception& )
556 OSL_ENSURE(xChartModel.is(),
"Invalid XChartDocument");
557 if ( xChartModel.is() )
559 css::uno::Reference< com::sun::star::chart2::XDataProviderAccess > xCreatorDoc(xChartModel->getParent(), uno::UNO_QUERY);
560 bCanCreateDataProvider = xCreatorDoc.is();
601 bool bFormatObjectAvailable = bIsWritable && bControllerStateIsValid &&
m_apControllerState->bIsFormateableObjectSelected;
673 ( bIsWritable && bControllerStateIsValid &&
m_apControllerState->bMayMoveSeriesForward && bEnableDataTableDialog ) );
675 ( bIsWritable && bControllerStateIsValid &&
m_apControllerState->bMayMoveSeriesBackward && bEnableDataTableDialog ) );
681 const bool bInsertTrendlineEquation = bIsWritable && bControllerStateIsValid &&
m_apControllerState->bMayAddTrendlineEquation;
722 SAL_WARN(
"chart2",
"commandAvailable: command not in availability map:" << rCommand);
734 if ( pShapeController )
743 const OUString & rURL,
746 bool bIsChartSelectorURL = rURL ==
".uno:ChartElementSelector";
747 if( rURL.isEmpty() || bIsChartSelectorURL )
751 fireStatusEventForURL(
".uno:ChartElementSelector", aArg,
true, xSingleListener );
759 else if( !bIsChartSelectorURL )
764 if( rURL.isEmpty() || rURL ==
".uno:StatusBarVisible" )
767 fireStatusEventForURL(
".uno:StatusBarVisible",
uno::Any( bIsStatusBarVisible ),
true, xSingleListener );
773 const util::URL& URL,
800 bool bUpdateCommandAvailability =
false;
806 bUpdateCommandAvailability =
true;
813 bUpdateCommandAvailability =
true;
816 if( bUpdateCommandAvailability )
823 pObjSh->SetModified();
css::uno::Reference< css::frame::XDispatch > m_xDispatch
static SAL_WARN_UNUSED_RESULT SfxViewShell * Current()
static rtl::Reference< ::chart::Axis > getAxis(sal_Int32 nDimensionIndex, bool bMainAxis, const rtl::Reference< ::chart::Diagram > &xDiagram)
static bool isGridShown(sal_Int32 nDimensionIndex, sal_Int32 nCooSysIndex, bool bMainGrid, const rtl::Reference< ::chart::Diagram > &xDiagram)
static bool isObjectDeleteable(const css::uno::Any &rSelection)
static bool isSupportingRegressionProperties(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
static bool isSupportingMainAxis(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount, sal_Int32 nDimensionIndex)
static bool isSupportingStatisticProperties(const rtl::Reference< ::chart::ChartType > &xChartType, sal_Int32 nDimensionCount)
ShapeController * getShapeController()
virtual void SAL_CALL modified(const css::lang::EventObject &aEvent) override
bool commandAvailable(const OUString &rCommand)
bool isShapeControllerCommandAvailable(const OUString &rCommand)
virtual void SAL_CALL modified(const css::lang::EventObject &aEvent) override
virtual void fireStatusEvent(const OUString &rURL, const css::uno::Reference< css::frame::XStatusListener > &xSingleListener) override
void updateCommandAvailability()
virtual void SAL_CALL selectionChanged(const css::lang::EventObject &aEvent) override
ControllerCommandDispatch(const css::uno::Reference< css::uno::XComponentContext > &xContext, ChartController *pController, CommandDispatchContainer *pContainer)
std::map< OUString, bool > m_aCommandAvailability
CommandDispatchContainer * m_pDispatchContainer
std::unique_ptr< impl::ControllerState > m_apControllerState
css::uno::Reference< css::view::XSelectionSupplier > m_xSelectionSupplier
std::unique_ptr< impl::ModelState > m_apModelState
rtl::Reference< ChartController > m_xChartController
virtual void SAL_CALL dispatch(const css::util::URL &URL, const css::uno::Sequence< css::beans::PropertyValue > &Arguments) override
css::uno::Reference< css::frame::XDispatch > m_xDispatch
virtual ~ControllerCommandDispatch() override
virtual void disposing(std::unique_lock< std::mutex > &rGuard) override
is called when this is disposed
void fireStatusEventForURLImpl(const OUString &rURL, const css::uno::Reference< css::frame::XStatusListener > &xSingleListener)
std::map< OUString, css::uno::Any > m_aCommandArguments
virtual void initialize() override
static bool hasLegend(const rtl::Reference< ::chart::Diagram > &xDiagram)
returns <FALSE>, if either there is no legend at the diagram, or there is a legend which has a "Show"...
bool isAutoGeneratedObject() const
static bool isDragableObject(std::u16string_view rClassifiedIdentifier)
static rtl::Reference< ::chart::DataSeries > getDataSeriesForCID(std::u16string_view rObjectCID, const rtl::Reference<::chart::ChartModel > &xChartModel)
const OUString & getObjectCID() const
static css::uno::Reference< css::beans::XPropertySet > getObjectPropertySet(std::u16string_view rObjectCID, const rtl::Reference< ::chart::ChartModel > &xChartDocument)
ObjectType getObjectType() const
static AutoResizeState getAutoResizeState(const rtl::Reference<::chart::ChartModel > &xChartDoc)
Retrieves the state auto-resize from all objects that support this feature.
This is a CommandDispatch implementation for shapes.
virtual FeatureState getState(const OUString &rCommand) override
static rtl::Reference< ::chart::Title > getTitle(eTitleType nTitleIndex, ChartModel &rModel)
#define TOOLS_WARN_EXCEPTION(area, stream)
#define SAL_WARN(area, stream)
OOO_DLLPUBLIC_CHARTTOOLS rtl::Reference< ::chart::ChartType > getChartTypeOfSeries(const rtl::Reference< ::chart::DataSeries > &xSeries, const rtl::Reference< ::chart::Diagram > &xDiagram)
OOO_DLLPUBLIC_CHARTTOOLS bool MayHaveCorrelationCoefficient(const css::uno::Reference< css::chart2::XRegressionCurve > &xCurve)
OOO_DLLPUBLIC_CHARTTOOLS bool hasMeanValueLine(const css::uno::Reference< css::chart2::XRegressionCurveContainer > &xRegCnt)
OOO_DLLPUBLIC_CHARTTOOLS bool hasEquation(const css::uno::Reference< css::chart2::XRegressionCurve > &xCurve)
OOO_DLLPUBLIC_CHARTTOOLS bool hasErrorBars(const rtl::Reference< ::chart::DataSeries > &xDataSeries, bool bYError=true)
::cppu::ImplInheritanceHelper< CommandDispatch, css::view::XSelectionChangeListener > ControllerCommandDispatch_Base
@ OBJECTTYPE_DATA_ERRORS_X
@ OBJECTTYPE_DIAGRAM_FLOOR
@ OBJECTTYPE_DATA_ERRORS_Y
@ OBJECTTYPE_DATA_CURVE_EQUATION
@ OBJECTTYPE_DATA_AVERAGE_LINE
@ OBJECTTYPE_DIAGRAM_WALL
Represents the current state of the controller (needed for issue 63017).
bool bMayAddMenuTrendline
void update(const Reference< frame::XController > &xController, const rtl::Reference<::chart::ChartModel > &xModel)
bool bIsFormateableObjectSelected
bool bMayFormatXErrorBars
bool bMayMoveSeriesForward
bool bIsPositionableObject
bool bMayFormatYErrorBars
bool bMayMoveSeriesBackward
bool bMayAddTrendlineEquation
bool bMayDeleteYErrorBars
bool bMayFormatTrendlineEquation
bool bIsDeleteableObjectSelected
bool bMayDeleteTrendlineEquation
bool bMayDeleteXErrorBars
Represents the current state of the model.
bool bHasSecondaryXAxisTitle
bool bHasDataFromPivotTable
void update(const rtl::Reference<::chart::ChartModel > &xModel)
bool bHasSecondaryYAxisTitle
Reference< XController > xController
Reference< XModel > xModel