xref: /aoo41x/main/sfx2/source/inc/workwin.hxx (revision 353d8f4d)
1*353d8f4dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*353d8f4dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*353d8f4dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*353d8f4dSAndrew Rist  * distributed with this work for additional information
6*353d8f4dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*353d8f4dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*353d8f4dSAndrew Rist  * "License"); you may not use this file except in compliance
9*353d8f4dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*353d8f4dSAndrew Rist  *
11*353d8f4dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*353d8f4dSAndrew Rist  *
13*353d8f4dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*353d8f4dSAndrew Rist  * software distributed under the License is distributed on an
15*353d8f4dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*353d8f4dSAndrew Rist  * KIND, either express or implied.  See the License for the
17*353d8f4dSAndrew Rist  * specific language governing permissions and limitations
18*353d8f4dSAndrew Rist  * under the License.
19*353d8f4dSAndrew Rist  *
20*353d8f4dSAndrew Rist  *************************************************************/
21*353d8f4dSAndrew Rist 
22*353d8f4dSAndrew Rist 
23cdf0e10cSrcweir #ifndef _SFXWORKWIN_HXX
24cdf0e10cSrcweir #define _SFXWORKWIN_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <vector>
27cdf0e10cSrcweir #include <deque>
28cdf0e10cSrcweir #include <com/sun/star/frame/XDispatch.hpp>
29cdf0e10cSrcweir #include <com/sun/star/frame/XFrame.hpp>
30cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UI_XUILEMENT_HPP_
31cdf0e10cSrcweir #include <com/sun/star/ui/XUIElement.hpp>
32cdf0e10cSrcweir #endif
33cdf0e10cSrcweir #include <com/sun/star/task/XStatusIndicator.hpp>
34cdf0e10cSrcweir #include <com/sun/star/frame/XLayoutManagerListener.hpp>
35cdf0e10cSrcweir #include <cppuhelper/weak.hxx>
36cdf0e10cSrcweir #include <cppuhelper/propshlp.hxx>
37cdf0e10cSrcweir 
38cdf0e10cSrcweir #define _SVSTDARR_USHORTS
39cdf0e10cSrcweir #include <svl/svstdarr.hxx>		// SvUShorts
40cdf0e10cSrcweir #include <rtl/ustring.hxx>
41cdf0e10cSrcweir #include <vos/mutex.hxx>
42cdf0e10cSrcweir 
43cdf0e10cSrcweir #include <sfx2/sfx.hrc>
44cdf0e10cSrcweir #include <sfx2/childwin.hxx>
45cdf0e10cSrcweir #include <sfx2/shell.hxx>
46cdf0e10cSrcweir #include <sfx2/minarray.hxx>
47cdf0e10cSrcweir #include <sfx2/ctrlitem.hxx>
48cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
49cdf0e10cSrcweir 
50cdf0e10cSrcweir class SfxInPlaceEnv_Impl;
51cdf0e10cSrcweir class SfxPlugInEnv_Impl;
52cdf0e10cSrcweir class SfxSplitWindow;
53cdf0e10cSrcweir class SfxWorkWindow;
54cdf0e10cSrcweir 
55cdf0e10cSrcweir //====================================================================
56cdf0e10cSrcweir // Dieser struct h"alt alle relevanten Informationen "uber Toolboxen bereit.
57cdf0e10cSrcweir 
58cdf0e10cSrcweir struct SfxObjectBar_Impl
59cdf0e10cSrcweir {
60cdf0e10cSrcweir     sal_uInt16        nId;   // Resource - und ConfigId der Toolbox
61cdf0e10cSrcweir     sal_uInt16        nMode; // spezielle Sichtbarkeitsflags
62cdf0e10cSrcweir     sal_uInt16        nPos;
63cdf0e10cSrcweir     sal_uInt16        nIndex;
64cdf0e10cSrcweir     sal_Bool      bDestroy;
65cdf0e10cSrcweir     String        aName;
66cdf0e10cSrcweir     SfxInterface* pIFace;
67cdf0e10cSrcweir 
SfxObjectBar_ImplSfxObjectBar_Impl68cdf0e10cSrcweir     SfxObjectBar_Impl() :
69cdf0e10cSrcweir         nId(0),
70cdf0e10cSrcweir         nMode(0),
71cdf0e10cSrcweir         bDestroy(sal_False),
72cdf0e10cSrcweir         pIFace(0)
73cdf0e10cSrcweir     {}
74cdf0e10cSrcweir };
75cdf0e10cSrcweir 
76cdf0e10cSrcweir //------------------------------------------------------------------------------
77cdf0e10cSrcweir // Dieser struct h"alt alle relevanten Informationen "uber die Statuszeile bereit.
78cdf0e10cSrcweir struct SfxStatBar_Impl
79cdf0e10cSrcweir {
80cdf0e10cSrcweir 	sal_uInt16					nId;
81cdf0e10cSrcweir 	sal_Bool					bOn;
82cdf0e10cSrcweir 	sal_Bool					bTemp;
83cdf0e10cSrcweir 
SfxStatBar_ImplSfxStatBar_Impl84cdf0e10cSrcweir 	SfxStatBar_Impl() :
85cdf0e10cSrcweir 		nId(0),
86cdf0e10cSrcweir 		bOn(sal_True),
87cdf0e10cSrcweir 		bTemp(sal_False)
88cdf0e10cSrcweir 	{}
89cdf0e10cSrcweir };
90cdf0e10cSrcweir 
91cdf0e10cSrcweir //------------------------------------------------------------------------------
92cdf0e10cSrcweir 
93cdf0e10cSrcweir #define CHILD_NOT_VISIBLE	0
94cdf0e10cSrcweir #define CHILD_ACTIVE		1	// nicht durch HidePopups ausgeschaltet
95cdf0e10cSrcweir #define CHILD_NOT_HIDDEN	2	// nicht durch HideChildWindow ausgeschaltet
96cdf0e10cSrcweir #define CHILD_FITS_IN		4	// nicht zu gro\s f"ur OutputSize des parent
97cdf0e10cSrcweir #define CHILD_VISIBLE		(CHILD_NOT_HIDDEN | CHILD_ACTIVE | CHILD_FITS_IN)
98cdf0e10cSrcweir #define CHILD_ISVISIBLE		(CHILD_NOT_HIDDEN | CHILD_ACTIVE)
99cdf0e10cSrcweir 
100cdf0e10cSrcweir struct SfxChild_Impl
101cdf0e10cSrcweir {
102cdf0e10cSrcweir 	Window*             			pWin;
103cdf0e10cSrcweir 	Size                			aSize;
104cdf0e10cSrcweir 	SfxChildAlignment				eAlign;
105cdf0e10cSrcweir 	sal_uInt16							nVisible;
106cdf0e10cSrcweir 	sal_Bool							bResize;
107cdf0e10cSrcweir 	sal_Bool							bCanGetFocus;
108cdf0e10cSrcweir 	sal_Bool							bSetFocus;
109cdf0e10cSrcweir 
SfxChild_ImplSfxChild_Impl110cdf0e10cSrcweir 	SfxChild_Impl( Window& rChild, const Size& rSize,
111cdf0e10cSrcweir 				   SfxChildAlignment eAlignment, sal_Bool bIsVisible ):
112cdf0e10cSrcweir 		pWin(&rChild), aSize(rSize), eAlign(eAlignment), bResize(sal_False),
113cdf0e10cSrcweir 		bCanGetFocus( sal_False ), bSetFocus( sal_False )
114cdf0e10cSrcweir 	{
115cdf0e10cSrcweir 		nVisible = bIsVisible ? CHILD_VISIBLE : CHILD_NOT_VISIBLE;
116cdf0e10cSrcweir 	}
117cdf0e10cSrcweir };
118cdf0e10cSrcweir 
119cdf0e10cSrcweir //--------------------------------------------------------------------
120cdf0e10cSrcweir class SfxChildWinController_Impl : public SfxControllerItem
121cdf0e10cSrcweir {
122cdf0e10cSrcweir 	SfxWorkWindow*	pWorkwin;
123cdf0e10cSrcweir 
124cdf0e10cSrcweir 	public:
125cdf0e10cSrcweir 					SfxChildWinController_Impl( sal_uInt16 nId, SfxWorkWindow *pWin );
126cdf0e10cSrcweir 	virtual void	StateChanged( sal_uInt16 nSID, SfxItemState eState,
127cdf0e10cSrcweir 							const SfxPoolItem* pState );
128cdf0e10cSrcweir };
129cdf0e10cSrcweir 
130cdf0e10cSrcweir struct SfxChildWin_Impl
131cdf0e10cSrcweir {
132cdf0e10cSrcweir 	sal_uInt16							nSaveId;		// die ChildWindow-Id
133cdf0e10cSrcweir 	sal_uInt16							nInterfaceId;	// der aktuelle Context
134cdf0e10cSrcweir 	sal_uInt16							nId;        	// aktuelle Id
135cdf0e10cSrcweir 	SfxChildWindow* 				pWin;
136cdf0e10cSrcweir 	sal_Bool							bCreate;
137cdf0e10cSrcweir 	SfxChildWinInfo					aInfo;
138cdf0e10cSrcweir 	SfxChild_Impl*					pCli;			// != 0 bei direkten Children
139cdf0e10cSrcweir 	sal_uInt16							nVisibility;
140cdf0e10cSrcweir 	sal_Bool							bEnable;
141cdf0e10cSrcweir 	sal_Bool							bDisabled;
142cdf0e10cSrcweir 
SfxChildWin_ImplSfxChildWin_Impl143cdf0e10cSrcweir 	SfxChildWin_Impl( sal_uInt32 nID ) :
144cdf0e10cSrcweir 		nSaveId((sal_uInt16) (nID & 0xFFFF) ),
145cdf0e10cSrcweir 		nInterfaceId((sal_uInt16) (nID >> 16)),
146cdf0e10cSrcweir 		nId(nSaveId),
147cdf0e10cSrcweir 		pWin(0),
148cdf0e10cSrcweir 		bCreate(sal_False),
149cdf0e10cSrcweir 		pCli(0),
150cdf0e10cSrcweir 		nVisibility( sal_False ),
151cdf0e10cSrcweir 		bEnable( sal_True ),
152cdf0e10cSrcweir 		bDisabled( sal_False )
153cdf0e10cSrcweir 	{}
154cdf0e10cSrcweir };
155cdf0e10cSrcweir 
156cdf0e10cSrcweir enum SfxChildIdentifier
157cdf0e10cSrcweir {
158cdf0e10cSrcweir 	SFX_CHILDWIN_STATBAR,
159cdf0e10cSrcweir 	SFX_CHILDWIN_OBJECTBAR,
160cdf0e10cSrcweir 	SFX_CHILDWIN_DOCKINGWINDOW,
161cdf0e10cSrcweir 	SFX_CHILDWIN_SPLITWINDOW
162cdf0e10cSrcweir };
163cdf0e10cSrcweir 
164cdf0e10cSrcweir enum SfxDockingConfig
165cdf0e10cSrcweir {
166cdf0e10cSrcweir 	SFX_SETDOCKINGRECTS,
167cdf0e10cSrcweir 	SFX_ALIGNDOCKINGWINDOW,
168cdf0e10cSrcweir 	SFX_TOGGLEFLOATMODE,
169cdf0e10cSrcweir 	SFX_MOVEDOCKINGWINDOW
170cdf0e10cSrcweir };
171cdf0e10cSrcweir 
172cdf0e10cSrcweir DECL_PTRARRAY( SfxChildList_Impl, SfxChild_Impl*, 2, 2 )
173cdf0e10cSrcweir DECL_PTRARRAY( SfxChildWindows_Impl, SfxChildWin_Impl*, 2, 2 )
174cdf0e10cSrcweir 
175cdf0e10cSrcweir 
176cdf0e10cSrcweir struct SfxObjectBarList_Impl
177cdf0e10cSrcweir {
178cdf0e10cSrcweir 	std::deque<SfxObjectBar_Impl>	aArr;
179cdf0e10cSrcweir 	sal_uInt16 					nAct;
180cdf0e10cSrcweir 
operator []SfxObjectBarList_Impl181cdf0e10cSrcweir 	SfxObjectBar_Impl 		operator[] ( sal_uInt16 n )
182cdf0e10cSrcweir 							{ return aArr[n]; }
ActualSfxObjectBarList_Impl183cdf0e10cSrcweir 	SfxObjectBar_Impl 		Actual()
184cdf0e10cSrcweir 							{ return aArr[nAct]; }
185cdf0e10cSrcweir };
186cdf0e10cSrcweir 
187cdf0e10cSrcweir struct SfxSplitWin_Impl
188cdf0e10cSrcweir {
189cdf0e10cSrcweir 	SfxSplitWindow*			pSplitWin;
190cdf0e10cSrcweir 	SfxChildWindows_Impl* 	pChildWins;
191cdf0e10cSrcweir };
192cdf0e10cSrcweir 
193cdf0e10cSrcweir #define SFX_SPLITWINDOWS_LEFT 	0
194cdf0e10cSrcweir #define SFX_SPLITWINDOWS_TOP  	2
195cdf0e10cSrcweir #define SFX_SPLITWINDOWS_RIGHT 	1
196cdf0e10cSrcweir #define SFX_SPLITWINDOWS_BOTTOM 3
197cdf0e10cSrcweir #define SFX_SPLITWINDOWS_MAX 	4
198cdf0e10cSrcweir 
199cdf0e10cSrcweir //--------------------------------------------------------------------
200cdf0e10cSrcweir 
201cdf0e10cSrcweir class LayoutManagerListener : public ::com::sun::star::frame::XLayoutManagerListener,
202cdf0e10cSrcweir                               public ::com::sun::star::lang::XTypeProvider,
203cdf0e10cSrcweir                               public ::com::sun::star::lang::XComponent,
204cdf0e10cSrcweir                               public ::cppu::OWeakObject
205cdf0e10cSrcweir {
206cdf0e10cSrcweir     public:
207cdf0e10cSrcweir         LayoutManagerListener( SfxWorkWindow* pWrkWin );
208cdf0e10cSrcweir         virtual ~LayoutManagerListener();
209cdf0e10cSrcweir 
210cdf0e10cSrcweir 	    SFX_DECL_XINTERFACE_XTYPEPROVIDER
211cdf0e10cSrcweir 
212cdf0e10cSrcweir 		void setFrame( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame );
213cdf0e10cSrcweir 
214cdf0e10cSrcweir         //---------------------------------------------------------------------------------------------------------
215cdf0e10cSrcweir         //  XComponent
216cdf0e10cSrcweir 		//---------------------------------------------------------------------------------------------------------
217cdf0e10cSrcweir         virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
218cdf0e10cSrcweir         virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
219cdf0e10cSrcweir         virtual void SAL_CALL dispose() throw( ::com::sun::star::uno::RuntimeException );
220cdf0e10cSrcweir 
221cdf0e10cSrcweir         //---------------------------------------------------------------------------------------------------------
222cdf0e10cSrcweir         //  XEventListener
223cdf0e10cSrcweir 		//---------------------------------------------------------------------------------------------------------
224cdf0e10cSrcweir 	    virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& aEvent ) throw( ::com::sun::star::uno::RuntimeException );
225cdf0e10cSrcweir 
226cdf0e10cSrcweir 		//---------------------------------------------------------------------------------------------------------
227cdf0e10cSrcweir         // XLayoutManagerEventListener
228cdf0e10cSrcweir 		//---------------------------------------------------------------------------------------------------------
229cdf0e10cSrcweir         virtual void SAL_CALL layoutEvent( const ::com::sun::star::lang::EventObject& aSource, ::sal_Int16 eLayoutEvent, const ::com::sun::star::uno::Any& aInfo ) throw (::com::sun::star::uno::RuntimeException);
230cdf0e10cSrcweir 
231cdf0e10cSrcweir     private:
232cdf0e10cSrcweir         sal_Bool                                                                m_bHasFrame;
233cdf0e10cSrcweir         SfxWorkWindow*                                                          m_pWrkWin;
234cdf0e10cSrcweir         ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XFrame > m_xFrame;
235cdf0e10cSrcweir         rtl::OUString                                                           m_aLayoutManagerPropName;
236cdf0e10cSrcweir };
237cdf0e10cSrcweir 
238cdf0e10cSrcweir class SfxWorkWindow
239cdf0e10cSrcweir {
240cdf0e10cSrcweir     friend class UIElementWrapper;
241cdf0e10cSrcweir     friend class LayoutManagerListener;
242cdf0e10cSrcweir 
243cdf0e10cSrcweir protected:
244cdf0e10cSrcweir 	SvUShorts			  	aSortedList;
245cdf0e10cSrcweir 	SfxStatBar_Impl			aStatBar;
246cdf0e10cSrcweir     std::vector< SfxObjectBar_Impl > aObjBarList;
247cdf0e10cSrcweir 	Rectangle				aClientArea;
248cdf0e10cSrcweir     Rectangle               aUpperClientArea;
249cdf0e10cSrcweir 	SfxWorkWindow*			pParent;
250cdf0e10cSrcweir 	SfxSplitWindow*			pSplit[SFX_SPLITWINDOWS_MAX];
251cdf0e10cSrcweir 	SfxChildList_Impl*	  	pChilds;
252cdf0e10cSrcweir 	SfxChildWindows_Impl* 	pChildWins;
253cdf0e10cSrcweir 	SfxBindings*			pBindings;
254cdf0e10cSrcweir 	Window*					pWorkWin;
255cdf0e10cSrcweir 	SfxShell*				pConfigShell;
256cdf0e10cSrcweir 	Window*					pActiveChild;
257cdf0e10cSrcweir 	sal_uInt16					nUpdateMode;
258cdf0e10cSrcweir 	sal_uInt16					nChilds;
259cdf0e10cSrcweir 	sal_uInt16					nOrigMode;
260cdf0e10cSrcweir     sal_Bool                    bSorted : 1;
261cdf0e10cSrcweir     sal_Bool                    bDockingAllowed : 1;
262cdf0e10cSrcweir     sal_Bool                    bInternalDockingAllowed : 1;
263cdf0e10cSrcweir     sal_Bool                    bAllChildsVisible : 1;
264cdf0e10cSrcweir     sal_Bool                    bIsFullScreen : 1;
265cdf0e10cSrcweir     sal_Bool                    bShowStatusBar : 1;
266cdf0e10cSrcweir     sal_Int32               m_nLock;
267cdf0e10cSrcweir     rtl::OUString           m_aStatusBarResName;
268cdf0e10cSrcweir     rtl::OUString           m_aLayoutManagerPropName;
269cdf0e10cSrcweir     rtl::OUString           m_aTbxTypeName;
270cdf0e10cSrcweir     rtl::OUString           m_aProgressBarResName;
271cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > m_xLayoutManagerListener;
272cdf0e10cSrcweir 
273cdf0e10cSrcweir protected:
274cdf0e10cSrcweir 	void					CreateChildWin_Impl(SfxChildWin_Impl*,sal_Bool);
275cdf0e10cSrcweir 	void					RemoveChildWin_Impl(SfxChildWin_Impl*);
276cdf0e10cSrcweir 	void				  	Sort_Impl();
277cdf0e10cSrcweir 	void            		AlignChild_Impl( Window& rWindow, const Size& rNewSize,
278cdf0e10cSrcweir 									 SfxChildAlignment eAlign );
279cdf0e10cSrcweir 	SfxChild_Impl* 			FindChild_Impl( const Window& rWindow ) const;
280cdf0e10cSrcweir 	virtual sal_Bool			RequestTopToolSpacePixel_Impl( SvBorder aBorder );
281cdf0e10cSrcweir 	virtual Rectangle       GetTopRect_Impl();
282cdf0e10cSrcweir     SvBorder                Arrange_Impl();
283cdf0e10cSrcweir 	virtual void			SaveStatus_Impl(SfxChildWindow*, const SfxChildWinInfo&);
284cdf0e10cSrcweir     static sal_Bool         IsPluginMode( SfxObjectShell* pObjShell );
285cdf0e10cSrcweir 
286cdf0e10cSrcweir public:
287cdf0e10cSrcweir 							SfxWorkWindow( Window *pWin, SfxBindings& rBindings, SfxWorkWindow* pParent = NULL);
288cdf0e10cSrcweir 	virtual					~SfxWorkWindow();
289cdf0e10cSrcweir     SystemWindow*           GetTopWindow() const;
GetBindings()290cdf0e10cSrcweir 	SfxBindings&			GetBindings()
291cdf0e10cSrcweir 							{ return *pBindings; }
GetWindow() const292cdf0e10cSrcweir 	Window*					GetWindow() const
293cdf0e10cSrcweir 							{ return pWorkWin; }
294cdf0e10cSrcweir 	Rectangle				GetFreeArea( sal_Bool bAutoHide ) const;
SetDockingAllowed(sal_Bool bSet)295cdf0e10cSrcweir 	void					SetDockingAllowed(sal_Bool bSet)
296cdf0e10cSrcweir 							{ bDockingAllowed = bSet; }
SetInternalDockingAllowed(sal_Bool bSet)297cdf0e10cSrcweir     void                    SetInternalDockingAllowed(sal_Bool bSet)
298cdf0e10cSrcweir                             { bInternalDockingAllowed = bSet; }
IsDockingAllowed() const299cdf0e10cSrcweir 	sal_Bool					IsDockingAllowed() const
300cdf0e10cSrcweir 							{ return bDockingAllowed; }
IsInternalDockingAllowed() const301cdf0e10cSrcweir     sal_Bool                    IsInternalDockingAllowed() const
302cdf0e10cSrcweir                             { return bInternalDockingAllowed; }
GetParent_Impl() const303cdf0e10cSrcweir 	SfxWorkWindow*			GetParent_Impl() const
304cdf0e10cSrcweir 							{ return pParent; }
305cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch >			CreateDispatch( const String& );
306cdf0e10cSrcweir 
307cdf0e10cSrcweir 	// Methoden f"ur alle Child-Fenster
308cdf0e10cSrcweir     void                    DataChanged_Impl( const DataChangedEvent& rDCEvt );
309cdf0e10cSrcweir 	void            		ReleaseChild_Impl( Window& rWindow );
310cdf0e10cSrcweir 	SfxChild_Impl*          RegisterChild_Impl( Window& rWindow, SfxChildAlignment eAlign, sal_Bool bCanGetFocus=sal_False );
311cdf0e10cSrcweir 	void					ShowChilds_Impl();
312cdf0e10cSrcweir 	void					HideChilds_Impl();
313cdf0e10cSrcweir 	void    				Close_Impl();
314cdf0e10cSrcweir 	sal_Bool    				PrepareClose_Impl();
315cdf0e10cSrcweir 	virtual void			ArrangeChilds_Impl( sal_Bool bForce = sal_True );
316cdf0e10cSrcweir 	void					DeleteControllers_Impl();
317cdf0e10cSrcweir     void                    SaveStatus_Impl();
318cdf0e10cSrcweir 	void 					HidePopups_Impl(sal_Bool bHide, sal_Bool bParent=sal_False, sal_uInt16 nId=0);
319cdf0e10cSrcweir 	void            		ConfigChild_Impl(SfxChildIdentifier,
320cdf0e10cSrcweir 											 SfxDockingConfig, sal_uInt16);
321cdf0e10cSrcweir 	void					MakeChildsVisible_Impl( sal_Bool bVis );
322cdf0e10cSrcweir 	void					ArrangeAutoHideWindows( SfxSplitWindow *pSplit );
323cdf0e10cSrcweir 	sal_Bool					IsAutoHideMode( const SfxSplitWindow *pSplit );
324cdf0e10cSrcweir     void                    EndAutoShow_Impl( Point aPos );
SetFullScreen_Impl(sal_Bool bSet)325cdf0e10cSrcweir     void                    SetFullScreen_Impl( sal_Bool bSet ) { bIsFullScreen = bSet; }
IsFullScreen_Impl() const326cdf0e10cSrcweir     sal_Bool                    IsFullScreen_Impl() const { return bIsFullScreen; }
327cdf0e10cSrcweir 
328cdf0e10cSrcweir 	// Methoden f"ur Objectbars
329cdf0e10cSrcweir 	virtual void            UpdateObjectBars_Impl();
330cdf0e10cSrcweir 	void            		ResetObjectBars_Impl();
331cdf0e10cSrcweir 	void					SetObjectBar_Impl( sal_uInt16 nPos, sal_uInt32 nResId,
332cdf0e10cSrcweir 									SfxInterface *pIFace, const String* pName=0 );
333cdf0e10cSrcweir 	Window* 				GetObjectBar_Impl( sal_uInt16 nPos, sal_uInt32 nResId );
334cdf0e10cSrcweir 	bool    				KnowsObjectBar_Impl( sal_uInt16 nPos ) const;
335cdf0e10cSrcweir     sal_Bool                    IsVisible_Impl();
336cdf0e10cSrcweir     void                    MakeVisible_Impl( sal_Bool );
337cdf0e10cSrcweir 	void					SetObjectBarVisibility_Impl( sal_uInt16 nVis );
338cdf0e10cSrcweir 	sal_Bool					IsContainer_Impl() const;
339cdf0e10cSrcweir     void                    Lock_Impl( sal_Bool );
340cdf0e10cSrcweir 	void					NextObjectBar_Impl( sal_uInt16 nPos );
341cdf0e10cSrcweir 	sal_uInt16  				HasNextObjectBar_Impl( sal_uInt16 nPos, String* pStr=0 );
342cdf0e10cSrcweir     void                    SetObjectBarCustomizeMode_Impl( sal_Bool );
343cdf0e10cSrcweir 
344cdf0e10cSrcweir 	// Methoden f"ur ChildWindows
345cdf0e10cSrcweir 	void            		UpdateChildWindows_Impl();
346cdf0e10cSrcweir 	void					ResetChildWindows_Impl();
347cdf0e10cSrcweir 	void					SetChildWindowVisible_Impl( sal_uInt32, sal_Bool, sal_uInt16 );
348cdf0e10cSrcweir     void                    ToggleChildWindow_Impl(sal_uInt16,sal_Bool);
349cdf0e10cSrcweir 	sal_Bool					HasChildWindow_Impl(sal_uInt16);
350cdf0e10cSrcweir 	sal_Bool					KnowsChildWindow_Impl(sal_uInt16);
351cdf0e10cSrcweir     void                    ShowChildWindow_Impl(sal_uInt16, sal_Bool bVisible, sal_Bool bSetFocus);
352cdf0e10cSrcweir     void                    SetChildWindow_Impl(sal_uInt16, sal_Bool bOn, sal_Bool bSetFocus);
353cdf0e10cSrcweir 	SfxChildWindow* 		GetChildWindow_Impl(sal_uInt16);
354cdf0e10cSrcweir 	virtual void			InitializeChild_Impl(SfxChildWin_Impl*);
355cdf0e10cSrcweir 	SfxSplitWindow*			GetSplitWindow_Impl(SfxChildAlignment);
356cdf0e10cSrcweir 
357cdf0e10cSrcweir 	sal_Bool                    IsVisible_Impl( sal_uInt16 nMode ) const;
358cdf0e10cSrcweir 	void 					DisableChildWindow_Impl( sal_uInt16 nId, sal_Bool bDisable );
359cdf0e10cSrcweir 	sal_Bool					IsFloating( sal_uInt16 nId );
360cdf0e10cSrcweir 	void 					ChangeWindow_Impl( Window *pNew );
361cdf0e10cSrcweir 	void					SetActiveChild_Impl( Window *pChild );
362cdf0e10cSrcweir 	Window*					GetActiveChild_Impl();
363cdf0e10cSrcweir 	virtual sal_Bool			ActivateNextChild_Impl( sal_Bool bForward = sal_True );
364cdf0e10cSrcweir     bool                    AllowChildWindowCreation_Impl( const SfxChildWin_Impl& i_rCW ) const;
365cdf0e10cSrcweir 
366cdf0e10cSrcweir 	// Methoden f"ur StatusBar
367cdf0e10cSrcweir     void                    SetTempStatusBar_Impl( sal_Bool bSet );
368cdf0e10cSrcweir 	void					ResetStatusBar_Impl();
369cdf0e10cSrcweir 	void					SetStatusBar_Impl(sal_uInt32 nResId, SfxShell *pShell, SfxBindings& );
370cdf0e10cSrcweir 	void					UpdateStatusBar_Impl();
371cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > GetStatusIndicator();
372cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > GetFrameInterface();
373cdf0e10cSrcweir };
374cdf0e10cSrcweir 
375cdf0e10cSrcweir class SfxFrameWorkWin_Impl : public SfxWorkWindow
376cdf0e10cSrcweir {
377cdf0e10cSrcweir     SfxFrame*           pMasterFrame;
378cdf0e10cSrcweir     SfxFrame*           pFrame;
379cdf0e10cSrcweir public:
380cdf0e10cSrcweir                         SfxFrameWorkWin_Impl( Window* pWin, SfxFrame* pFrm, SfxFrame* pMaster );
381cdf0e10cSrcweir 	virtual void        ArrangeChilds_Impl( sal_Bool bForce = sal_True );
382cdf0e10cSrcweir 	virtual void        UpdateObjectBars_Impl();
383cdf0e10cSrcweir 	virtual Rectangle   GetTopRect_Impl();
384cdf0e10cSrcweir };
385cdf0e10cSrcweir 
386cdf0e10cSrcweir 
387cdf0e10cSrcweir #endif
388