Coverage Report

Created: 2026-07-10 11:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/chart2/source/controller/inc/ChartController.hxx
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
 * This file is part of the LibreOffice project.
4
 *
5
 * This Source Code Form is subject to the terms of the Mozilla Public
6
 * License, v. 2.0. If a copy of the MPL was not distributed with this
7
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
 *
9
 * This file incorporates work covered by the following license notice:
10
 *
11
 *   Licensed to the Apache Software Foundation (ASF) under one or more
12
 *   contributor license agreements. See the NOTICE file distributed
13
 *   with this work for additional information regarding copyright
14
 *   ownership. The ASF licenses this file to you under the Apache
15
 *   License, Version 2.0 (the "License"); you may not use this file
16
 *   except in compliance with the License. You may obtain a copy of
17
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18
 */
19
#pragma once
20
21
#include <LifeTime.hxx>
22
#include <ReferenceSizeProvider.hxx>
23
#include "AccessibleChartView.hxx"
24
#include "CommandDispatchContainer.hxx"
25
#include "SelectionHelper.hxx"
26
27
#include <svx/svdtypes.hxx>
28
#include <vcl/timer.hxx>
29
30
#include <cppuhelper/implbase.hxx>
31
#include <o3tl/sorted_vector.hxx>
32
#include <salhelper/simplereferenceobject.hxx>
33
34
#include <com/sun/star/frame/XDispatchProvider.hpp>
35
#include <com/sun/star/ui/XContextMenuInterception.hpp>
36
#include <com/sun/star/util/XModeChangeListener.hpp>
37
#include <com/sun/star/util/XCloseListener.hpp>
38
#include <com/sun/star/util/XModifyListener.hpp>
39
#include <com/sun/star/frame/XController2.hpp>
40
#include <com/sun/star/frame/XLayoutManagerListener.hpp>
41
#include <com/sun/star/lang/XServiceInfo.hpp>
42
43
#include <memory>
44
#include <string_view>
45
46
namespace com::sun::star::awt { class XWindow; }
47
namespace com::sun::star::awt { struct Point; }
48
namespace com::sun::star::document { class XUndoManager; }
49
namespace com::sun::star::frame { class XDispatch; }
50
namespace com::sun::star::frame { class XLayoutManagerEventBroadcaster; }
51
namespace com::sun::star::graphic { class XGraphic; }
52
namespace com::sun::star::uno { class XComponentContext; }
53
namespace com::sun::star::view { class XSelectionSupplier; }
54
55
class SdrModel;
56
57
namespace svt
58
{
59
    class AcceleratorExecute;
60
}
61
62
namespace svx::sidebar {
63
    class SelectionChangeHandler;
64
}
65
66
namespace weld {
67
    class Window;
68
}
69
70
class DropTargetHelper;
71
72
namespace chart
73
{
74
75
class UndoGuard;
76
class ChartView;
77
class ChartWindow;
78
class DrawModelWrapper;
79
class DrawViewWrapper;
80
class ViewElementListProvider;
81
class Diagram;
82
class AccessibleTextHelper;
83
84
enum ChartDrawMode { CHARTDRAW_INSERT, CHARTDRAW_SELECT };
85
86
87
class ChartController final : public ::cppu::WeakImplHelper <
88
         css::frame::XController2   //comprehends XComponent (css::frame::XController is required interface)
89
        ,css::frame::XDispatchProvider     //(required interface)
90
        ,css::view::XSelectionSupplier     //(optional interface)
91
        ,css::ui::XContextMenuInterception //(optional interface)
92
        ,css::util::XCloseListener         //(needed for communication with XModel)
93
        ,css::frame::XDispatch
94
        ,css::awt::XWindow //this is the Window Controller part of this Controller, that will be given to a Frame via setComponent
95
        ,css::util::XModifyListener
96
        ,css::util::XModeChangeListener
97
        ,css::frame::XLayoutManagerListener
98
        >
99
{
100
public:
101
    ChartController() = delete;
102
    explicit ChartController(css::uno::Reference< css::uno::XComponentContext > xContext);
103
    virtual ~ChartController() override;
104
105
    OUString GetContextName();
106
107
    // css::frame::XController (required interface)
108
    virtual void SAL_CALL
109
        attachFrame( const css::uno::Reference< css::frame::XFrame > & xFrame ) override;
110
111
    virtual sal_Bool SAL_CALL
112
        attachModel( const css::uno::Reference< css::frame::XModel > & xModel ) override;
113
114
    virtual css::uno::Reference< css::frame::XFrame > SAL_CALL
115
        getFrame() override;
116
117
    virtual css::uno::Reference< css::frame::XModel > SAL_CALL
118
        getModel() override;
119
120
    virtual css::uno::Any SAL_CALL
121
        getViewData() override;
122
123
    virtual void SAL_CALL
124
        restoreViewData( const css::uno::Any& rValue ) override;
125
126
    virtual sal_Bool SAL_CALL
127
        suspend( sal_Bool bSuspend ) override;
128
129
    // css::frame::XController2
130
    virtual css::uno::Reference<css::awt::XWindow> SAL_CALL getComponentWindow() override;
131
    virtual OUString SAL_CALL getViewControllerName() override;
132
    virtual css::uno::Sequence<css::beans::PropertyValue> SAL_CALL getCreationArguments() override;
133
    virtual css::uno::Reference<css::ui::XSidebarProvider> SAL_CALL getSidebar() override;
134
135
    // css::lang::XComponent (base of XController)
136
    virtual void SAL_CALL
137
        dispose() override;
138
139
    virtual void SAL_CALL
140
        addEventListener( const css::uno::Reference< css::lang::XEventListener > & xListener ) override;
141
142
    virtual void SAL_CALL
143
        removeEventListener( const css::uno::Reference< css::lang::XEventListener > & xListener ) override;
144
145
    // css::frame::XDispatchProvider (required interface)
146
    virtual css::uno::Reference< css::frame::XDispatch> SAL_CALL
147
        queryDispatch( const css::util::URL& rURL
148
                            , const OUString& rTargetFrameName
149
                            , sal_Int32 nSearchFlags) override;
150
151
    virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL
152
        queryDispatches( const css::uno::Sequence< css::frame::DispatchDescriptor > & xDescripts) override;
153
154
    // css::view::XSelectionSupplier (optional interface)
155
    virtual sal_Bool SAL_CALL
156
        select( const css::uno::Any& rSelection ) override;
157
158
    virtual css::uno::Any  SAL_CALL
159
        getSelection() override;
160
161
    virtual void SAL_CALL
162
        addSelectionChangeListener( const css::uno::Reference< css::view::XSelectionChangeListener > & xListener ) override;
163
164
    virtual void SAL_CALL
165
        removeSelectionChangeListener( const css::uno::Reference< css::view::XSelectionChangeListener > & xListener ) override;
166
167
    // css::ui::XContextMenuInterception (optional interface)
168
    virtual void SAL_CALL
169
        registerContextMenuInterceptor( const css::uno::Reference< css::ui::XContextMenuInterceptor > & xInterceptor) override;
170
171
    virtual void SAL_CALL
172
        releaseContextMenuInterceptor( const css::uno::Reference< css::ui::XContextMenuInterceptor > & xInterceptor) override;
173
174
    //additional interfaces
175
176
    // css::util::XCloseListener
177
    virtual void SAL_CALL
178
        queryClosing( const css::lang::EventObject& Source
179
                            , sal_Bool GetsOwnership ) override;
180
181
    virtual void SAL_CALL
182
        notifyClosing( const css::lang::EventObject& Source ) override;
183
184
    // css::util::XEventListener (base of XCloseListener and XModifyListener)
185
    virtual void SAL_CALL
186
        disposing( const css::lang::EventObject& Source ) override;
187
188
    // css::frame::XDispatch
189
190
    virtual void SAL_CALL
191
        dispatch( const css::util::URL& aURL
192
                    , const css::uno::Sequence< css::beans::PropertyValue >& aArgs ) override;
193
194
    virtual void SAL_CALL
195
        addStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xControl
196
                    , const css::util::URL& aURL ) override;
197
198
    virtual void SAL_CALL
199
        removeStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xControl
200
                    , const css::util::URL& aURL ) override;
201
202
    // css::awt::XWindow
203
    virtual void SAL_CALL
204
        setPosSize( sal_Int32 X, sal_Int32 Y
205
                    , sal_Int32 Width, sal_Int32 Height, sal_Int16 Flags ) override;
206
207
    virtual css::awt::Rectangle SAL_CALL
208
        getPosSize() override;
209
210
    virtual void SAL_CALL
211
        setVisible( sal_Bool Visible ) override;
212
213
    virtual void SAL_CALL
214
        setEnable( sal_Bool Enable ) override;
215
216
    virtual void SAL_CALL
217
        setFocus() override;
218
219
    virtual void SAL_CALL
220
        addWindowListener( const css::uno::Reference< css::awt::XWindowListener >& xListener ) override;
221
222
    virtual void SAL_CALL
223
        removeWindowListener( const css::uno::Reference< css::awt::XWindowListener >& xListener ) override;
224
225
    virtual void SAL_CALL
226
        addFocusListener( const css::uno::Reference< css::awt::XFocusListener >& xListener ) override;
227
228
    virtual void SAL_CALL
229
        removeFocusListener( const css::uno::Reference< css::awt::XFocusListener >& xListener ) override;
230
231
    virtual void SAL_CALL
232
        addKeyListener( const css::uno::Reference< css::awt::XKeyListener >& xListener ) override;
233
234
    virtual void SAL_CALL
235
        removeKeyListener( const css::uno::Reference< css::awt::XKeyListener >& xListener ) override;
236
237
    virtual void SAL_CALL
238
        addMouseListener( const css::uno::Reference< css::awt::XMouseListener >& xListener ) override;
239
240
    virtual void SAL_CALL
241
        removeMouseListener( const css::uno::Reference< css::awt::XMouseListener >& xListener ) override;
242
243
    virtual void SAL_CALL
244
        addMouseMotionListener( const css::uno::Reference< css::awt::XMouseMotionListener >& xListener ) override;
245
246
    virtual void SAL_CALL
247
        removeMouseMotionListener( const css::uno::Reference< css::awt::XMouseMotionListener >& xListener ) override;
248
249
    virtual void SAL_CALL
250
        addPaintListener( const css::uno::Reference< css::awt::XPaintListener >& xListener ) override;
251
252
    virtual void SAL_CALL
253
        removePaintListener( const css::uno::Reference< css::awt::XPaintListener >& xListener ) override;
254
255
    // css::util::XModifyListener
256
    virtual void SAL_CALL modified(
257
        const css::lang::EventObject& aEvent ) override;
258
259
    // css::util::XModeChangeListener
260
    virtual void SAL_CALL modeChanged(
261
        const css::util::ModeChangeEvent& _rSource ) override;
262
263
    // css::frame::XLayoutManagerListener
264
    virtual void SAL_CALL layoutEvent(
265
        const css::lang::EventObject& aSource,
266
        ::sal_Int16 eLayoutEvent,
267
        const css::uno::Any& aInfo ) override;
268
269
    // WindowController stuff
270
    void PrePaint();
271
    void execute_Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect);
272
    void execute_MouseButtonDown( const MouseEvent& rMEvt );
273
    void execute_MouseMove( const MouseEvent& rMEvt );
274
    void execute_MouseButtonUp( const MouseEvent& rMEvt );
275
    void execute_Resize();
276
    void execute_Command( const CommandEvent& rCEvt );
277
    bool execute_KeyInput( const KeyEvent& rKEvt );
278
279
    /** get help text to be shown in a quick help
280
281
        @param aAtLogicPosition the position in logic coordinates (of the
282
                                window) of the mouse cursor to determine for
283
                                which object help is requested.
284
285
        @param bIsBalloonHelp determines whether to return the long text version
286
                              (balloon help) or the shorter one (quick help).
287
288
        @param rOutQuickHelpText is filled with the quick help text
289
290
        @param rOutEqualRect is filled with a rectangle that denotes the region
291
                             in which the quick help does not change.
292
293
        @return </sal_True>, if a quick help should be shown.
294
     */
295
    bool requestQuickHelp(
296
        ::Point aAtLogicPosition, bool bIsBalloonHelp,
297
        OUString & rOutQuickHelpText, css::awt::Rectangle & rOutEqualRect );
298
299
    rtl::Reference<AccessibleChartView> CreateAccessible();
300
301
    /** Creates a helper accessibility class that must be initialized via initialize().  For
302
        parameters see
303
304
        The returned object should not be used directly.  Instead a proxy object
305
        should use this helper to retrieve its children and add them to its own
306
        children.
307
     */
308
    rtl::Reference< ::chart::AccessibleTextHelper > createAccessibleTextContext();
309
310
    static bool isObjectDeleteable( const css::uno::Any& rSelection );
311
312
0
    void setDrawMode( ChartDrawMode eMode ) { m_eDrawMode = eMode; }
313
314
    bool isShapeContext() const;
315
    bool IsTextEdit() const;
316
317
    ViewElementListProvider getViewElementListProvider();
318
    DrawModelWrapper* GetDrawModelWrapper();
319
    DrawViewWrapper* GetDrawViewWrapper();
320
    ChartWindow* GetChartWindow() const;
321
    weld::Window* GetChartFrame();
322
    bool isAdditionalShapeSelected() const;
323
    void SetAndApplySelection(const css::uno::Reference<css::drawing::XShape>& rxShape);
324
    void StartTextEdit( const Point* pMousePixel = nullptr );
325
326
    void NotifyUndoActionHdl( std::unique_ptr<SdrUndoAction> );
327
328
0
    rtl::Reference<::chart::ChartView> const & getChartView() const { return m_xChartView; }
329
330
    rtl::Reference<::chart::ChartModel> getChartModel();
331
    rtl::Reference<::chart::Diagram> getFirstDiagram();
332
333
0
    const Selection& getSelectionMember() const { return m_aSelection; }
334
335
private:
336
    class TheModel : public salhelper::SimpleReferenceObject
337
    {
338
        public:
339
            explicit TheModel( rtl::Reference<::chart::ChartModel> xModel );
340
341
            virtual ~TheModel() override;
342
343
            void        addListener( ChartController* pController );
344
            void        removeListener(  ChartController* pController );
345
            void        tryTermination();
346
            const rtl::Reference<::chart::ChartModel>&
347
0
                        getModel() const { return m_xModel;}
348
349
        private:
350
            rtl::Reference<::chart::ChartModel>     m_xModel;
351
352
            //the ownership between model and controller is not clear at first
353
            //each controller might consider himself as owner of the model first
354
            bool m_bOwnership;
355
    };
356
    class TheModelRef final
357
    {
358
        public:
359
            TheModelRef( TheModel* pTheModel, ::osl::Mutex& rMutex );
360
            TheModelRef( const TheModelRef& rTheModel, ::osl::Mutex& rMutex );
361
            TheModelRef& operator=(ChartController::TheModel* pTheModel);
362
            TheModelRef& operator=(const TheModelRef& rTheModel);
363
            ~TheModelRef();
364
            bool is() const;
365
0
            TheModel* operator->() const { return m_xTheModel.get(); }
366
        private:
367
            rtl::Reference<TheModel>  m_xTheModel;
368
            ::osl::Mutex&             m_rModelMutex;
369
    };
370
371
    mutable ::apphelper::LifeTimeManager m_aLifeTimeManager;
372
373
    bool m_bSuspended;
374
375
    css::uno::Reference< css::uno::XComponentContext> m_xCC;
376
377
    //model
378
    css::uno::Reference< css::frame::XFrame > m_xFrame;
379
    mutable ::osl::Mutex m_aModelMutex;
380
    TheModelRef m_aModel;
381
382
    //view
383
    css::uno::Reference<css::awt::XWindow> m_xViewWindow;
384
    rtl::Reference<::chart::ChartView> m_xChartView;
385
    std::shared_ptr< DrawModelWrapper > m_pDrawModelWrapper;
386
    std::unique_ptr<DrawViewWrapper> m_pDrawViewWrapper;
387
388
    Selection m_aSelection;
389
    SdrDragMode m_eDragMode;
390
391
    Timer m_aDoubleClickTimer;
392
    bool m_bWaitingForDoubleClick;
393
    bool m_bWaitingForMouseUp;
394
    bool m_bFieldButtonDown;
395
396
    bool m_bConnectingToView;
397
    bool m_bDisposed;
398
399
    css::uno::Reference< css::document::XUndoManager > m_xUndoManager;
400
    std::unique_ptr< UndoGuard > m_pTextActionUndoGuard;
401
402
    std::unique_ptr< ::svt::AcceleratorExecute > m_apAccelExecute;
403
404
    CommandDispatchContainer m_aDispatchContainer;
405
406
    std::unique_ptr< DropTargetHelper > m_apDropTargetHelper;
407
    css::uno::Reference<
408
            css::frame::XLayoutManagerEventBroadcaster > m_xLayoutManagerEventBroadcaster;
409
410
    ChartDrawMode m_eDrawMode;
411
412
    rtl::Reference<svx::sidebar::SelectionChangeHandler> mpSelectionChangeHandler;
413
414
    bool impl_isDisposedOrSuspended() const;
415
    ReferenceSizeProvider impl_createReferenceSizeProvider();
416
    void impl_adaptDataSeriesAutoResize();
417
418
    void impl_createDrawViewController();
419
    void impl_deleteDrawViewController();
420
421
    //executeDispatch methods
422
    void executeDispatch_ObjectProperties();
423
    void executeDispatch_FormatObject( std::u16string_view rDispatchCommand );
424
    void executeDlg_ObjectProperties( const OUString& rObjectCID );
425
    void executeDlg_ObjectProperties_withUndoGuard( std::shared_ptr<UndoGuard> aUndoGuard, const OUString& rObjectCID, bool bSuccessOnUnchanged );
426
427
    void executeDispatch_ChartType();
428
429
    void executeDispatch_InsertTitles();
430
    void executeDispatch_InsertLegend();
431
    void executeDispatch_DeleteLegend();
432
    void executeDispatch_OpenLegendDialog();
433
    void executeDispatch_InsertAxes();
434
    void executeDispatch_InsertGrid();
435
436
    void executeDispatch_InsertDataTable();
437
    void executeDispatch_DeleteDataTable();
438
    void executeDispatch_OpenInsertDataTableDialog();
439
440
    void executeDispatch_InsertMenu_DataLabels();
441
    void executeDispatch_InsertMenu_Trendlines();
442
    void executeDispatch_InsertMenu_MeanValues();
443
444
    void executeDispatch_InsertMeanValue();
445
    void executeDispatch_InsertTrendline();
446
    void executeDispatch_InsertTrendlineEquation( bool bInsertR2=false );
447
    void executeDispatch_InsertErrorBars( bool bYError );
448
449
    void executeDispatch_InsertR2Value();
450
    void executeDispatch_DeleteR2Value();
451
452
    void executeDispatch_DeleteMeanValue();
453
    void executeDispatch_DeleteTrendline();
454
    void executeDispatch_DeleteTrendlineEquation();
455
    void executeDispatch_DeleteErrorBars( bool bYError );
456
457
    void executeDispatch_InsertDataLabels();
458
    void executeDispatch_InsertDataLabel();
459
    void executeDispatch_DeleteDataLabels();
460
    void executeDispatch_DeleteDataLabel();
461
462
    void executeDispatch_ResetAllDataPoints();
463
    void executeDispatch_ResetDataPoint();
464
465
    void executeDispatch_InsertAxis();
466
    void executeDispatch_InsertAxisTitle();
467
    void executeDispatch_InsertMajorGrid();
468
    void executeDispatch_InsertMinorGrid();
469
    void executeDispatch_DeleteAxis();
470
    void executeDispatch_DeleteMajorGrid();
471
    void executeDispatch_DeleteMinorGrid();
472
473
    void executeDispatch_InsertSpecialCharacter();
474
    void executeDispatch_EditText( const Point* pMousePixel = nullptr );
475
    void executeDispatch_SourceData();
476
    void executeDispatch_MoveSeries( bool bForward );
477
478
    bool EndTextEdit();
479
    css::uno::Sequence< css::uno::Reference<css::chart2::XFormattedString >> GetFormattedTitle(
480
        const EditTextObject& aEdit, const css::uno::Reference< css::drawing::XShape >& xShape );
481
482
    void executeDispatch_View3D();
483
    void executeDispatch_PositionAndSize( const ::css::uno::Sequence< ::css::beans::PropertyValue >* pArgs = nullptr );
484
485
    void executeDispatch_EditData();
486
487
    void executeDispatch_NewArrangement();
488
    void executeDispatch_ScaleText();
489
490
    static void executeDispatch_FontBold(
491
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
492
    static void executeDispatch_FontName(
493
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties,
494
        const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
495
    static void executeDispatch_FontHeight(
496
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties,
497
        const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
498
    static void executeDispatch_FontItalic(
499
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
500
    static void executeDispatch_FontUnderline(
501
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties,
502
        const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
503
    static void executeDispatch_FontStrikeout(
504
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
505
    static void executeDispatch_FontShadowed(
506
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
507
    static void executeDispatch_FontColor(
508
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties,
509
        const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
510
    static void executeDispatch_FontGrow(
511
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
512
    static void executeDispatch_FontShrink(
513
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
514
    static void executeDispatch_FontReset(
515
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
516
    static void executeDispatch_FontSpacing(
517
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties,
518
        const css::uno::Sequence<css::beans::PropertyValue>& rArgs);
519
    static void executeDispatch_FontSuperScript(
520
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
521
    static void executeDispatch_FontSubScript(
522
        const std::vector<css::uno::Reference<css::beans::XPropertySet>>& xProperties);
523
524
    void executeDispatch_Paste();
525
    void executeDispatch_Copy();
526
    void executeDispatch_Cut();
527
    bool executeDispatch_Delete();
528
    void executeDispatch_ToggleLegend();
529
    void executeDispatch_ToggleGridHorizontal();
530
    void executeDispatch_ToggleGridVertical();
531
532
    void executeDispatch_LOKSetTextSelection(int nType, int nX, int nY);
533
    void executeDispatch_LOKPieSegmentDragging(int nOffset);
534
    void executeDispatch_FillColor(const css::uno::Any& rColor);
535
    void executeDispatch_FillGradient(std::u16string_view sJSONGradient);
536
    void executeDispatch_LineColor(const css::uno::Any& rColor);
537
    void executeDispatch_LineWidth(const css::uno::Any& rWidth);
538
539
    void sendPopupRequest(std::u16string_view rCID, tools::Rectangle aRectangle);
540
541
    void impl_ShapeControllerDispatch( const css::util::URL& rURL,
542
        const css::uno::Sequence< css::beans::PropertyValue >& rArgs );
543
544
    DECL_LINK( DoubleClickWaitingHdl, Timer*, void );
545
    void execute_DoubleClick( const Point* pMousePixel, bool &bEditText );
546
    void startDoubleClickWaiting();
547
    void stopDoubleClickWaiting();
548
549
    void impl_selectObjectAndNotiy();
550
    void impl_notifySelectionChangeListeners();
551
    void impl_invalidateAccessible();
552
    void impl_initializeAccessible();
553
    void impl_initializeAccessible( AccessibleChartView& xInit );
554
555
    //sets the model member to null if it equals the parameter
556
    //returns true if successful
557
    bool impl_releaseThisModel( const css::uno::Reference< css::uno::XInterface > & xModel );
558
559
    enum eMoveOrResizeType
560
    {
561
        MOVE_OBJECT,
562
        CENTERED_RESIZE_OBJECT
563
    };
564
    /// @return </sal_True>, if resize/move was successful
565
    bool impl_moveOrResizeObject(
566
        const OUString & rCID, eMoveOrResizeType eType, double fAmountLogicX, double fAmountLogicY );
567
    bool impl_DragDataPoint( std::u16string_view rCID, double fOffset );
568
569
    static const o3tl::sorted_vector< std::u16string_view >& impl_getAvailableCommands();
570
571
    void impl_PasteGraphic( css::uno::Reference< css::graphic::XGraphic > const & xGraphic,
572
                            const ::Point & aPosition );
573
    void impl_PasteShapes( SdrModel* pModel );
574
    void impl_PasteStringAsTextShape( const OUString& rString, const css::awt::Point& rPosition );
575
    void impl_SetMousePointer( const MouseEvent & rEvent );
576
577
    void impl_ClearSelection();
578
579
    void impl_switchDiagramPositioningToExcludingPositioning();
580
};
581
582
}  // namespace chart
583
584
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */