xref: /trunk/main/svtools/inc/svtools/tabbar.hxx (revision 4f5df709a0eab69fd5c8b41cb0ae2c4a42cc181d)
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 #ifndef _TABBAR_HXX
23 #define _TABBAR_HXX
24 
25 #include "svtools/svtdllapi.h"
26 #include <tools/link.hxx>
27 #include <vcl/window.hxx>
28 
29 class MouseEvent;
30 class TrackingEvent;
31 class DataChangedEvent;
32 class ImplTabBarList;
33 class ImplTabButton;
34 class ImplTabSizer;
35 class TabBarEdit;
36 
37 // -----------------
38 // - Dokumentation -
39 // -----------------
40 
41 /*
42 
43 Erlaubte StyleBits
44 ------------------
45 
46 WB_SCROLL       - Die Tabs können über ein Extra-Feld gescrollt werden
47 WB_MINSCROLL    - Die Tabs können über 2 zusätzliche Buttons gescrollt werden
48 WB_RANGESELECT  - Zusammenhängende Bereiche können selektiert werden
49 WB_MULTISELECT  - Einzelne Tabs können selektiert werden
50 WB_BORDER       - Oben und unten wird ein Strich gezeichnet
51 WB_DRAG         - Vom TabBar wird ein StartDrag-Handler gerufen, wenn
52                   Drag and Drop gestartet werden soll. Es wird außerdem
53                   im TabBar mit EnableDrop() Drag and Drop eingeschaltet.
54 WB_SIZEABLE     - Vom TabBar wird ein Split-Handler gerufen, wenn der Anwender
55                   den TabBar in der Breite ändern will
56 WB_STDTABBAR    - WB_BORDER
57 
58 
59 Erlaubte PageBits
60 -----------------
61 
62 TPB_SPECIAL     - Andere Darstellung des TabTextes, zum Beispiel für
63                   Szenario-Seiten.
64 
65 Handler
66 -------
67 
68 Select          - Wird gerufen, wenn eine Tab selektiert oder
69                   deselektiert wird
70 DoubleClick     - Wird gerufen, wenn ein DoubleClick im TabBar ausgelöst
71                   wurde. Innerhalb des Handlers liefert GetCurPageId() die
72                   angeklickte Tab zurück oder 0, wenn keine Tab angeklickt
73                   wurde
74 ActivatePage    - Wird gerufen, wenn eine andere Seite aktiviert wird.
75                   GetCurPageId() gibt die aktivierte Seite zurück.
76 DeactivatePage  - Wird gerufen, wenn eine Seite deaktiviert wird. Wenn
77                   eine andere Seite aktiviert werden darf, muss sal_True
78                   zurückgegeben werden, wenn eine andere Seite von
79                   der Aktivierung ausgeschlossen werden soll, muss
80                   sal_False zurückgegeben werden. GetCurPageId() gibt die
81                   zu deaktivierende Seite zurück.
82 
83 
84 Drag and Drop
85 -------------
86 
87 Für Drag and Drop muss das WinBit WB_DRAG gesetzt werden. Außerdem
88 muss der Command-, QueryDrop-Handler und der Drop-Handler überlagert
89 werden. Dabei muss in den Handlern folgendes implementiert werden:
90 
91 Command         - Wenn in diesem Handler das Dragging gestartet werden
92                   soll, muss StartDrag() gerufen werden. Diese Methode
93                   selektiert dann den entsprechenden Eintrag oder gibt
94                   sal_False zurück, wenn das Dragging nicht durchgeführt
95                   werden kann.
96 
97 QueryDrop       - Dieser Handler wird von StarView immer dann gerufen, wenn
98                   bei einem Drag-Vorgang die Maus über das Fenster gezogen
99                   wird (siehe dazu auch SV-Doku). In diesem Handler muss
100                   festgestellt werden, ob ein Drop möglich ist. Die
101                   Drop-Position kann im TabBar mit ShowDropPos() angezeigt
102                   werden. Beim Aufruf muss die Position vom Event übergeben
103                   werden. Wenn sich die Position am linken oder rechten
104                   Rand befindet, wird automatisch im TabBar gescrollt.
105                   Diese Methode gibt auch die entsprechende Drop-Position
106                   zurück, die auch für ein Drop gebraucht wird. Wenn das
107                   Fenster beim Drag verlassen wird, kann mit HideDropPos()
108                   die DropPosition wieder weggenommen werden. Es ist dadurch
109                   auch möglich, ein von außerhalb des TabBars ausgelöstes
110                   Drag zu verarbeiten.
111 
112 Drop            - Im Drop-Handler müssen dann die Pages verschoben werden,
113                   oder die neuen Pages eingefügt werden. Die entsprechende
114                   Drop-Postion kann mit ShowDropPos() ermittelt werden.
115 
116 Folgende Methoden werden für Drag and Drop gebraucht und müssen von
117 den Handlern gerufen werden:
118 
119 StartDrag       - Muss aus dem Commnad-Handler gerufen werden. Als Parameter
120                   muss der CommandEvent übergeben werden und eine Referenz
121                   auf eine Region. Diese Region muss dann bei ExecuteDrag()
122                   übergeben werden, wenn der Rückgabewert sagt, das
123                   ExecuteDrag durchgeführt werden soll. Falls der Eintrag
124                   nicht selektiert ist, wird er vorher als aktueller
125                   Eintrag gesetzt. Es ist daher darauf zu achten, das aus
126                   dieser Methode heraus der Select-Handler gerufen werden
127                   kann.
128 
129 ShowDropPos     - Diese Methode muss vom QueryDrop-Handler gerufen werden,
130                   damit der TabBar anzeigt, wo die Tabs eingefügt werden.
131                   Diese Methode kann auch im Drop-Handler benutzt werden,
132                   um die Position zu ermitteln wo die Tabs eingefügt werden
133                   sollen. In der Methode muss die Position vom Event
134                   übergeben werden. Diese Methode gibt die Position zurück,
135                   wo die Tabs eingefügt werden sollen.
136 
137 HideDropPos     - Diese Methode nimmt die vorher mit ShowDropPos() angezeigte
138                   DropPosition wieder zurück. Diese Methode sollte dann
139                   gerufen werden, wenn bei QueryDrop() das Fenster verlassen
140                   wird oder der Dragvorgang beendet wurde.
141 
142 Folgende Methoden können eingesetzt werden, wenn bei D&D die Seiten
143 umgeschaltet werden sollen:
144 
145 SwitchPage      - Diese Methode muss vom QueryDrop-Handler gerufen werden,
146                   wenn die Seite über der sich der Mousepointer befindet,
147                   umgeschaltet werden soll. Diese Methode sollte jedes mal
148                   gerufen werden, wenn der QueryDrop-Handler gerufen wird.
149                   Das umschalten der Seite passiert zeitverzögert (500 ms)
150                   und wird automatisch von dieser Methode verwaltet.
151                   In der Methode muss die Position vom Event übergeben
152                   werden. Diese Methode gibt sal_True zurück, wenn die Page
153                   umgeschaltet wurde.
154 
155 EndSwitchPage   - Diese Methode setzt die Daten für das umschalten der
156                   Seiten zurück. Diese Methode sollte dann gerufen werden,
157                   wenn bei QueryDrop() das Fenster verlassen wird oder
158                   der Dragvorgang beendet wurde.
159 
160 IsInSwitching   - Mit dieser Methode kann im ActivatePage()/DeactivatePage()
161                   abgefragt werden, ob dies durch SwitchPage() veranlasst
162                   wurde. So kann dann beispielsweise in DeactivatePage()
163                   das Umschalten ohne eine Fehlerbox verhindert werden.
164 
165 
166 Fenster-Resize
167 --------------
168 
169 Wenn das Fenster vom Anwender in der Breite geändert werden kann, dann
170 muss das WinBit WB_SIZEABLE gesetzt werden. In diesem Fall muss noch
171 folgender Handler überlagert werden:
172 
173 Split           - Wenn dieser Handler gerufen wird, sollte das Fenster
174                   auf die Breite angepasst werden, die von GetSplitSize()
175                   zurückgegeben wird. Dabei wird keine minimale und
176                   maximale Breite berücksichtigt. Eine minimale Breite
177                   kann mit GetMinSize() abgefragt werden und die maximale
178                   Breite muss von der Anwendung selber berechnet werden.
179                   Da nur Online-Resize unterstützt wird, muss das Fenster
180                   innerhalb dieses Handlers in der Breite geändert
181                   werden und eventuell abhängige Fenster ebenfalls. Für
182                   diesen Handler kann auch mit SetSplitHdl() ein
183                   Link gesetzt werden.
184 
185 Folgende Methoden liefern beim Splitten weitere Informationen:
186 
187 GetSplitSize()  - Liefert die Breite des TabBars zurück, auf die der
188                   Anwender das Fenster resizen will. Dabei wird keine
189                   minimale oder maximale Breite berücksichtigt. Es wird
190                   jedoch nie eine Breite < 5 zurückgeliefert. Diese Methode
191                   liefert nur solange richtige Werte, wie Splitten aktiv
192                   ist.
193 
194 GetMinSize()    - Mit dieser Methode kann eine minimale Fensterbreite
195                   abgefragt werden, so das min. etwas eines Tabs sichtbar
196                   ist. Jedoch kann der TabBar immer noch schmaler gesetzt
197                   werden, als die Breite, die diese Methode zurückliefert.
198                   Diese Methode kann auch aufgerufen werden, wenn kein
199                   Splitten aktiv ist.
200 
201 
202 Edit-Modus
203 ----------
204 
205 Der Tabbar bietet auch Möglichkeiten, dass der Anwender in den Tabreitern
206 die Namen ändern kann.
207 
208 EnableEditMode  - Damit kann eingestellt werden, das bei Alt+LeftClick
209                   StartEditMode() automatisch vom TabBar gerufen wird.
210                   Im StartRenaming()-Handler kann dann das Umbenennen
211                   noch abgelehnt werden.
212 StartEditMode   - Mit dieser Methode wird der EditModus auf einem
213                   Tab gestartet. sal_False wird zurückgegeben, wenn
214                   der Editmodus schon aktiv ist, mit StartRenaming()
215                   der Modus abgelehnt wurde oder kein Platz zum
216                   Editieren vorhanden ist.
217 EndEditMode     - Mit dieser Methode wird der EditModus beendet.
218 SetEditText     - Mit dieser Methode kann der Text im AllowRenaming()-
219                   Handler noch durch einen anderen Text ersetzt werden.
220 GetEditText     - Mit dieser Methode kann im AllowRenaming()-Handler
221                   der Text abgefragt werden, den der Anwender eingegeben
222                   hat.
223 IsInEditMode    - Mit dieser Methode kann abgefragt werden, ob der
224                   Editmodus aktiv ist.
225 IsEditModeCanceled      - Mit dieser Methode kann im EndRenaming()-
226                           Handler abgefragt werden, ob die Umbenennung
227                           abgebrochen wurde.
228 GetEditPageId   - Mit dieser Methode wird in den Renaming-Handlern
229                   abgefragt, welcher Tab umbenannt wird/wurde.
230 
231 StartRenaming() - Dieser Handler wird gerufen, wenn über StartEditMode()
232                   der Editmodus gestartet wurde. Mit GetEditPageId()
233                   kann abgefragt werden, welcher Tab umbenannt werden
234                   soll. sal_False sollte zurückgegeben werden, wenn
235                   der Editmodus nicht gestartet werden soll.
236 AllowRenaming() - Dieser Handler wird gerufen, wenn der Editmodus
237                   beendet wird (nicht bei Cancel). In diesem Handler
238                   kann dann getestet werden, ob der Text OK ist.
239                   Mit GetEditPageId() kann abgefragt werden, welcher Tab
240                   umbenannt wurde.
241                   Es sollte einer der folgenden Werte zurückgegeben
242                   werden:
243                   TAB_RENAMING_YES
244                   Der Tab wird umbenannt.
245                   TAB_RENAMING_NO
246                   Der Tab wird nicht umbenannt, der Editmodus bleibt
247                   jedoch aktiv, so das der Anwender den Namen
248                   entsprechend anpassen kann.
249                   TAB_RENAMING_CANCEL
250                   Der Editmodus wird abgebrochen und der alte
251                   Text wieder hergestellt.
252 EndRenaming()   - Dieser Handler wird gerufen, wenn der Editmodus
253                   beendet wurde. Mit GetEditPageId() kann abgefragt
254                   werden, welcher Tab umbenannt wurde. Mit
255                   IsEditModeCanceled() kann abgefragt werden, ob der
256                   Modus abgebrochen wurde und der Name dadurch nicht
257                   geändert wurde.
258 
259 
260 Maximale Pagebreite
261 -------------------
262 
263 Die Pagebreite der Tabs kann begrenzt werden, damit ein einfacheres
264 Navigieren über diese möglich ist. Wenn der Text dann nicht komplett
265 angezeigt werden kann, wird er mit ... abgekürzt und in der Tip-
266 oder der aktiven Hilfe (wenn kein Hilfetext gesetzt ist) wird dann der
267 ganze Text angezeigt. Mit EnableAutoMaxPageWidth() kann eingestellt
268 werden, ob die maximale Pagebreite sich nach der gerade sichtbaren
269 Breite richten soll (ist der default). Ansonsten kann auch die
270 maximale Pagebreite mit SetMaxPageWidth() (in Pixeln) gesetzt werden
271 (die AutoMaxPageWidth wird dann ignoriert).
272 
273 
274 KontextMenu
275 -----------
276 
277 Wenn ein kontextsensitives PopupMenu anzeigt werden soll, muss der
278 Command-Handler überlagert werden. Mit GetPageId() und bei
279 Übergabe der Mausposition kann ermittelt werden, ob der Mausclick
280 über einem bzw. über welchem Item durchgeführt wurde.
281 */
282 
283 // -----------
284 // - WinBits -
285 // -----------
286 
287 #define WB_RANGESELECT      ((WinBits)0x00200000)
288 #define WB_MULTISELECT      ((WinBits)0x00400000)
289 #define WB_MINSCROLL        ((WinBits)0x20000000)
290 #define WB_STDTABBAR        WB_BORDER
291 
292 // ------------------
293 // - TabBarPageBits -
294 // ------------------
295 
296 typedef sal_uInt16 TabBarPageBits;
297 
298 // ------------------------
299 // - Bits for TabBarPages -
300 // ------------------------
301 
302 #define TPB_SPECIAL         ((TabBarPageBits)0x0001)
303 
304 // ----------------
305 // - TabBar-Types -
306 // ----------------
307 
308 #define TABBAR_RENAMING_YES    ((long)sal_True)
309 #define TABBAR_RENAMING_NO     ((long)sal_False)
310 #define TABBAR_RENAMING_CANCEL ((long)2)
311 
312 // ----------
313 // - TabBar -
314 // ----------
315 struct TabBar_Impl;
316 
317 class SVT_DLLPUBLIC TabBar : public Window
318 {
319     friend class    ImplTabButton;
320     friend class    ImplTabSizer;
321 
322 private:
323     ImplTabBarList* mpItemList;
324     ImplTabButton*  mpFirstBtn;
325     ImplTabButton*  mpPrevBtn;
326     ImplTabButton*  mpNextBtn;
327     ImplTabButton*  mpLastBtn;
328     TabBar_Impl*    mpImpl;
329     TabBarEdit*     mpEdit;
330     XubString       maEditText;
331     Color           maSelColor;
332     Color           maSelTextColor;
333     Size            maWinSize;
334     long            mnMaxPageWidth;
335     long            mnCurMaxWidth;
336     long            mnOffX;
337     long            mnOffY;
338     long            mnLastOffX;
339     long            mnSplitSize;
340     sal_uLong           mnSwitchTime;
341     WinBits         mnWinStyle;
342     sal_uInt16          mnCurPageId;
343     sal_uInt16          mnFirstPos;
344     sal_uInt16          mnDropPos;
345     sal_uInt16          mnSwitchId;
346     sal_uInt16          mnEditId;
347     sal_Bool            mbFormat;
348     sal_Bool            mbFirstFormat;
349     sal_Bool            mbSizeFormat;
350     sal_Bool            mbAutoMaxWidth;
351     sal_Bool            mbInSwitching;
352     sal_Bool            mbAutoEditMode;
353     sal_Bool            mbEditCanceled;
354     sal_Bool            mbDropPos;
355     sal_Bool            mbInSelect;
356     sal_Bool            mbSelColor;
357     sal_Bool            mbSelTextColor;
358     sal_Bool            mbMirrored;
359     Link            maSelectHdl;
360     Link            maDoubleClickHdl;
361     Link            maSplitHdl;
362     Link            maActivatePageHdl;
363     Link            maDeactivatePageHdl;
364     Link            maStartRenamingHdl;
365     Link            maAllowRenamingHdl;
366     Link            maEndRenamingHdl;
367 
368     using Window::ImplInit;
369     SVT_DLLPRIVATE void            ImplInit( WinBits nWinStyle );
370     SVT_DLLPRIVATE void            ImplInitSettings( sal_Bool bFont, sal_Bool bBackground );
371     SVT_DLLPRIVATE void            ImplGetColors( Color& rFaceColor, Color& rFaceTextColor,
372                                    Color& rSelectColor, Color& rSelectTextColor );
373     SVT_DLLPRIVATE void            ImplShowPage( sal_uInt16 nPos );
374     SVT_DLLPRIVATE sal_Bool            ImplCalcWidth();
375     SVT_DLLPRIVATE void            ImplFormat();
376     SVT_DLLPRIVATE sal_uInt16          ImplGetLastFirstPos();
377     SVT_DLLPRIVATE void            ImplInitControls();
378     SVT_DLLPRIVATE void            ImplEnableControls();
379     SVT_DLLPRIVATE void         ImplSelect();
380     SVT_DLLPRIVATE void         ImplActivatePage();
381     SVT_DLLPRIVATE long         ImplDeactivatePage();
382                     DECL_DLLPRIVATE_LINK( ImplClickHdl, ImplTabButton* );
383 
384 public:
385     static const sal_uInt16 APPEND;
386     static const sal_uInt16 PAGE_NOT_FOUND;
387 
388                     TabBar( Window* pParent, WinBits nWinStyle = WB_STDTABBAR );
389     virtual         ~TabBar();
390 
391     virtual void    MouseMove( const MouseEvent& rMEvt );
392     virtual void    MouseButtonDown( const MouseEvent& rMEvt );
393     virtual void    MouseButtonUp( const MouseEvent& rMEvt );
394     virtual void    Paint( const Rectangle& rRect );
395     virtual void    Resize();
396     virtual void    RequestHelp( const HelpEvent& rHEvt );
397     virtual void    StateChanged( StateChangedType nStateChange );
398     virtual void    DataChanged( const DataChangedEvent& rDCEvt );
399 
400     virtual void    Select();
401     virtual void    DoubleClick();
402     virtual void    Split();
403     virtual void    ActivatePage();
404     virtual long    DeactivatePage();
405     virtual long    StartRenaming();
406     virtual long    AllowRenaming();
407     virtual void    EndRenaming();
408     virtual void    Mirror();
409 
410     void            InsertPage( sal_uInt16 nPageId, const XubString& rText,
411                                 TabBarPageBits nBits = 0,
412                                 sal_uInt16 nPos = TabBar::APPEND );
413     void            RemovePage( sal_uInt16 nPageId );
414     void            MovePage( sal_uInt16 nPageId, sal_uInt16 nNewPos );
415 
416     Color           GetTabBgColor( sal_uInt16 nPageId ) const;
417     void            SetTabBgColor( sal_uInt16 nPageId, const Color& aTabBgColor );
418     sal_Bool        IsDefaultTabBgColor( sal_uInt16 nPageId );
419 
420     void            Clear();
421 
422     void            EnablePage( sal_uInt16 nPageId, sal_Bool bEnable = sal_True );
423     sal_Bool            IsPageEnabled( sal_uInt16 nPageId ) const;
424 
425     void            SetPageBits( sal_uInt16 nPageId, TabBarPageBits nBits = 0 );
426     TabBarPageBits  GetPageBits( sal_uInt16 nPageId ) const;
427 
428     sal_uInt16          GetPageCount() const;
429     sal_uInt16          GetPageId( sal_uInt16 nPos ) const;
430     sal_uInt16          GetPagePos( sal_uInt16 nPageId ) const;
431     sal_uInt16          GetPageId( const Point& rPos ) const;
432     Rectangle       GetPageRect( sal_uInt16 nPageId ) const;
433     // returns the rectangle in which page tabs are drawn
434     Rectangle       GetPageArea() const;
435 
436     void            SetCurPageId( sal_uInt16 nPageId );
GetCurPageId() const437     sal_uInt16          GetCurPageId() const { return mnCurPageId; }
438 
439     void            SetFirstPageId( sal_uInt16 nPageId );
GetFirstPageId() const440     sal_uInt16          GetFirstPageId() const { return GetPageId( mnFirstPos ); }
441     void            MakeVisible( sal_uInt16 nPageId );
442 
443     void            SelectPage( sal_uInt16 nPageId, sal_Bool bSelect = sal_True );
444     void            SelectPageRange( sal_Bool bSelect = sal_False,
445                                      sal_uInt16 nStartPos = 0,
446                                      sal_uInt16 nEndPos = TabBar::APPEND );
447     sal_uInt16          GetSelectPage( sal_uInt16 nSelIndex = 0 ) const;
448     sal_uInt16          GetSelectPageCount() const;
449     sal_Bool            IsPageSelected( sal_uInt16 nPageId ) const;
450 
EnableAutoMaxPageWidth(sal_Bool bEnable=sal_True)451     void            EnableAutoMaxPageWidth( sal_Bool bEnable = sal_True ) { mbAutoMaxWidth = bEnable; }
IsAutoMaxPageWidthEnabled() const452     sal_Bool            IsAutoMaxPageWidthEnabled() const { return mbAutoMaxWidth; }
453     void            SetMaxPageWidth( long nMaxWidth );
GetMaxPageWidth() const454     long            GetMaxPageWidth() const { return mnMaxPageWidth; }
ResetMaxPageWidth()455     void            ResetMaxPageWidth() { SetMaxPageWidth( 0 ); }
IsMaxPageWidth() const456     sal_Bool            IsMaxPageWidth() const { return mnMaxPageWidth != 0; }
457 
EnableEditMode(sal_Bool bEnable=sal_True)458     void            EnableEditMode( sal_Bool bEnable = sal_True ) { mbAutoEditMode = bEnable; }
IsEditModeEnabled() const459     sal_Bool            IsEditModeEnabled() const { return mbAutoEditMode; }
460     sal_Bool            StartEditMode( sal_uInt16 nPageId );
461     void            EndEditMode( sal_Bool bCancel = sal_False );
SetEditText(const XubString & rText)462     void            SetEditText( const XubString& rText ) { maEditText = rText; }
GetEditText() const463     const XubString& GetEditText() const { return maEditText; }
IsInEditMode() const464     sal_Bool            IsInEditMode() const { return (mpEdit != NULL); }
IsEditModeCanceled() const465     sal_Bool            IsEditModeCanceled() const { return mbEditCanceled; }
GetEditPageId() const466     sal_uInt16          GetEditPageId() const { return mnEditId; }
467 
468     /** Mirrors the entire control including position of buttons and splitter.
469         Mirroring is done relative to the current direction of the GUI.
470         @param bMirrored  sal_True = the control will draw itself RTL in LTR GUI,
471             and vice versa; sal_False = the control behaves according to the
472             current direction of the GUI. */
473     void            SetMirrored( sal_Bool bMirrored = sal_True );
474     /** Returns sal_True, if the control is set to mirrored mode (see SetMirrored()). */
IsMirrored() const475     sal_Bool            IsMirrored() const { return mbMirrored; }
476 
477     /** Sets the control to LTR or RTL mode regardless of the GUI direction.
478         @param bRTL  sal_False = the control will draw from left to right;
479             sal_True = the control will draw from right to left. */
480     void            SetEffectiveRTL( sal_Bool bRTL );
481     /** Returns sal_True, if the control draws from right to left (see SetEffectiveRTL()). */
482     sal_Bool            IsEffectiveRTL() const;
483 
484     sal_Bool            StartDrag( const CommandEvent& rCEvt, Region& rRegion );
485     sal_uInt16          ShowDropPos( const Point& rPos );
486     void            HideDropPos();
487     sal_Bool            SwitchPage( const Point& rPos );
488     void            EndSwitchPage();
IsInSwitching()489     sal_Bool            IsInSwitching() { return mbInSwitching; }
490 
491     void            SetSelectColor();
492     void            SetSelectColor( const Color& rColor );
GetSelectColor() const493     const Color&    GetSelectColor() const { return maSelColor; }
IsSelectColor() const494     sal_Bool            IsSelectColor() const { return mbSelColor; }
495     void            SetSelectTextColor();
496     void            SetSelectTextColor( const Color& rColor );
GetSelectTextColor() const497     const Color&    GetSelectTextColor() const { return maSelTextColor; }
IsSelectTextColor() const498     sal_Bool            IsSelectTextColor() const { return mbSelTextColor; }
499 
500     void            SetPageText( sal_uInt16 nPageId, const XubString& rText );
501     XubString       GetPageText( sal_uInt16 nPageId ) const;
502     void            SetHelpText( sal_uInt16 nPageId, const XubString& rText );
503     XubString       GetHelpText( sal_uInt16 nPageId ) const;
504     void            SetHelpId( sal_uInt16 nPageId, const rtl::OString& nHelpId );
505     rtl::OString    GetHelpId( sal_uInt16 nPageId ) const;
506 
GetSplitSize() const507     long            GetSplitSize() const { return mnSplitSize; }
508     long            GetMinSize() const;
509 
SetHelpText(const XubString & rText)510     void            SetHelpText( const XubString& rText )
511                         { Window::SetHelpText( rText ); }
GetHelpText() const512     XubString       GetHelpText() const
513                     { return Window::GetHelpText(); };
SetHelpId(const rtl::OString & rId)514     void            SetHelpId( const rtl::OString& rId )
515                         { Window::SetHelpId( rId ); }
GetHelpId() const516     const rtl::OString& GetHelpId() const
517                         { return Window::GetHelpId(); }
518 
519     void            SetStyle( WinBits nStyle );
GetStyle() const520     WinBits         GetStyle() const { return mnWinStyle; }
521 
522     Size            CalcWindowSizePixel() const;
523 
SetSelectHdl(const Link & rLink)524     void            SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
GetSelectHdl() const525     const Link&     GetSelectHdl() const { return maSelectHdl; }
SetDoubleClickHdl(const Link & rLink)526     void            SetDoubleClickHdl( const Link& rLink ) { maDoubleClickHdl = rLink; }
GetDoubleClickHdl() const527     const Link&     GetDoubleClickHdl() const { return maDoubleClickHdl; }
SetSplitHdl(const Link & rLink)528     void            SetSplitHdl( const Link& rLink ) { maSplitHdl = rLink; }
GetSplitHdl() const529     const Link&     GetSplitHdl() const { return maSplitHdl; }
SetActivatePageHdl(const Link & rLink)530     void            SetActivatePageHdl( const Link& rLink ) { maActivatePageHdl = rLink; }
GetActivatePageHdl() const531     const Link&     GetActivatePageHdl() const { return maActivatePageHdl; }
SetDeactivatePageHdl(const Link & rLink)532     void            SetDeactivatePageHdl( const Link& rLink ) { maDeactivatePageHdl = rLink; }
GetDeactivatePageHdl() const533     const Link&     GetDeactivatePageHdl() const { return maDeactivatePageHdl; }
SetStartRenamingHdl(const Link & rLink)534     void            SetStartRenamingHdl( const Link& rLink ) { maStartRenamingHdl = rLink; }
GetStartRenamingHdl() const535     const Link&     GetStartRenamingHdl() const { return maStartRenamingHdl; }
SetAllowRenamingHdl(const Link & rLink)536     void            SetAllowRenamingHdl( const Link& rLink ) { maAllowRenamingHdl = rLink; }
GetAllowRenamingHdl() const537     const Link&     GetAllowRenamingHdl() const { return maAllowRenamingHdl; }
SetEndRenamingHdl(const Link & rLink)538     void            SetEndRenamingHdl( const Link& rLink ) { maEndRenamingHdl = rLink; }
GetEndRenamingHdl() const539     const Link&     GetEndRenamingHdl() const { return maEndRenamingHdl; }
540 
541     // accessibility
542     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
543 };
544 
545 #endif  // _TABBAR_HXX
546 
547 /* vim: set noet sw=4 ts=4: */
548