xref: /trunk/main/sfx2/source/appl/newhelp.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
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
10cdf0e10cSrcweir  *
11*353d8f4dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
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.
19cdf0e10cSrcweir  *
20*353d8f4dSAndrew Rist  *************************************************************/
21*353d8f4dSAndrew Rist 
22*353d8f4dSAndrew Rist 
23cdf0e10cSrcweir #ifndef INCLUDED_SFX_NEWHELP_HXX
24cdf0e10cSrcweir #define INCLUDED_SFX_NEWHELP_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <cppuhelper/implbase1.hxx>
27cdf0e10cSrcweir #include <com/sun/star/uno/Reference.h>
28cdf0e10cSrcweir #include <com/sun/star/frame/XDispatchResultListener.hpp>
29cdf0e10cSrcweir #include <com/sun/star/frame/XDispatch.hpp>
30cdf0e10cSrcweir #include <com/sun/star/frame/XFrame.hpp>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace awt { class XWindow; } } } }
33cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace frame { class XFrame; } } } }
34cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace i18n { class XBreakIterator; } } } }
35cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace text { class XTextRange; } } } }
36cdf0e10cSrcweir 
37cdf0e10cSrcweir #include <vcl/window.hxx>
38cdf0e10cSrcweir #include <vcl/toolbox.hxx>
39cdf0e10cSrcweir #include <vcl/tabpage.hxx>
40cdf0e10cSrcweir #include <vcl/splitwin.hxx>
41cdf0e10cSrcweir #include <vcl/tabctrl.hxx>
42cdf0e10cSrcweir #include <vcl/combobox.hxx>
43cdf0e10cSrcweir #include <vcl/fixed.hxx>
44cdf0e10cSrcweir #include <vcl/button.hxx>
45cdf0e10cSrcweir #include <vcl/lstbox.hxx>
46cdf0e10cSrcweir #include <vcl/dialog.hxx>
47cdf0e10cSrcweir #include <svtools/svtreebx.hxx>
48cdf0e10cSrcweir #include <unotools/moduleoptions.hxx>
49cdf0e10cSrcweir 
50cdf0e10cSrcweir #include "srchdlg.hxx"
51cdf0e10cSrcweir 
52cdf0e10cSrcweir // class OpenStatusListener_Impl -----------------------------------------
53cdf0e10cSrcweir 
54cdf0e10cSrcweir class OpenStatusListener_Impl : public ::cppu::WeakImplHelper1< ::com::sun::star::frame::XDispatchResultListener >
55cdf0e10cSrcweir {
56cdf0e10cSrcweir private:
57cdf0e10cSrcweir     sal_Bool    m_bFinished;
58cdf0e10cSrcweir     sal_Bool    m_bSuccess;
59cdf0e10cSrcweir     Link        m_aOpenLink;
60cdf0e10cSrcweir     String      m_sURL;
61cdf0e10cSrcweir 
62cdf0e10cSrcweir public:
OpenStatusListener_Impl()63cdf0e10cSrcweir     OpenStatusListener_Impl() : m_bFinished( sal_False ), m_bSuccess( sal_False ) {}
64cdf0e10cSrcweir 
65cdf0e10cSrcweir     virtual void SAL_CALL   dispatchFinished( const ::com::sun::star::frame::DispatchResultEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
66cdf0e10cSrcweir     virtual void SAL_CALL   disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
67cdf0e10cSrcweir 
IsFinished() const68cdf0e10cSrcweir     inline sal_Bool         IsFinished() const { return m_bFinished; }
IsSuccessful() const69cdf0e10cSrcweir     inline sal_Bool         IsSuccessful() const { return m_bSuccess; }
SetURL(const String & rURL)70cdf0e10cSrcweir     inline void             SetURL( const String& rURL ) { m_sURL = rURL; }
GetURL() const71cdf0e10cSrcweir     inline String           GetURL() const  { return m_sURL; }
SetOpenHdl(const Link & rLink)72cdf0e10cSrcweir     inline void             SetOpenHdl( const Link& rLink ) { m_aOpenLink = rLink; }
73cdf0e10cSrcweir };
74cdf0e10cSrcweir 
75cdf0e10cSrcweir // ContentListBox_Impl ---------------------------------------------------
76cdf0e10cSrcweir 
77cdf0e10cSrcweir class ContentListBox_Impl : public SvTreeListBox
78cdf0e10cSrcweir {
79cdf0e10cSrcweir private:
80cdf0e10cSrcweir     Image           aOpenBookImage;
81cdf0e10cSrcweir     Image           aClosedBookImage;
82cdf0e10cSrcweir     Image           aDocumentImage;
83cdf0e10cSrcweir 
84cdf0e10cSrcweir     void            InitRoot();
85cdf0e10cSrcweir     void            ClearChildren( SvLBoxEntry* pParent );
86cdf0e10cSrcweir 
87cdf0e10cSrcweir public:
88cdf0e10cSrcweir     ContentListBox_Impl( Window* pParent, const ResId& rResId );
89cdf0e10cSrcweir     ~ContentListBox_Impl();
90cdf0e10cSrcweir 
91cdf0e10cSrcweir 
92cdf0e10cSrcweir     virtual void    RequestingChilds( SvLBoxEntry* pParent );
93cdf0e10cSrcweir     virtual long    Notify( NotifyEvent& rNEvt );
94cdf0e10cSrcweir 
SetOpenHdl(const Link & rLink)95cdf0e10cSrcweir     inline void     SetOpenHdl( const Link& rLink ) { SetDoubleClickHdl( rLink ); }
96cdf0e10cSrcweir     String          GetSelectEntry() const;
97cdf0e10cSrcweir };
98cdf0e10cSrcweir 
99cdf0e10cSrcweir // class HelpTabPage_Impl ------------------------------------------------
100cdf0e10cSrcweir 
101cdf0e10cSrcweir class SfxHelpIndexWindow_Impl;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir class HelpTabPage_Impl : public TabPage
104cdf0e10cSrcweir {
105cdf0e10cSrcweir protected:
106cdf0e10cSrcweir     SfxHelpIndexWindow_Impl*    m_pIdxWin;
107cdf0e10cSrcweir 
108cdf0e10cSrcweir public:
109cdf0e10cSrcweir     HelpTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin, const ResId& rResId );
110cdf0e10cSrcweir 
111cdf0e10cSrcweir     virtual Control*    GetLastFocusControl() = 0;
112cdf0e10cSrcweir };
113cdf0e10cSrcweir 
114cdf0e10cSrcweir // class ContentTabPage_Impl ---------------------------------------------
115cdf0e10cSrcweir 
116cdf0e10cSrcweir class ContentTabPage_Impl : public HelpTabPage_Impl
117cdf0e10cSrcweir {
118cdf0e10cSrcweir private:
119cdf0e10cSrcweir     ContentListBox_Impl aContentBox;
120cdf0e10cSrcweir 
121cdf0e10cSrcweir public:
122cdf0e10cSrcweir     ContentTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
123cdf0e10cSrcweir 
124cdf0e10cSrcweir     virtual void        Resize();
125cdf0e10cSrcweir     virtual void        ActivatePage();
126cdf0e10cSrcweir     virtual Control*    GetLastFocusControl();
127cdf0e10cSrcweir 
SetOpenHdl(const Link & rLink)128cdf0e10cSrcweir     inline void     SetOpenHdl( const Link& rLink ) { aContentBox.SetOpenHdl( rLink ); }
GetSelectEntry() const129cdf0e10cSrcweir     inline String   GetSelectEntry() const { return aContentBox.GetSelectEntry(); }
SetFocusOnBox()130cdf0e10cSrcweir     inline void     SetFocusOnBox() { aContentBox.GrabFocus(); }
131cdf0e10cSrcweir };
132cdf0e10cSrcweir 
133cdf0e10cSrcweir // class IndexTabPage_Impl -----------------------------------------------
134cdf0e10cSrcweir 
135cdf0e10cSrcweir class IndexBox_Impl : public ComboBox
136cdf0e10cSrcweir {
137cdf0e10cSrcweir public:
138cdf0e10cSrcweir     IndexBox_Impl( Window* pParent, const ResId& rResId );
139cdf0e10cSrcweir 
140cdf0e10cSrcweir     virtual void        UserDraw( const UserDrawEvent& rUDEvt );
141cdf0e10cSrcweir     virtual long        Notify( NotifyEvent& rNEvt );
142cdf0e10cSrcweir 
143cdf0e10cSrcweir     void                SelectExecutableEntry();
144cdf0e10cSrcweir };
145cdf0e10cSrcweir 
146cdf0e10cSrcweir class IndexTabPage_Impl : public HelpTabPage_Impl
147cdf0e10cSrcweir {
148cdf0e10cSrcweir private:
149cdf0e10cSrcweir     FixedText           aExpressionFT;
150cdf0e10cSrcweir     IndexBox_Impl       aIndexCB;
151cdf0e10cSrcweir     PushButton          aOpenBtn;
152cdf0e10cSrcweir 
153cdf0e10cSrcweir     Timer               aFactoryTimer;
154cdf0e10cSrcweir     Timer               aKeywordTimer;
155cdf0e10cSrcweir     Link                aKeywordLink;
156cdf0e10cSrcweir 
157cdf0e10cSrcweir     String              sFactory;
158cdf0e10cSrcweir     String              sKeyword;
159cdf0e10cSrcweir 
160cdf0e10cSrcweir     long                nMinWidth;
161cdf0e10cSrcweir     sal_Bool            bIsActivated;
162cdf0e10cSrcweir 
163cdf0e10cSrcweir     void                InitializeIndex();
164cdf0e10cSrcweir     void                ClearIndex();
165cdf0e10cSrcweir 
166cdf0e10cSrcweir     DECL_LINK(          OpenHdl, PushButton* );
167cdf0e10cSrcweir     DECL_LINK(          TimeoutHdl, Timer* );
168cdf0e10cSrcweir 
169cdf0e10cSrcweir public:
170cdf0e10cSrcweir     IndexTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
171cdf0e10cSrcweir     ~IndexTabPage_Impl();
172cdf0e10cSrcweir 
173cdf0e10cSrcweir     virtual void        Resize();
174cdf0e10cSrcweir     virtual void        ActivatePage();
175cdf0e10cSrcweir     virtual Control*    GetLastFocusControl();
176cdf0e10cSrcweir 
177cdf0e10cSrcweir     void                SetDoubleClickHdl( const Link& rLink );
178cdf0e10cSrcweir     void                SetFactory( const String& rFactory );
GetFactory() const179cdf0e10cSrcweir     inline String       GetFactory() const { return sFactory; }
180cdf0e10cSrcweir     String              GetSelectEntry() const;
SetFocusOnBox()181cdf0e10cSrcweir     inline void         SetFocusOnBox() { aIndexCB.GrabFocus(); }
HasFocusOnEdit() const182cdf0e10cSrcweir     inline sal_Bool     HasFocusOnEdit() const { return aIndexCB.HasChildPathFocus(); }
183cdf0e10cSrcweir 
SetKeywordHdl(const Link & rLink)184cdf0e10cSrcweir     inline void         SetKeywordHdl( const Link& rLink ) { aKeywordLink = rLink; }
185cdf0e10cSrcweir     void                SetKeyword( const String& rKeyword );
186cdf0e10cSrcweir     sal_Bool            HasKeyword() const;
187cdf0e10cSrcweir     sal_Bool            HasKeywordIgnoreCase(); //added by BerryJia for fixing Bug98251, 2002-12-11
188cdf0e10cSrcweir     void                OpenKeyword();
189cdf0e10cSrcweir 
SelectExecutableEntry()190cdf0e10cSrcweir     inline void         SelectExecutableEntry() { aIndexCB.SelectExecutableEntry(); }
191cdf0e10cSrcweir };
192cdf0e10cSrcweir 
193cdf0e10cSrcweir // class SearchTabPage_Impl ----------------------------------------------
194cdf0e10cSrcweir 
195cdf0e10cSrcweir class SearchBox_Impl : public ComboBox
196cdf0e10cSrcweir {
197cdf0e10cSrcweir private:
198cdf0e10cSrcweir     Link                aSearchLink;
199cdf0e10cSrcweir 
200cdf0e10cSrcweir public:
SearchBox_Impl(Window * pParent,const ResId & rResId)201cdf0e10cSrcweir     SearchBox_Impl( Window* pParent, const ResId& rResId ) :
202cdf0e10cSrcweir         ComboBox( pParent, rResId ) { SetDropDownLineCount( 5 ); }
203cdf0e10cSrcweir 
204cdf0e10cSrcweir     virtual long        PreNotify( NotifyEvent& rNEvt );
205cdf0e10cSrcweir     virtual void        Select();
206cdf0e10cSrcweir 
SetSearchLink(const Link & rLink)207cdf0e10cSrcweir     inline void         SetSearchLink( const Link& rLink ) { aSearchLink = rLink; }
208cdf0e10cSrcweir };
209cdf0e10cSrcweir 
210cdf0e10cSrcweir class SearchResultsBox_Impl : public ListBox
211cdf0e10cSrcweir {
212cdf0e10cSrcweir public:
SearchResultsBox_Impl(Window * pParent,const ResId & rResId)213cdf0e10cSrcweir     SearchResultsBox_Impl( Window* pParent, const ResId& rResId ) : ListBox( pParent, rResId ) {}
214cdf0e10cSrcweir 
215cdf0e10cSrcweir     virtual long    Notify( NotifyEvent& rNEvt );
216cdf0e10cSrcweir };
217cdf0e10cSrcweir 
218cdf0e10cSrcweir class SearchTabPage_Impl : public HelpTabPage_Impl
219cdf0e10cSrcweir {
220cdf0e10cSrcweir private:
221cdf0e10cSrcweir     FixedText               aSearchFT;
222cdf0e10cSrcweir     SearchBox_Impl          aSearchED;
223cdf0e10cSrcweir     PushButton              aSearchBtn;
224cdf0e10cSrcweir     CheckBox                aFullWordsCB;
225cdf0e10cSrcweir     CheckBox                aScopeCB;
226cdf0e10cSrcweir     SearchResultsBox_Impl   aResultsLB;
227cdf0e10cSrcweir     PushButton              aOpenBtn;
228cdf0e10cSrcweir 
229cdf0e10cSrcweir     Size                    aMinSize;
230cdf0e10cSrcweir     String                  aFactory;
231cdf0e10cSrcweir 
232cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >
233cdf0e10cSrcweir                             xBreakIterator;
234cdf0e10cSrcweir 
235cdf0e10cSrcweir     void                ClearSearchResults();
236cdf0e10cSrcweir     void                RememberSearchText( const String& rSearchText );
237cdf0e10cSrcweir 
238cdf0e10cSrcweir     DECL_LINK(          SearchHdl, PushButton* );
239cdf0e10cSrcweir     DECL_LINK(          OpenHdl, PushButton* );
240cdf0e10cSrcweir     DECL_LINK(          ModifyHdl, Edit* );
241cdf0e10cSrcweir 
242cdf0e10cSrcweir public:
243cdf0e10cSrcweir     SearchTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
244cdf0e10cSrcweir     ~SearchTabPage_Impl();
245cdf0e10cSrcweir 
246cdf0e10cSrcweir     virtual void        Resize();
247cdf0e10cSrcweir     virtual void        ActivatePage();
248cdf0e10cSrcweir     virtual Control*    GetLastFocusControl();
249cdf0e10cSrcweir 
250cdf0e10cSrcweir     void                SetDoubleClickHdl( const Link& rLink );
SetFactory(const String & rFactory)251cdf0e10cSrcweir     inline void         SetFactory( const String& rFactory ) { aFactory = rFactory; }
252cdf0e10cSrcweir     String              GetSelectEntry() const;
253cdf0e10cSrcweir     void                ClearPage();
SetFocusOnBox()254cdf0e10cSrcweir     inline void         SetFocusOnBox() { aResultsLB.GrabFocus(); }
HasFocusOnEdit() const255cdf0e10cSrcweir     inline sal_Bool     HasFocusOnEdit() const { return aSearchED.HasChildPathFocus(); }
GetSearchText() const256cdf0e10cSrcweir     inline String       GetSearchText() const { return aSearchED.GetText(); }
IsFullWordSearch() const257cdf0e10cSrcweir     inline sal_Bool     IsFullWordSearch() const { return aFullWordsCB.IsChecked(); }
258cdf0e10cSrcweir     sal_Bool            OpenKeyword( const String& rKeyword );
259cdf0e10cSrcweir };
260cdf0e10cSrcweir 
261cdf0e10cSrcweir // class BookmarksTabPage_Impl -------------------------------------------
262cdf0e10cSrcweir 
263cdf0e10cSrcweir class BookmarksBox_Impl : public ListBox
264cdf0e10cSrcweir {
265cdf0e10cSrcweir private:
266cdf0e10cSrcweir     void                DoAction( sal_uInt16 nAction );
267cdf0e10cSrcweir 
268cdf0e10cSrcweir public:
269cdf0e10cSrcweir     BookmarksBox_Impl( Window* pParent, const ResId& rResId );
270cdf0e10cSrcweir     ~BookmarksBox_Impl();
271cdf0e10cSrcweir 
272cdf0e10cSrcweir     virtual long        Notify( NotifyEvent& rNEvt );
273cdf0e10cSrcweir };
274cdf0e10cSrcweir 
275cdf0e10cSrcweir class BookmarksTabPage_Impl : public HelpTabPage_Impl
276cdf0e10cSrcweir {
277cdf0e10cSrcweir private:
278cdf0e10cSrcweir     FixedText           aBookmarksFT;
279cdf0e10cSrcweir     BookmarksBox_Impl   aBookmarksBox;
280cdf0e10cSrcweir     PushButton          aBookmarksPB;
281cdf0e10cSrcweir 
282cdf0e10cSrcweir     long                nMinWidth;
283cdf0e10cSrcweir 
284cdf0e10cSrcweir     DECL_LINK(          OpenHdl, PushButton* );
285cdf0e10cSrcweir 
286cdf0e10cSrcweir public:
287cdf0e10cSrcweir     BookmarksTabPage_Impl( Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin );
288cdf0e10cSrcweir 
289cdf0e10cSrcweir     virtual void        Resize();
290cdf0e10cSrcweir     virtual void        ActivatePage();
291cdf0e10cSrcweir     virtual Control*    GetLastFocusControl();
292cdf0e10cSrcweir 
293cdf0e10cSrcweir     void                SetDoubleClickHdl( const Link& rLink );
294cdf0e10cSrcweir     String              GetSelectEntry() const;
295cdf0e10cSrcweir     void                AddBookmarks( const String& rTitle, const String& rURL );
SetFocusOnBox()296cdf0e10cSrcweir     inline void         SetFocusOnBox() { aBookmarksBox.GrabFocus(); }
297cdf0e10cSrcweir };
298cdf0e10cSrcweir 
299cdf0e10cSrcweir // class SfxHelpIndexWindow_Impl -----------------------------------------
300cdf0e10cSrcweir 
301cdf0e10cSrcweir class SfxHelpWindow_Impl;
302cdf0e10cSrcweir 
303cdf0e10cSrcweir class SfxHelpIndexWindow_Impl : public Window
304cdf0e10cSrcweir {
305cdf0e10cSrcweir private:
306cdf0e10cSrcweir     ListBox             aActiveLB;
307cdf0e10cSrcweir     FixedLine           aActiveLine;
308cdf0e10cSrcweir 
309cdf0e10cSrcweir     TabControl          aTabCtrl;
310cdf0e10cSrcweir     Timer               aTimer;
311cdf0e10cSrcweir 
312cdf0e10cSrcweir     Link                aSelectFactoryLink;
313cdf0e10cSrcweir     Link                aPageDoubleClickLink;
314cdf0e10cSrcweir     Link                aIndexKeywordLink;
315cdf0e10cSrcweir     String              sKeyword;
316cdf0e10cSrcweir 
317cdf0e10cSrcweir     SfxHelpWindow_Impl*     pParentWin;
318cdf0e10cSrcweir 
319cdf0e10cSrcweir     ContentTabPage_Impl*    pCPage;
320cdf0e10cSrcweir     IndexTabPage_Impl*      pIPage;
321cdf0e10cSrcweir     SearchTabPage_Impl*     pSPage;
322cdf0e10cSrcweir     BookmarksTabPage_Impl*  pBPage;
323cdf0e10cSrcweir 
324cdf0e10cSrcweir     long                nMinWidth;
325cdf0e10cSrcweir     bool                bWasCursorLeftOrRight;
326cdf0e10cSrcweir     bool                bIsInitDone;
327cdf0e10cSrcweir 
328cdf0e10cSrcweir     void                Initialize();
329cdf0e10cSrcweir     void                SetActiveFactory();
330cdf0e10cSrcweir     HelpTabPage_Impl*   GetCurrentPage( sal_uInt16& rCurId );
331cdf0e10cSrcweir 
332cdf0e10cSrcweir     inline ContentTabPage_Impl*     GetContentPage();
333cdf0e10cSrcweir     inline IndexTabPage_Impl*       GetIndexPage();
334cdf0e10cSrcweir     inline SearchTabPage_Impl*      GetSearchPage();
335cdf0e10cSrcweir     inline BookmarksTabPage_Impl*   GetBookmarksPage();
336cdf0e10cSrcweir 
337cdf0e10cSrcweir     DECL_LINK(          ActivatePageHdl, TabControl* );
338cdf0e10cSrcweir     DECL_LINK(          SelectHdl, ListBox* );
339cdf0e10cSrcweir     DECL_LINK(          InitHdl, Timer* );
340cdf0e10cSrcweir     DECL_LINK(          SelectFactoryHdl, Timer* );
341cdf0e10cSrcweir     DECL_LINK(          KeywordHdl, IndexTabPage_Impl* );
342cdf0e10cSrcweir 
343cdf0e10cSrcweir public:
344cdf0e10cSrcweir     SfxHelpIndexWindow_Impl( SfxHelpWindow_Impl* pParent );
345cdf0e10cSrcweir     ~SfxHelpIndexWindow_Impl();
346cdf0e10cSrcweir 
347cdf0e10cSrcweir     virtual void        Resize();
348cdf0e10cSrcweir     virtual long        PreNotify( NotifyEvent& rNEvt );
349cdf0e10cSrcweir     virtual void        DataChanged( const DataChangedEvent& rDCEvt );
350cdf0e10cSrcweir 
351cdf0e10cSrcweir     void                SetDoubleClickHdl( const Link& rLink );
SetSelectFactoryHdl(const Link & rLink)352cdf0e10cSrcweir     inline void         SetSelectFactoryHdl( const Link& rLink ) { aSelectFactoryLink = rLink; }
353cdf0e10cSrcweir     void                SetFactory( const String& rFactory, sal_Bool bActive );
GetFactory() const354cdf0e10cSrcweir     inline String       GetFactory() const { return pIPage->GetFactory(); }
355cdf0e10cSrcweir     String              GetSelectEntry() const;
356cdf0e10cSrcweir     void                AddBookmarks( const String& rTitle, const String& rURL );
357cdf0e10cSrcweir     bool                IsValidFactory( const String& _rFactory );
GetActiveFactoryTitle() const358cdf0e10cSrcweir     inline String       GetActiveFactoryTitle() const { return aActiveLB.GetSelectEntry(); }
UpdateTabControl()359cdf0e10cSrcweir     inline void         UpdateTabControl() { aTabCtrl.Invalidate(); }
360cdf0e10cSrcweir     void                ClearSearchPage();
361cdf0e10cSrcweir     void                GrabFocusBack();
362cdf0e10cSrcweir     sal_Bool            HasFocusOnEdit() const;
363cdf0e10cSrcweir     String              GetSearchText() const;
364cdf0e10cSrcweir     sal_Bool            IsFullWordSearch() const;
365cdf0e10cSrcweir     void                OpenKeyword( const String& rKeyword );
366cdf0e10cSrcweir     void                SelectExecutableEntry();
367cdf0e10cSrcweir     inline bool         WasCursorLeftOrRight();
368cdf0e10cSrcweir };
369cdf0e10cSrcweir 
370cdf0e10cSrcweir // inlines ---------------------------------------------------------------
371cdf0e10cSrcweir 
GetContentPage()372cdf0e10cSrcweir ContentTabPage_Impl* SfxHelpIndexWindow_Impl::GetContentPage()
373cdf0e10cSrcweir {
374cdf0e10cSrcweir     if ( !pCPage )
375cdf0e10cSrcweir     {
376cdf0e10cSrcweir         pCPage = new ContentTabPage_Impl( &aTabCtrl, this );
377cdf0e10cSrcweir         pCPage->SetOpenHdl( aPageDoubleClickLink );
378cdf0e10cSrcweir     }
379cdf0e10cSrcweir     return pCPage;
380cdf0e10cSrcweir }
GetIndexPage()381cdf0e10cSrcweir IndexTabPage_Impl* SfxHelpIndexWindow_Impl::GetIndexPage()
382cdf0e10cSrcweir {
383cdf0e10cSrcweir     if ( !pIPage )
384cdf0e10cSrcweir     {
385cdf0e10cSrcweir         pIPage = new IndexTabPage_Impl( &aTabCtrl, this );
386cdf0e10cSrcweir         pIPage->SetDoubleClickHdl( aPageDoubleClickLink );
387cdf0e10cSrcweir         pIPage->SetKeywordHdl( aIndexKeywordLink );
388cdf0e10cSrcweir     }
389cdf0e10cSrcweir     return pIPage;
390cdf0e10cSrcweir }
391cdf0e10cSrcweir 
GetSearchPage()392cdf0e10cSrcweir SearchTabPage_Impl* SfxHelpIndexWindow_Impl::GetSearchPage()
393cdf0e10cSrcweir {
394cdf0e10cSrcweir     if ( !pSPage )
395cdf0e10cSrcweir     {
396cdf0e10cSrcweir         pSPage = new SearchTabPage_Impl( &aTabCtrl, this );
397cdf0e10cSrcweir         pSPage->SetDoubleClickHdl( aPageDoubleClickLink );
398cdf0e10cSrcweir     }
399cdf0e10cSrcweir     return pSPage;
400cdf0e10cSrcweir }
401cdf0e10cSrcweir 
GetBookmarksPage()402cdf0e10cSrcweir BookmarksTabPage_Impl* SfxHelpIndexWindow_Impl::GetBookmarksPage()
403cdf0e10cSrcweir {
404cdf0e10cSrcweir     if ( !pBPage )
405cdf0e10cSrcweir     {
406cdf0e10cSrcweir         pBPage = new BookmarksTabPage_Impl( &aTabCtrl, this );
407cdf0e10cSrcweir         pBPage->SetDoubleClickHdl( aPageDoubleClickLink );
408cdf0e10cSrcweir     }
409cdf0e10cSrcweir     return pBPage;
410cdf0e10cSrcweir }
411cdf0e10cSrcweir 
WasCursorLeftOrRight()412cdf0e10cSrcweir bool SfxHelpIndexWindow_Impl::WasCursorLeftOrRight()
413cdf0e10cSrcweir {
414cdf0e10cSrcweir     bool bRet = bWasCursorLeftOrRight;
415cdf0e10cSrcweir     bWasCursorLeftOrRight = false;
416cdf0e10cSrcweir     return bRet;
417cdf0e10cSrcweir }
418cdf0e10cSrcweir 
419cdf0e10cSrcweir // class TextWin_Impl ----------------------------------------------------
420cdf0e10cSrcweir 
421cdf0e10cSrcweir class TextWin_Impl : public DockingWindow
422cdf0e10cSrcweir {
423cdf0e10cSrcweir public:
424cdf0e10cSrcweir                             TextWin_Impl( Window* pParent );
425cdf0e10cSrcweir     virtual                 ~TextWin_Impl();
426cdf0e10cSrcweir 
427cdf0e10cSrcweir     virtual long            Notify( NotifyEvent& rNEvt );
428cdf0e10cSrcweir };
429cdf0e10cSrcweir 
430cdf0e10cSrcweir // class SfxHelpTextWindow_Impl ------------------------------------------
431cdf0e10cSrcweir 
432cdf0e10cSrcweir class SvtMiscOptions;
433cdf0e10cSrcweir class SfxHelpWindow_Impl;
434cdf0e10cSrcweir 
435cdf0e10cSrcweir class SfxHelpTextWindow_Impl : public Window
436cdf0e10cSrcweir {
437cdf0e10cSrcweir private:
438cdf0e10cSrcweir     ToolBox                 aToolBox;
439cdf0e10cSrcweir     CheckBox                aOnStartupCB;
440cdf0e10cSrcweir     Timer                   aSelectTimer;
441cdf0e10cSrcweir     Image                   aIndexOnImage;
442cdf0e10cSrcweir     Image                   aIndexOffImage;
443cdf0e10cSrcweir     String                  aIndexOnText;
444cdf0e10cSrcweir     String                  aIndexOffText;
445cdf0e10cSrcweir     String                  aSearchText;
446cdf0e10cSrcweir     String                  aOnStartupText;
447cdf0e10cSrcweir     ::rtl::OUString         sCurrentFactory;
448cdf0e10cSrcweir 
449cdf0e10cSrcweir     SfxHelpWindow_Impl*     pHelpWin;
450cdf0e10cSrcweir     Window*                 pTextWin;
451cdf0e10cSrcweir     sfx2::SearchDialog*     pSrchDlg;
452cdf0e10cSrcweir     ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
453cdf0e10cSrcweir                             xFrame;
454cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >
455cdf0e10cSrcweir                             xBreakIterator;
456cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
457cdf0e10cSrcweir                             xConfiguration;
458cdf0e10cSrcweir     long                    nMinPos;
459cdf0e10cSrcweir     sal_Bool                bIsDebug;
460cdf0e10cSrcweir     sal_Bool                bIsIndexOn;
461cdf0e10cSrcweir     sal_Bool                bIsInClose;
462cdf0e10cSrcweir     sal_Bool                bIsFullWordSearch;
463cdf0e10cSrcweir 
464cdf0e10cSrcweir     sal_Bool                HasSelection() const;
465cdf0e10cSrcweir     void                    InitToolBoxImages();
466cdf0e10cSrcweir     void                    InitOnStartupBox( bool bOnlyText );
467cdf0e10cSrcweir     void                    SetOnStartupBoxPosition();
468cdf0e10cSrcweir 
469cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >
470cdf0e10cSrcweir                             GetBreakIterator();
471cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >
472cdf0e10cSrcweir                             getCursor() const;
473cdf0e10cSrcweir     bool                    isHandledKey( const KeyCode& _rKeyCode );
474cdf0e10cSrcweir 
475cdf0e10cSrcweir     DECL_LINK(              SelectHdl, Timer* );
476cdf0e10cSrcweir     DECL_LINK(              NotifyHdl, SvtMiscOptions* );
477cdf0e10cSrcweir     DECL_LINK(              FindHdl, sfx2::SearchDialog* );
478cdf0e10cSrcweir     DECL_LINK(              CloseHdl, sfx2::SearchDialog* );
479cdf0e10cSrcweir     DECL_LINK(              CheckHdl, CheckBox* );
480cdf0e10cSrcweir 
481cdf0e10cSrcweir public:
482cdf0e10cSrcweir     SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent );
483cdf0e10cSrcweir     ~SfxHelpTextWindow_Impl();
484cdf0e10cSrcweir 
485cdf0e10cSrcweir     virtual void            Resize();
486cdf0e10cSrcweir     virtual long            PreNotify( NotifyEvent& rNEvt );
487cdf0e10cSrcweir     virtual void            GetFocus();
488cdf0e10cSrcweir     virtual void            DataChanged( const DataChangedEvent& rDCEvt );
489cdf0e10cSrcweir 
490cdf0e10cSrcweir     inline ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
getFrame() const491cdf0e10cSrcweir                             getFrame() const { return xFrame; }
492cdf0e10cSrcweir 
SetSelectHdl(const Link & rLink)493cdf0e10cSrcweir     inline void             SetSelectHdl( const Link& rLink ) { aToolBox.SetSelectHdl( rLink ); }
494cdf0e10cSrcweir     void                    ToggleIndex( sal_Bool bOn );
495cdf0e10cSrcweir     void                    SelectSearchText( const String& rSearchText, sal_Bool _bIsFullWordSearch );
496cdf0e10cSrcweir     void                    SetPageStyleHeaderOff() const;
GetToolBox()497cdf0e10cSrcweir     inline ToolBox&         GetToolBox() { return aToolBox; }
498cdf0e10cSrcweir     void                    CloseFrame();
499cdf0e10cSrcweir     void                    DoSearch();
500cdf0e10cSrcweir };
501cdf0e10cSrcweir 
502cdf0e10cSrcweir // class SfxHelpWindow_Impl ----------------------------------------------
503cdf0e10cSrcweir 
504cdf0e10cSrcweir class HelpInterceptor_Impl;
505cdf0e10cSrcweir class HelpListener_Impl;
506cdf0e10cSrcweir class SfxHelpWindow_Impl : public SplitWindow
507cdf0e10cSrcweir {
508cdf0e10cSrcweir private:
509cdf0e10cSrcweir friend class SfxHelpIndexWindow_Impl;
510cdf0e10cSrcweir 
511cdf0e10cSrcweir     ::com::sun::star::uno::Reference < ::com::sun::star::awt::XWindow >
512cdf0e10cSrcweir                                 xWindow;
513cdf0e10cSrcweir     ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchResultListener >
514cdf0e10cSrcweir                                 xOpenListener;
515cdf0e10cSrcweir     ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
516cdf0e10cSrcweir                                 xFrame;
517cdf0e10cSrcweir 
518cdf0e10cSrcweir     SfxHelpIndexWindow_Impl*    pIndexWin;
519cdf0e10cSrcweir     SfxHelpTextWindow_Impl*     pTextWin;
520cdf0e10cSrcweir     HelpInterceptor_Impl*       pHelpInterceptor;
521cdf0e10cSrcweir     HelpListener_Impl*          pHelpListener;
522cdf0e10cSrcweir 
523cdf0e10cSrcweir     sal_Int32           nExpandWidth;
524cdf0e10cSrcweir     sal_Int32           nCollapseWidth;
525cdf0e10cSrcweir     sal_Int32           nHeight;
526cdf0e10cSrcweir     long                nIndexSize;
527cdf0e10cSrcweir     long                nTextSize;
528cdf0e10cSrcweir     sal_Bool            bIndex;
529cdf0e10cSrcweir     sal_Bool            bGrabFocusToToolBox;
530cdf0e10cSrcweir     Point               aWinPos;
531cdf0e10cSrcweir     String              sTitle;
532cdf0e10cSrcweir     String              sKeyword;
533cdf0e10cSrcweir 
534cdf0e10cSrcweir     virtual void        Resize();
535cdf0e10cSrcweir     virtual void        Split();
536cdf0e10cSrcweir     virtual void        GetFocus();
537cdf0e10cSrcweir 
538cdf0e10cSrcweir     void                MakeLayout();
539cdf0e10cSrcweir     void                InitSizes();
540cdf0e10cSrcweir     void                LoadConfig();
541cdf0e10cSrcweir     void                SaveConfig();
542cdf0e10cSrcweir     void                ShowStartPage();
543cdf0e10cSrcweir 
544cdf0e10cSrcweir     DECL_LINK(          SelectHdl, ToolBox* );
545cdf0e10cSrcweir     DECL_LINK(          OpenHdl, SfxHelpIndexWindow_Impl* );
546cdf0e10cSrcweir     DECL_LINK(          SelectFactoryHdl, SfxHelpIndexWindow_Impl* );
547cdf0e10cSrcweir     DECL_LINK(          ChangeHdl, HelpListener_Impl* );
548cdf0e10cSrcweir 
549cdf0e10cSrcweir public:
550cdf0e10cSrcweir     SfxHelpWindow_Impl( const ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >& rFrame,
551cdf0e10cSrcweir                         Window* pParent, WinBits nBits );
552cdf0e10cSrcweir     ~SfxHelpWindow_Impl();
553cdf0e10cSrcweir 
554cdf0e10cSrcweir     virtual long        PreNotify( NotifyEvent& rNEvt );
555cdf0e10cSrcweir 
556cdf0e10cSrcweir     void                setContainerWindow(
557cdf0e10cSrcweir                             ::com::sun::star::uno::Reference < ::com::sun::star::awt::XWindow > xWin );
558cdf0e10cSrcweir     inline ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame >
getTextFrame() const559cdf0e10cSrcweir                         getTextFrame() const { return pTextWin->getFrame(); }
560cdf0e10cSrcweir     inline ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchResultListener >
getOpenListener() const561cdf0e10cSrcweir                         getOpenListener() const { return xOpenListener; }
562cdf0e10cSrcweir 
563cdf0e10cSrcweir     void                SetFactory( const String& rFactory );
564cdf0e10cSrcweir     void                SetHelpURL( const String& rURL );
565cdf0e10cSrcweir     void                DoAction( sal_uInt16 nActionId );
566cdf0e10cSrcweir     void                CloseWindow();
567cdf0e10cSrcweir 
568cdf0e10cSrcweir     void                UpdateToolbox();
OpenKeyword(const String & rKeyword)569cdf0e10cSrcweir     inline void         OpenKeyword( const String& rKeyword ) { pIndexWin->OpenKeyword( rKeyword ); }
GetFactory() const570cdf0e10cSrcweir     inline String       GetFactory() const { return pIndexWin->GetFactory(); }
571cdf0e10cSrcweir 
572cdf0e10cSrcweir     sal_Bool            HasHistoryPredecessor() const;      // forward to interceptor
573cdf0e10cSrcweir     sal_Bool            HasHistorySuccessor() const;        // forward to interceptor
574cdf0e10cSrcweir 
575cdf0e10cSrcweir     void                openDone(const ::rtl::OUString& sURL    ,
576cdf0e10cSrcweir                                        sal_Bool         bSuccess);
577cdf0e10cSrcweir 
578cdf0e10cSrcweir     static sal_Bool     splitHelpURL(const ::rtl::OUString& sHelpURL,
579cdf0e10cSrcweir                                            ::rtl::OUString& sFactory,
580cdf0e10cSrcweir                                            ::rtl::OUString& sContent,
581cdf0e10cSrcweir                                            ::rtl::OUString& sAnchor );
582cdf0e10cSrcweir 
583cdf0e10cSrcweir     static ::rtl::OUString  buildHelpURL(const ::rtl::OUString& sFactory        ,
584cdf0e10cSrcweir                                          const ::rtl::OUString& sContent        ,
585cdf0e10cSrcweir                                          const ::rtl::OUString& sAnchor         ,
586cdf0e10cSrcweir                                                sal_Bool         bUseQuestionMark);
587cdf0e10cSrcweir 
588cdf0e10cSrcweir     void                loadHelpContent(const ::rtl::OUString& sHelpURL                ,
589cdf0e10cSrcweir                                               sal_Bool         bAddToHistory = sal_True);
590cdf0e10cSrcweir };
591cdf0e10cSrcweir 
592cdf0e10cSrcweir class SfxAddHelpBookmarkDialog_Impl : public ModalDialog
593cdf0e10cSrcweir {
594cdf0e10cSrcweir private:
595cdf0e10cSrcweir     FixedText       aTitleFT;
596cdf0e10cSrcweir     Edit            aTitleED;
597cdf0e10cSrcweir     OKButton        aOKBtn;
598cdf0e10cSrcweir     CancelButton    aEscBtn;
599cdf0e10cSrcweir     HelpButton      aHelpBtn;
600cdf0e10cSrcweir 
601cdf0e10cSrcweir public:
602cdf0e10cSrcweir     SfxAddHelpBookmarkDialog_Impl( Window* pParent, sal_Bool bRename = sal_True );
603cdf0e10cSrcweir     ~SfxAddHelpBookmarkDialog_Impl();
604cdf0e10cSrcweir 
605cdf0e10cSrcweir     void            SetTitle( const String& rTitle );
GetTitle() const606cdf0e10cSrcweir     inline String   GetTitle() const { return aTitleED.GetText(); }
607cdf0e10cSrcweir };
608cdf0e10cSrcweir 
609cdf0e10cSrcweir #endif // #ifndef INCLUDED_SFX_NEWHELP_HXX
610