1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 #ifndef INCLUDED_SW_SOURCE_UIBASE_INC_FRAMECONTROL_HXX
10 #define INCLUDED_SW_SOURCE_UIBASE_INC_FRAMECONTROL_HXX
12 #include <vcl/InterimItemWindow.hxx>
13 #include <vcl/virdev.hxx>
22 /// Abstract interface to be implemented by writer FrameControls
23 class SAL_LOPLUGIN_ANNOTATE("crosscast") ISwFrameControl
26 virtual ~ISwFrameControl();
27 virtual void SetReadonly( bool bReadonly
) = 0;
28 virtual void ShowAll( bool bShow
) = 0;
30 /// Returns true if the point is inside the control.
31 virtual bool Contains( const Point
&rDocPt
) const = 0;
33 virtual const SwFrame
* GetFrame() = 0;
34 virtual SwEditWin
* GetEditWin() = 0;
37 class SwFrameControl final
39 VclPtr
<vcl::Window
> mxWindow
;
40 ISwFrameControl
*mpIFace
;
42 SwFrameControl( const VclPtr
<vcl::Window
> &pWindow
);
45 vcl::Window
* GetWindow() { return mxWindow
.get(); }
46 ISwFrameControl
* GetIFacePtr() { return mpIFace
; }
48 void SetReadonly( bool bReadonly
) { mpIFace
->SetReadonly( bReadonly
); }
49 void ShowAll( bool bShow
) { mpIFace
->ShowAll( bShow
); }
50 bool Contains( const Point
&rDocPt
) const { return mpIFace
->Contains( rDocPt
); }
53 /** Class sharing some MenuButton code
55 class SwFrameMenuButtonBase
: public InterimItemWindow
, public ISwFrameControl
58 VclPtr
<VirtualDevice
> m_xVirDev
;
60 VclPtr
<SwEditWin
> m_pEditWin
;
61 const SwFrame
* m_pFrame
;
64 virtual ~SwFrameMenuButtonBase() override
{ disposeOnce(); }
65 virtual void dispose() override
;
70 SwFrameMenuButtonBase(SwEditWin
* pEditWin
, const SwFrame
* pFrame
,
71 const OUString
& rUIXMLDescription
, const OUString
& rID
);
73 virtual const SwFrame
* GetFrame() override
{ return m_pFrame
; }
74 virtual SwEditWin
* GetEditWin() override
{ return m_pEditWin
; }
75 const SwPageFrame
* GetPageFrame() const;
77 static const SwPageFrame
* GetPageFrame(const SwFrame
* pFrame
);
78 static void SetVirDevFont(OutputDevice
& rDevice
);
83 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */