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