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