xref: /aoo4110/main/sw/inc/SidebarWin.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _SIDEBARWIN_HXX
25*b1cdbd2cSJim Jagielski #define _SIDEBARWIN_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <postithelper.hxx>
28*b1cdbd2cSJim Jagielski #include <SidebarWindowsTypes.hxx>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <vcl/window.hxx>
31*b1cdbd2cSJim Jagielski #include <swrect.hxx>
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #include <tools/datetime.hxx>
34*b1cdbd2cSJim Jagielski #include <tools/date.hxx>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #include <vcl/lineinfo.hxx>
37*b1cdbd2cSJim Jagielski #include <basegfx/polygon/b2dpolygon.hxx>
38*b1cdbd2cSJim Jagielski #include <editeng/editstat.hxx>
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski class SwPostItMgr;
41*b1cdbd2cSJim Jagielski class SwPostItField;
42*b1cdbd2cSJim Jagielski class OutlinerView;
43*b1cdbd2cSJim Jagielski class Outliner;
44*b1cdbd2cSJim Jagielski class ScrollBar;
45*b1cdbd2cSJim Jagielski class SwEditWin;
46*b1cdbd2cSJim Jagielski class SwView;
47*b1cdbd2cSJim Jagielski class Edit;
48*b1cdbd2cSJim Jagielski class MenuButton;
49*b1cdbd2cSJim Jagielski class SwFrm;
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski namespace sw { namespace overlay {
52*b1cdbd2cSJim Jagielski     class OverlayRanges;
53*b1cdbd2cSJim Jagielski }}
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski namespace sw { namespace sidebarwindows {
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski class SidebarTxtControl;
58*b1cdbd2cSJim Jagielski class AnchorOverlayObject;
59*b1cdbd2cSJim Jagielski class ShadowOverlayObject;
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski typedef sal_Int64 SwPostItBits;
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski #define PB_Preview ((SwPostItBits)0x00000001)
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski class SwSidebarWin : public Window
67*b1cdbd2cSJim Jagielski {
68*b1cdbd2cSJim Jagielski     public:
69*b1cdbd2cSJim Jagielski         SwSidebarWin( SwEditWin& rEditWin,
70*b1cdbd2cSJim Jagielski                       WinBits nBits,
71*b1cdbd2cSJim Jagielski                       SwPostItMgr& aMgr,
72*b1cdbd2cSJim Jagielski                       SwPostItBits aBits,
73*b1cdbd2cSJim Jagielski                       SwSidebarItem& rSidebarItem );
74*b1cdbd2cSJim Jagielski         virtual ~SwSidebarWin();
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski         void SetSize( const Size& rNewSize );
77*b1cdbd2cSJim Jagielski         void SetPosSizePixelRect( long nX,
78*b1cdbd2cSJim Jagielski                                   long nY,
79*b1cdbd2cSJim Jagielski                                   long nWidth,
80*b1cdbd2cSJim Jagielski                                   long nHeight,
81*b1cdbd2cSJim Jagielski                                   const SwRect& aAnchorRect,
82*b1cdbd2cSJim Jagielski                                   const long PageBorder);
83*b1cdbd2cSJim Jagielski         void SetPosAndSize();
84*b1cdbd2cSJim Jagielski         void TranslateTopPosition(const long aAmount);
85*b1cdbd2cSJim Jagielski         virtual void CheckMetaText();
86*b1cdbd2cSJim Jagielski 
GetAnchorPos()87*b1cdbd2cSJim Jagielski         inline Point GetAnchorPos() { return mAnchorRect.Pos(); }
88*b1cdbd2cSJim Jagielski         SwEditWin* EditWin();
89*b1cdbd2cSJim Jagielski 
GetOutlinerView()90*b1cdbd2cSJim Jagielski         inline OutlinerView* GetOutlinerView() { return mpOutlinerView;}
91*b1cdbd2cSJim Jagielski         bool HasScrollbar() const;
92*b1cdbd2cSJim Jagielski         bool IsScrollbarVisible() const;
Scrollbar()93*b1cdbd2cSJim Jagielski         inline ScrollBar* Scrollbar() { return mpVScrollbar; }
Anchor()94*b1cdbd2cSJim Jagielski         inline ::sw::sidebarwindows::AnchorOverlayObject* Anchor() { return mpAnchor;}
Shadow()95*b1cdbd2cSJim Jagielski         inline ::sw::sidebarwindows::ShadowOverlayObject* Shadow() { return mpShadow;}
TextRange()96*b1cdbd2cSJim Jagielski         inline ::sw::overlay::OverlayRanges* TextRange() { return mpTextRangeOverlay;}
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski         long            GetPostItTextHeight();
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski         void            SwitchToPostIt(sal_uInt16 aDirection);
101*b1cdbd2cSJim Jagielski         virtual void    SwitchToFieldPos();
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski         virtual sal_uInt32 MoveCaret() = 0;
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski         virtual void    UpdateData() = 0;
106*b1cdbd2cSJim Jagielski         virtual void    SetPostItText() = 0;
107*b1cdbd2cSJim Jagielski         virtual void    Delete();
108*b1cdbd2cSJim Jagielski         virtual void    GotoPos() = 0;
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski         virtual String  GetAuthor() = 0;
111*b1cdbd2cSJim Jagielski         virtual Date    GetDate() = 0;
112*b1cdbd2cSJim Jagielski         virtual Time    GetTime() = 0;
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski         void            ExecuteCommand(sal_uInt16 nSlot);
115*b1cdbd2cSJim Jagielski         void            InitControls();
116*b1cdbd2cSJim Jagielski         void            HidePostIt();
117*b1cdbd2cSJim Jagielski         void            DoResize();
118*b1cdbd2cSJim Jagielski         void            ResizeIfNeccessary(long aOldHeight, long aNewHeight);
119*b1cdbd2cSJim Jagielski         void            SetScrollbar();
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski         void            SetVirtualPosSize( const Point& aPoint, const Size& aSize);
VirtualPos()122*b1cdbd2cSJim Jagielski         const Point     VirtualPos()	{ return mPosSize.TopLeft(); }
VirtualSize()123*b1cdbd2cSJim Jagielski         const Size      VirtualSize()	{ return mPosSize.GetSize(); }
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski         void            ShowAnchorOnly(const Point &aPoint);
126*b1cdbd2cSJim Jagielski         void            ShowNote();
127*b1cdbd2cSJim Jagielski         void            HideNote();
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski         void            ResetAttributes();
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski         void            SetSidebarPosition(sw::sidebarwindows::SidebarPosition eSidebarPosition);
132*b1cdbd2cSJim Jagielski         void            SetReadonly(sal_Bool bSet);
IsReadOnly()133*b1cdbd2cSJim Jagielski         sal_Bool        IsReadOnly()
134*b1cdbd2cSJim Jagielski         {
135*b1cdbd2cSJim Jagielski             return mbReadonly;
136*b1cdbd2cSJim Jagielski         }
IsPreview()137*b1cdbd2cSJim Jagielski         bool            IsPreview()
138*b1cdbd2cSJim Jagielski         {
139*b1cdbd2cSJim Jagielski             return nFlags & PB_Preview;
140*b1cdbd2cSJim Jagielski         }
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski         void         SetColor(Color aColorDark,Color aColorLight, Color aColorAnchor);
ColorAnchor()143*b1cdbd2cSJim Jagielski         const Color& ColorAnchor() { return mColorAnchor; }
ColorDark()144*b1cdbd2cSJim Jagielski         const Color& ColorDark() { return mColorDark; }
ColorLight()145*b1cdbd2cSJim Jagielski         const Color& ColorLight() { return mColorLight; }
146*b1cdbd2cSJim Jagielski         void         Rescale();
147*b1cdbd2cSJim Jagielski 
148*b1cdbd2cSJim Jagielski         void            SetViewState(::sw::sidebarwindows::ViewState bViewState);
149*b1cdbd2cSJim Jagielski 
IsFollow()150*b1cdbd2cSJim Jagielski         bool            IsFollow() { return mbIsFollow; }
SetFollow(bool bIsFollow)151*b1cdbd2cSJim Jagielski         void            SetFollow( bool bIsFollow) { mbIsFollow = bIsFollow; };
152*b1cdbd2cSJim Jagielski         virtual bool    CalcFollow() = 0;
153*b1cdbd2cSJim Jagielski 
154*b1cdbd2cSJim Jagielski         sal_Int32   GetMetaHeight();
155*b1cdbd2cSJim Jagielski         sal_Int32   GetMinimumSizeWithMeta();
156*b1cdbd2cSJim Jagielski         sal_Int32   GetMinimumSizeWithoutMeta();
157*b1cdbd2cSJim Jagielski         sal_Int32   GetMetaButtonAreaWidth();
158*b1cdbd2cSJim Jagielski         sal_Int32   GetScrollbarWidth();
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski         void    SetSpellChecking();
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski         void    ToggleInsMode();
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski         virtual void    ActivatePostIt();
165*b1cdbd2cSJim Jagielski         virtual void    DeactivatePostIt();
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski         void SetChangeTracking( const SwPostItHelper::SwLayoutStatus aStatus,
168*b1cdbd2cSJim Jagielski                                 const Color& aColor);
GetLayoutStatus()169*b1cdbd2cSJim Jagielski         SwPostItHelper::SwLayoutStatus GetLayoutStatus() { return mLayoutStatus; }
GetChangeColor()170*b1cdbd2cSJim Jagielski         Color GetChangeColor() { return mChangeColor; }
171*b1cdbd2cSJim Jagielski 
IsProtected()172*b1cdbd2cSJim Jagielski         virtual bool IsProtected()
173*b1cdbd2cSJim Jagielski         {
174*b1cdbd2cSJim Jagielski             return mbReadonly;
175*b1cdbd2cSJim Jagielski         }
176*b1cdbd2cSJim Jagielski 
177*b1cdbd2cSJim Jagielski         DECL_LINK( WindowEventListener, VclSimpleEvent* );
IsMouseOverSidebarWin() const178*b1cdbd2cSJim Jagielski         inline bool IsMouseOverSidebarWin() const { return mbMouseOver; }
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski         void SetLanguage(const SvxLanguageItem aNewItem);
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski         void ChangeSidebarItem( SwSidebarItem& rSidebarItem );
183*b1cdbd2cSJim Jagielski         virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski     protected:
186*b1cdbd2cSJim Jagielski         virtual void    DataChanged( const DataChangedEvent& aEvent);
187*b1cdbd2cSJim Jagielski         virtual void    LoseFocus();
188*b1cdbd2cSJim Jagielski         virtual void    Paint( const Rectangle& rRect);
189*b1cdbd2cSJim Jagielski         virtual void    GetFocus();
190*b1cdbd2cSJim Jagielski         virtual MenuButton* CreateMenuButton() = 0;
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski         void        SetSizePixel( const Size& rNewSize );
193*b1cdbd2cSJim Jagielski         SfxItemSet  DefaultItem();
194*b1cdbd2cSJim Jagielski 
195*b1cdbd2cSJim Jagielski         DECL_LINK(ModifyHdl, void*);
196*b1cdbd2cSJim Jagielski         DECL_LINK(ScrollHdl, ScrollBar*);
197*b1cdbd2cSJim Jagielski         DECL_LINK(DeleteHdl, void*);
198*b1cdbd2cSJim Jagielski 
DocView()199*b1cdbd2cSJim Jagielski         inline SwView& DocView() { return mrView;}
Mgr()200*b1cdbd2cSJim Jagielski         inline SwPostItMgr& Mgr() { return mrMgr; }
Engine()201*b1cdbd2cSJim Jagielski         inline Outliner* Engine() { return mpOutliner;}
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski     private:
204*b1cdbd2cSJim Jagielski         SwSidebarWin*   GetTopReplyNote();
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski         virtual SvxLanguageItem GetLanguage(void);
207*b1cdbd2cSJim Jagielski 
208*b1cdbd2cSJim Jagielski         SwPostItMgr&    mrMgr;
209*b1cdbd2cSJim Jagielski         SwView&         mrView;
210*b1cdbd2cSJim Jagielski         const SwPostItBits nFlags;
211*b1cdbd2cSJim Jagielski 
212*b1cdbd2cSJim Jagielski         sal_uLong           mnEventId;
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski         OutlinerView*   mpOutlinerView;
215*b1cdbd2cSJim Jagielski         Outliner*       mpOutliner;
216*b1cdbd2cSJim Jagielski 
217*b1cdbd2cSJim Jagielski         sw::sidebarwindows::SidebarTxtControl* mpSidebarTxtControl;
218*b1cdbd2cSJim Jagielski         ScrollBar*      mpVScrollbar;
219*b1cdbd2cSJim Jagielski         Edit*           mpMetadataAuthor;
220*b1cdbd2cSJim Jagielski         Edit*           mpMetadataDate;
221*b1cdbd2cSJim Jagielski         MenuButton*     mpMenuButton;
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski         sw::sidebarwindows::AnchorOverlayObject* mpAnchor;
224*b1cdbd2cSJim Jagielski         sw::sidebarwindows::ShadowOverlayObject* mpShadow;
225*b1cdbd2cSJim Jagielski         sw::overlay::OverlayRanges* mpTextRangeOverlay;
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski         Color           mColorAnchor;
228*b1cdbd2cSJim Jagielski         Color           mColorDark;
229*b1cdbd2cSJim Jagielski         Color           mColorLight;
230*b1cdbd2cSJim Jagielski         Color           mChangeColor;
231*b1cdbd2cSJim Jagielski 
232*b1cdbd2cSJim Jagielski         sw::sidebarwindows::SidebarPosition meSidebarPosition;
233*b1cdbd2cSJim Jagielski 
234*b1cdbd2cSJim Jagielski         Rectangle       mPosSize;
235*b1cdbd2cSJim Jagielski         SwRect          mAnchorRect;
236*b1cdbd2cSJim Jagielski         long            mPageBorder;
237*b1cdbd2cSJim Jagielski 
238*b1cdbd2cSJim Jagielski         bool            mbMouseOver;
239*b1cdbd2cSJim Jagielski         SwPostItHelper::SwLayoutStatus mLayoutStatus;
240*b1cdbd2cSJim Jagielski 
241*b1cdbd2cSJim Jagielski         bool            mbReadonly;
242*b1cdbd2cSJim Jagielski         bool            mbIsFollow;
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski         SwSidebarItem& mrSidebarItem;
245*b1cdbd2cSJim Jagielski         const SwFrm* mpAnchorFrm;
246*b1cdbd2cSJim Jagielski };
247*b1cdbd2cSJim Jagielski 
248*b1cdbd2cSJim Jagielski } } // eof namespace sw::sidebarwindows
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski // implementation for change tracking comments, fully functional, but not yet used
252*b1cdbd2cSJim Jagielski /*
253*b1cdbd2cSJim Jagielski class SwRedComment : public SwSidebarWin
254*b1cdbd2cSJim Jagielski {
255*b1cdbd2cSJim Jagielski 	private:
256*b1cdbd2cSJim Jagielski 		SwRedline*		pRedline;
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski 	protected:
259*b1cdbd2cSJim Jagielski 		virtual void	MouseButtonDown( const MouseEvent& rMEvt );
260*b1cdbd2cSJim Jagielski 	public:
261*b1cdbd2cSJim Jagielski 		SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed);
262*b1cdbd2cSJim Jagielski 		virtual ~SwRedComment() {};
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski 		virtual void	UpdateData();
265*b1cdbd2cSJim Jagielski 		virtual void	SetPostItText();
266*b1cdbd2cSJim Jagielski 		virtual void	Delete();
267*b1cdbd2cSJim Jagielski 		virtual void	GotoPos();
268*b1cdbd2cSJim Jagielski 		virtual void	SetPopup();
269*b1cdbd2cSJim Jagielski 		virtual void	ActivatePostIt();
270*b1cdbd2cSJim Jagielski 		virtual void	DeactivatePostIt();
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski 		virtual String	GetAuthor();
273*b1cdbd2cSJim Jagielski 		virtual Date	GetDate();
274*b1cdbd2cSJim Jagielski 		virtual Time	GetTime();
275*b1cdbd2cSJim Jagielski 
276*b1cdbd2cSJim Jagielski 		virtual bool	IsProtected();
277*b1cdbd2cSJim Jagielski };
278*b1cdbd2cSJim Jagielski */
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski #endif
281