xref: /trunk/main/sfx2/inc/sfx2/dockwin.hxx (revision 353d8f4d)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _SFXDOCKWIN_HXX
24 #define _SFXDOCKWIN_HXX
25 
26 #include "sal/config.h"
27 #include "sal/types.h"
28 #include <vcl/dockwin.hxx>
29 
30 #include <com/sun/star/uno/Reference.hxx>
31 #include <com/sun/star/awt/XWindow.hpp>
32 #include <com/sun/star/frame/XFrame.hpp>
33 
34 #include "sfx2/dllapi.h"
35 #include <sfx2/childwin.hxx>
36 
37 class SfxSplitWindow;
38 class SfxDockingWindow_Impl;
39 
40 void SFX2_DLLPUBLIC SAL_CALL SfxDockingWindowFactory( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const rtl::OUString& rDockingWindowName );
41 bool SFX2_DLLPUBLIC SAL_CALL IsDockingWindowVisible( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const rtl::OUString& rDockingWindowName );
42 
43 class SFX2_DLLPUBLIC SfxDockingWindow : public DockingWindow
44 {
45 private:
46 	Rectangle               aInnerRect;
47 	Rectangle               aOuterRect;
48 	SfxBindings*            pBindings;
49 	Size                    aFloatSize;
50 	SfxChildWindow*         pMgr;
51 	SfxDockingWindow_Impl*  pImp;
52 
53     SAL_DLLPRIVATE SfxDockingWindow(SfxDockingWindow &); // not defined
54     SAL_DLLPRIVATE void operator =(SfxDockingWindow &); // not defined
55 
56 protected:
57 	SfxChildAlignment   CalcAlignment(const Point& rPos, Rectangle& rRect );
58 	void                CalcSplitPosition(const Point rPos, Rectangle& rRect,
59 							SfxChildAlignment eAlign);
60 	virtual Size        CalcDockingSize(SfxChildAlignment);
61 	virtual SfxChildAlignment
62 						CheckAlignment(SfxChildAlignment,SfxChildAlignment);
63 
64 	virtual void        Resize();
65 	virtual sal_Bool        PrepareToggleFloatingMode();
66 	virtual void        ToggleFloatingMode();
67 	virtual void        StartDocking();
68 	virtual sal_Bool        Docking( const Point& rPos, Rectangle& rRect );
69 	virtual void        EndDocking( const Rectangle& rRect, sal_Bool bFloatMode );
70 	virtual void        Resizing( Size& rSize );
71 	virtual void        Paint( const Rectangle& rRect );
72 	virtual sal_Bool        Close();
73     virtual void        Move();
74 
75 //#if 0 // _SOLAR__PRIVATE
GetChildWindow_Impl()76 	SAL_DLLPRIVATE SfxChildWindow* GetChildWindow_Impl()	{ return pMgr; }
77 //#endif
78 
79 public:
80 						SfxDockingWindow( SfxBindings *pBindings,
81 										  SfxChildWindow *pCW,
82 										  Window* pParent,
83 										  WinBits nWinBits=0);
84 						SfxDockingWindow( SfxBindings *pBindings,
85 										  SfxChildWindow *pCW,
86 										  Window* pParent,
87 										  const ResId& rResId);
88 						~SfxDockingWindow();
89 
90 	void                Initialize (SfxChildWinInfo* pInfo);
91 	virtual void        FillInfo(SfxChildWinInfo&) const;
92 	virtual void		StateChanged( StateChangedType nStateChange );
93 
SetDockingRects(const Rectangle & rOuter,const Rectangle & rInner)94 	void                SetDockingRects(const Rectangle& rOuter, const Rectangle& rInner)
95 							{ aInnerRect = rInner; aOuterRect = rOuter; }
GetInnerRect() const96 	const Rectangle&    GetInnerRect() const					{ return aInnerRect; }
GetOuterRect() const97 	const Rectangle&    GetOuterRect() const					{ return aOuterRect; }
GetBindings() const98 	SfxBindings&        GetBindings() const						{ return *pBindings; }
GetType() const99 	sal_uInt16              GetType() const							{ return pMgr->GetType(); }
GetAlignment() const100 	SfxChildAlignment   GetAlignment() const					{ return pMgr->GetAlignment(); }
SetAlignment(SfxChildAlignment eAlign)101 	void                SetAlignment(SfxChildAlignment eAlign)	{ pMgr->SetAlignment(eAlign); }
GetFloatingSize() const102 	Size                GetFloatingSize() const					{ return aFloatSize; }
SetFloatingSize(const Size & rSize)103 	void                SetFloatingSize(const Size& rSize)		{ aFloatSize=rSize; }
104 
105 	void                SetMinOutputSizePixel( const Size& rSize );
106 	Size                GetMinOutputSizePixel() const;
107 	virtual long		Notify( NotifyEvent& rNEvt );
108 	virtual void        FadeIn( sal_Bool );
109     void                AutoShow( sal_Bool bShow = sal_True );
110 	DECL_LINK( TimerHdl, Timer* );
111 
112 //#if 0 // _SOLAR__PRIVATE
113 	SAL_DLLPRIVATE void Initialize_Impl();
114 	SAL_DLLPRIVATE sal_uInt16 GetWinBits_Impl() const;
115 	SAL_DLLPRIVATE void SetItemSize_Impl( const Size& rSize );
116 	SAL_DLLPRIVATE void Disappear_Impl();
117 	SAL_DLLPRIVATE void Reappear_Impl();
118 	SAL_DLLPRIVATE sal_Bool IsAutoHide_Impl() const;
119 	SAL_DLLPRIVATE sal_Bool IsPinned_Impl() const;
120 	SAL_DLLPRIVATE void AutoShow_Impl( sal_Bool bShow = sal_True );
121 	SAL_DLLPRIVATE void Pin_Impl( sal_Bool bPinned );
122 	SAL_DLLPRIVATE SfxSplitWindow* GetSplitWindow_Impl() const;
123     SAL_DLLPRIVATE void ReleaseChildWindow_Impl();
124 //#endif
125 };
126 
127 class SfxDockingWrapper : public SfxChildWindow
128 {
129 	public:
130 		SfxDockingWrapper( Window* pParent ,
131 						   sal_uInt16 nId ,
132 						   SfxBindings* pBindings ,
133 						   SfxChildWinInfo* pInfo );
134 
135 		SFX_DECL_CHILDWINDOW(SfxDockingWrapper);
136 };
137 
138 #endif // #ifndef _SFXDOCKWIN_HXX
139