Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef INCLUDED_SVTOOLS_TABBAR_HXX
21 : #define INCLUDED_SVTOOLS_TABBAR_HXX
22 :
23 : #include <svtools/svtdllapi.h>
24 : #include <tools/link.hxx>
25 : #include <vcl/window.hxx>
26 : #include <vector>
27 :
28 : class MouseEvent;
29 : class TrackingEvent;
30 : class DataChangedEvent;
31 : class ImplTabButton;
32 : class ImplTabSizer;
33 : class TabBarEdit;
34 :
35 : struct ImplTabBarItem;
36 : typedef ::std::vector< ImplTabBarItem* > ImplTabBarList;
37 :
38 :
39 : // - Dokumentation -
40 :
41 :
42 : /*
43 :
44 : Erlaubte StyleBits
45 : ------------------
46 :
47 : WB_SCROLL - Die Tabs koennen ueber ein Extra-Feld gescrollt werden
48 : WB_MINSCROLL - Die Tabs koennen ueber 2 zusaetzliche Buttons gescrollt werden
49 : WB_RANGESELECT - Zusammenhaengende Bereiche koennen selektiert werden
50 : WB_MULTISELECT - Einzelne Tabs koennen selektiert werden
51 : WB_BORDER - Oben und unten wird ein Strich gezeichnet
52 : WB_TOPBORDER - Oben wird ein Border gezeichnet
53 : WB_3DTAB - Die Tabs und der Border werden in 3D gezeichnet
54 : WB_DRAG - Vom TabBar wird ein StartDrag-Handler gerufen, wenn
55 : Drag and Drop gestartet werden soll. Es wird ausserdem
56 : im TabBar mit EnableDrop() Drag and Drop eingeschaltet.
57 : WB_SIZEABLE - Vom TabBar wird ein Split-Handler gerufen, wenn der Anwender
58 : den TabBar in der Breite aendern will
59 : WB_STDTABBAR - WB_BORDER
60 :
61 : Wenn man den TabBar zum Beispiel als Property-Bar benutzen moechte, sollten
62 : die WinBits WB_TOPBORDER und WB_3DTAB anstatt WB_BORDER gesetzt werden.
63 :
64 :
65 : Erlaubte PageBits
66 : -----------------
67 :
68 : TPB_SPECIAL - Andere Darstellung des TabTextes, zum Beispiel fuer
69 : Szenario-Seiten.
70 :
71 :
72 : Handler
73 : -------
74 :
75 : Select - Wird gerufen, wenn eine Tab selektiert oder
76 : deselektiert wird
77 : DoubleClick - Wird gerufen, wenn ein DoubleClick im TabBar ausgeloest
78 : wurde. Innerhalb des Handlers liefert GetCurPageId() die
79 : angeklickte Tab zurueck oder 0, wenn keine Tab angeklickt
80 : wurde
81 : ActivatePage - Wird gerufen, wenn eine andere Seite aktiviert wird.
82 : GetCurPageId() gibt die aktivierte Seite zurueck.
83 : DeactivatePage - Wird gerufen, wenn eine Seite deaktiviert wird. Wenn
84 : eine andere Seite aktiviert werden darf, muss sal_True
85 : zurueckgegeben werden, wenn eine andere Seite von
86 : der Aktivierung ausgeschlossen werden soll, muss
87 : sal_False zurueckgegeben werden. GetCurPageId() gibt die
88 : zu deaktivierende Seite zurueck.
89 :
90 :
91 :
92 : Drag and Drop
93 : -------------
94 :
95 : Fuer Drag and Drop muss das WinBit WB_DRAG gesetzt werden. Ausserdem
96 : muss der Command-, QueryDrop-Handler und der Drop-Handler ueberlagert
97 : werden. Dabei muss in den Handlern folgendes implementiert werden:
98 :
99 : Command - Wenn in diesem Handler das Dragging gestartet werden
100 : soll, muss StartDrag() gerufen werden. Diese Methode
101 : selektiert dann den entsprechenden Eintrag oder gibt
102 : sal_False zurueck, wenn das Dragging nicht durchgefuhert
103 : werden kann.
104 :
105 : QueryDrop - Dieser Handler wird von StarView immer dann gerufen, wenn
106 : bei einem Drag-Vorgang die Maus ueber das Fenster gezogen
107 : wird (siehe dazu auch SV-Doku). In diesem Handler muss
108 : festgestellt werden, ob ein Drop moeglich ist. Die
109 : Drop-Position kann im TabBar mit ShowDropPos() angezeigt
110 : werden. Beim Aufruf muss die Position vom Event uebergeben
111 : werden. Wenn sich die Position am linken oder rechten
112 : Rand befindet, wird automatisch im TabBar gescrollt.
113 : Diese Methode gibt auch die entsprechende Drop-Position
114 : zurueck, die auch fuer ein Drop gebraucht wird. Wenn das
115 : Fenster beim Drag verlassen wird, kann mit HideDropPos()
116 : die DropPosition wieder weggenommen werden. Es ist dadurch
117 : auch moeglich, ein von ausserhalb des TabBars ausgeloestes
118 : Drag zu verarbeiten.
119 :
120 : Drop - Im Drop-Handler muessen dann die Pages verschoben werden,
121 : oder die neuen Pages eingefuegt werden. Die entsprechende
122 : Drop-Postion kann mit ShowDropPos() ermittelt werden.
123 :
124 : Folgende Methoden werden fuer Drag and Drop gebraucht und muessen von
125 : den Handlern gerufen werden:
126 :
127 : StartDrag - Muss aus dem Commnad-Handler gerufen werden. Als Parameter
128 : muss der CommandEvent uebergeben werden und eine Referenz
129 : auf eine Region. Diese vcl::Region muss dann bei ExecuteDrag()
130 : uebergeben werden, wenn der Rueckgabewert sagt, das
131 : ExecuteDrag durchgefuehrt werden soll. Falls der Eintrag
132 : nicht selektiert ist, wird er vorher als aktueller
133 : Eintrag gesetzt. Es ist daher darauf zu achten, das aus
134 : dieser Methode heraus der Select-Handler gerufen werden
135 : kann.
136 :
137 : ShowDropPos - Diese Methode muss vom QueryDrop-Handler gerufen werden,
138 : damit der TabBar anzeigt, wo die Tabs eingefuegt werden.
139 : Diese Methode kann auch im Drop-Handler benutzt werden,
140 : um die Position zu ermitteln wo die Tabs eingefuegt werden
141 : sollen. In der Methode muss die Position vom Event
142 : uebergeben werden. Diese Methode gibt die Position zurueck,
143 : wo die Tabs eingefuegt werden sollen.
144 :
145 : HideDropPos - Diese Methode nimmt die vorher mit ShowDropPos() angezeigte
146 : DropPosition wieder zurueck. Diese Methode sollte dann
147 : gerufen werden, wenn bei QueryDrop() das Fenster verlassen
148 : wird oder der Dragvorgang beendet wurde.
149 :
150 : Folgende Methoden koennen eingesetzt werden, wenn bei D&D die Seiten
151 : umgeschaltet werden sollen:
152 :
153 : SwitchPage - Diese Methode muss vom QueryDrop-Handler gerufen werden,
154 : wenn die Seite ueber der sich der Mousepointer befindet,
155 : umgeschaltet werden soll. Diese Methode sollte jedesmal
156 : gerufen werden, wenn der QueryDrop-Handler gerufen wird.
157 : Das umschalten der Seite passiert zeitverzoegert (500 ms)
158 : und wird automatisch von dieser Methode verwaltet.
159 : In der Methode muss die Position vom Event uebergeben
160 : werden. Diese Methode gibt sal_True zurueck, wenn die Page
161 : umgeschaltet wurde.
162 :
163 : EndSwitchPage - Diese Methode setzt die Daten fuer das umschalten der
164 : Seiten zurueck. Diese Methode sollte dann gerufen werden,
165 : wenn bei QueryDrop() das Fenster verlassen wird oder
166 : der Dragvorgang beendet wurde.
167 :
168 : IsInSwitching - Mit dieser Methode kann im ActivatePage()/DeactivatePage()
169 : abgefragt werden, ob dies durch SwitchPage() veranlasst
170 : wurde. So kann dann beispielsweise in DeactivatePage()
171 : das Umschalten ohne eine Fehlerbox verhindert werden.
172 :
173 :
174 : Fenster-Resize
175 : --------------
176 :
177 : Wenn das Fenster vom Anwender in der Breite geaendert werden kann, dann
178 : muss das WinBit WB_SIZEABLE gesetzt werden. In diesem Fall muss noch
179 : folgender Handler ueberlagert werden:
180 :
181 : Split - Wenn dieser Handler gerufen wird, sollte das Fenster
182 : auf die Breite angepasst werden, die von GetSplitSize()
183 : zurueckgegeben wird. Dabei wird keine minimale und
184 : maximale Breite beruecksichtig. Eine minimale Breite
185 : kann mit GetMinSize() abgefragt werden und die maximale
186 : Breite muss von der Anwendung selber berechnet werden.
187 : Da nur Online-Resize unterstuetzt wird, muss das Fenster
188 : innerhalb dieses Handlers in der Breite geaendert
189 : werden und eventuell abhaengige Fenster ebenfalls. Fuer
190 : diesen Handler kann auch mit SetSplitHdl() ein
191 : Link gesetzt werden.
192 :
193 : Folgende Methoden liefern beim Splitten weitere Informationen:
194 :
195 : GetSplitSize() - Liefert die Breite des TabBars zurueck, auf die der
196 : Anwender das Fenster resizen will. Dabei wird keine
197 : minimale oder maximale Breite beruecksichtigt. Es wird
198 : jedoch nie eine Breite < 5 zurueckgeliefert. Diese Methode
199 : liefert nur solange richtige Werte, wie Splitten aktiv
200 : ist.
201 :
202 : GetMinSize() - Mit dieser Methode kann eine minimale Fensterbreite
203 : abgefragt werden, so das min. etwas eines Tabs sichtbar
204 : ist. Jedoch kann der TabBar immer noch schmaler gesetzt
205 : werden, als die Breite, die diese Methode zurueckliefert.
206 : Diese Methode kann auch aufgerufen werden, wenn kein
207 : Splitten aktiv ist.
208 :
209 :
210 : Edit-Modus
211 : ----------
212 :
213 : Der Tabbar bietet auch Moeglichkeiten, das der Anwender in den Tabreitern
214 : die Namen aendern kann.
215 :
216 : EnableEditMode - Damit kann eingestellt werden, das bei Alt+LeftClick
217 : StartEditMode() automatisch vom TabBar gerufen wird.
218 : Im StartRenaming()-Handler kann dann das Umbenennen
219 : noch abgelehnt werden.
220 : StartEditMode - Mit dieser Methode wird der EditModus auf einem
221 : Tab gestartet. sal_False wird zurueckgegeben, wenn
222 : der Editmodus schon aktiv ist, mit StartRenaming()
223 : der Modus abgelehnt wurde oder kein Platz zum
224 : Editieren vorhanden ist.
225 : EndEditMode - Mit dieser Methode wird der EditModus beendet.
226 : SetEditText - Mit dieser Methode kann der Text im AllowRenaming()-
227 : Handler noch durch einen anderen Text ersetzt werden.
228 : GetEditText - Mit dieser Methode kann im AllowRenaming()-Handler
229 : der Text abgefragt werden, den der Anwender eingegeben
230 : hat.
231 : IsInEditMode - Mit dieser Methode kann abgefragt werden, ob der
232 : Editmodus aktiv ist.
233 : IsEditModeCanceled - Mit dieser Methode kann im EndRenaming()-
234 : Handler abgefragt werden, ob die Umbenenung
235 : abgebrochen wurde.
236 : GetEditPageId - Mit dieser Methode wird in den Renaming-Handlern
237 : abgefragt, welcher Tab umbenannt wird/wurde.
238 :
239 : StartRenaming() - Dieser Handler wird gerufen, wenn ueber StartEditMode()
240 : der Editmodus gestartet wurde. Mit GetEditPageId()
241 : kann abgefragt werden, welcher Tab umbenannt werden
242 : soll. sal_False sollte zurueckgegeben werden, wenn
243 : der Editmodus nicht gestartet werden soll.
244 : AllowRenaming() - Dieser Handler wird gerufen, wenn der Editmodus
245 : beendet wird (nicht bei Cancel). In diesem Handler
246 : kann dann getestet werden, ob der Text OK ist.
247 : Mit GetEditPageId() kann abgefragt werden, welcher Tab
248 : umbenannt wurde.
249 : Es sollte einer der folgenden Werte zurueckgegeben
250 : werden:
251 : TAB_RENAMING_YES
252 : Der Tab wird umbenannt.
253 : TAB_RENAMING_NO
254 : Der Tab wird nicht umbenannt, der Editmodus bleibt
255 : jedoch aktiv, so das der Anwender den Namen
256 : entsprechent anpassen kann.
257 : TAB_RENAMING_CANCEL
258 : Der Editmodus wird abgebrochen und der alte
259 : Text wieder hergestellt.
260 : EndRenaming() - Dieser Handler wird gerufen, wenn der Editmodus
261 : beendet wurde. Mit GetEditPageId() kann abgefragt
262 : werden, welcher Tab umbenannt wurde. Mit
263 : IsEditModeCanceled() kann abgefragt werden, ob der
264 : Modus abgebrochen wurde und der Name dadurch nicht
265 : geaendert wurde.
266 :
267 :
268 : Maximale Pagebreite
269 : -------------------
270 :
271 : Die Pagebreite der Tabs kann begrenzt werden, damit ein einfacheres
272 : Navigieren ueber diese moeglich ist. Wenn der Text dann nicht komplett
273 : angezeigt werden kann, wird er mit ... abgekuerzt und in der Tip-
274 : oder der aktiven Hilfe (wenn kein Hilfetext gesetzt ist) wird dann der
275 : ganze Text angezeigt. Mit EnableAutoMaxPageWidth() kann eingestellt
276 : werden, ob die maximale Pagebreite sich nach der gerade sichtbaren
277 : Breite richten soll (ist der default). Ansonsten kann auch die
278 : maximale Pagebreite mit SetMaxPageWidth() (in Pixeln) gesetzt werden
279 : (die AutoMaxPageWidth wird dann ignoriert).
280 :
281 :
282 : KontextMenu
283 : -----------
284 :
285 : Wenn ein kontextsensitives PopupMenu anzeigt werden soll, muss der
286 : Command-Handler ueberlagert werden. Mit GetPageId() und bei
287 : Uebergabe der Mausposition kann ermittelt werden, ob der Mausclick
288 : ueber einem bzw. ueber welchem Item durchgefuehrt wurde.
289 : */
290 :
291 :
292 : // - WinBits -
293 :
294 :
295 : #define WB_RANGESELECT ((WinBits)0x00200000)
296 : #define WB_MULTISELECT ((WinBits)0x00400000)
297 : #define WB_TOPBORDER ((WinBits)0x04000000)
298 : #define WB_3DTAB ((WinBits)0x08000000)
299 : #define WB_MINSCROLL ((WinBits)0x20000000)
300 : #define WB_INSERTTAB ((WinBits)0x40000000)
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 - used in TabBar::AllowRenaming
317 :
318 : enum TabBarAllowRenamingReturnCode {
319 : TABBAR_RENAMING_NO,
320 : TABBAR_RENAMING_YES,
321 : TABBAR_RENAMING_CANCEL
322 : };
323 :
324 :
325 : // - TabBar -
326 :
327 : struct TabBar_Impl;
328 : struct ImplTabBarItem;
329 :
330 : class SVT_DLLPUBLIC TabBar : public vcl::Window
331 : {
332 : friend class ImplTabButton;
333 : friend class ImplTabSizer;
334 :
335 : private:
336 : ImplTabBarList* mpItemList;
337 : ImplTabButton* mpFirstBtn;
338 : ImplTabButton* mpPrevBtn;
339 : ImplTabButton* mpNextBtn;
340 : ImplTabButton* mpLastBtn;
341 : TabBar_Impl* mpImpl;
342 : TabBarEdit* mpEdit;
343 : OUString maEditText;
344 : Color maSelColor;
345 : Color maSelTextColor;
346 : Size maWinSize;
347 : long mnMaxPageWidth;
348 : long mnCurMaxWidth;
349 : long mnOffX;
350 : long mnOffY;
351 : long mnLastOffX;
352 : long mnSplitSize;
353 : sal_uLong mnSwitchTime;
354 : WinBits mnWinStyle;
355 : sal_uInt16 mnCurPageId;
356 : sal_uInt16 mnFirstPos;
357 : sal_uInt16 mnDropPos;
358 : sal_uInt16 mnSwitchId;
359 : sal_uInt16 mnEditId;
360 : bool mbFormat;
361 : bool mbFirstFormat;
362 : bool mbSizeFormat;
363 : bool mbAutoMaxWidth;
364 : bool mbInSwitching;
365 : bool mbAutoEditMode;
366 : bool mbEditCanceled;
367 : bool mbDropPos;
368 : bool mbInSelect;
369 : bool mbSelColor;
370 : bool mbSelTextColor;
371 : bool mbMirrored;
372 : bool mbHasInsertTab; // if true, the tab bar has an extra tab at the end.
373 : bool mbScrollAlwaysEnabled;
374 : Link maSelectHdl;
375 : Link maSplitHdl;
376 : Link maScrollAreaContextHdl;
377 : size_t maCurrentItemList;
378 :
379 : using Window::ImplInit;
380 : SVT_DLLPRIVATE void ImplInit( WinBits nWinStyle );
381 : SVT_DLLPRIVATE void ImplInitSettings( bool bFont, 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 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 bool ImplDeactivatePage();
393 : SVT_DLLPRIVATE void ImplPrePaint();
394 : SVT_DLLPRIVATE ImplTabBarItem* ImplGetLastTabBarItem( sal_uInt16 nItemCount );
395 : SVT_DLLPRIVATE Rectangle ImplGetInsertTabRect(ImplTabBarItem* pItem) const;
396 : DECL_DLLPRIVATE_LINK( ImplClickHdl, ImplTabButton* );
397 :
398 : ImplTabBarItem* seek( size_t i );
399 : ImplTabBarItem* prev();
400 : ImplTabBarItem* next();
401 :
402 : public:
403 : static const sal_uInt16 APPEND;
404 : static const sal_uInt16 PAGE_NOT_FOUND;
405 : static const sal_uInt16 INSERT_TAB_POS;
406 :
407 : TabBar( vcl::Window* pParent, WinBits nWinStyle = WB_STDTABBAR );
408 : virtual ~TabBar();
409 :
410 : virtual void MouseMove( const MouseEvent& rMEvt ) SAL_OVERRIDE;
411 : virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
412 : virtual void MouseButtonUp( const MouseEvent& rMEvt ) SAL_OVERRIDE;
413 : virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE;
414 : virtual void Resize() SAL_OVERRIDE;
415 : virtual void RequestHelp( const HelpEvent& rHEvt ) SAL_OVERRIDE;
416 : virtual void StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
417 : virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
418 :
419 : virtual void Select();
420 : virtual void DoubleClick();
421 : virtual void Split();
422 : virtual void ActivatePage();
423 : virtual bool DeactivatePage();
424 : virtual bool StartRenaming();
425 : virtual TabBarAllowRenamingReturnCode AllowRenaming();
426 : virtual void EndRenaming();
427 : virtual void Mirror();
428 :
429 : void InsertPage( sal_uInt16 nPageId, const OUString& rText,
430 : TabBarPageBits nBits = 0,
431 : sal_uInt16 nPos = TabBar::APPEND );
432 : void RemovePage( sal_uInt16 nPageId );
433 : void MovePage( sal_uInt16 nPageId, sal_uInt16 nNewPos );
434 :
435 : Color GetTabBgColor( sal_uInt16 nPageId ) const;
436 : void SetTabBgColor( sal_uInt16 nPageId, const Color& aTabBgColor );
437 : bool IsDefaultTabBgColor( sal_uInt16 nPageId );
438 :
439 : void Clear();
440 :
441 : bool IsPageEnabled( sal_uInt16 nPageId ) const;
442 :
443 : void SetPageBits( sal_uInt16 nPageId, TabBarPageBits nBits = 0 );
444 : TabBarPageBits GetPageBits( sal_uInt16 nPageId ) const;
445 :
446 : sal_uInt16 GetPageCount() const;
447 : sal_uInt16 GetPageId( sal_uInt16 nPos ) const;
448 : sal_uInt16 GetPagePos( sal_uInt16 nPageId ) const;
449 : sal_uInt16 GetPageId( const Point& rPos, bool bCheckInsTab = false ) const;
450 : Rectangle GetPageRect( sal_uInt16 nPageId ) const;
451 : // returns the rectangle in which page tabs are drawn
452 : Rectangle GetPageArea() const;
453 :
454 : void SetCurPageId( sal_uInt16 nPageId );
455 4022 : sal_uInt16 GetCurPageId() const { return mnCurPageId; }
456 :
457 : void SetFirstPageId( sal_uInt16 nPageId );
458 : sal_uInt16 GetFirstPageId() const { return GetPageId( mnFirstPos ); }
459 : void MakeVisible( sal_uInt16 nPageId );
460 :
461 : void SelectPage( sal_uInt16 nPageId, bool bSelect = true );
462 : sal_uInt16 GetSelectPageCount() const;
463 : bool IsPageSelected( sal_uInt16 nPageId ) const;
464 :
465 : void EnableAutoMaxPageWidth( bool bEnable = true ) { mbAutoMaxWidth = bEnable; }
466 : bool IsAutoMaxPageWidthEnabled() const { return mbAutoMaxWidth; }
467 : void SetMaxPageWidth( long nMaxWidth );
468 : long GetMaxPageWidth() const { return mnMaxPageWidth; }
469 : void ResetMaxPageWidth() { SetMaxPageWidth( 0 ); }
470 : bool IsMaxPageWidth() const { return mnMaxPageWidth != 0; }
471 :
472 918 : void EnableEditMode( bool bEnable = true ) { mbAutoEditMode = bEnable; }
473 : bool IsEditModeEnabled() const { return mbAutoEditMode; }
474 : bool StartEditMode( sal_uInt16 nPageId );
475 : void EndEditMode( bool bCancel = false );
476 0 : void SetEditText( const OUString& rText ) { maEditText = rText; }
477 0 : const OUString& GetEditText() const { return maEditText; }
478 0 : bool IsInEditMode() const { return (mpEdit != NULL); }
479 0 : bool IsEditModeCanceled() const { return mbEditCanceled; }
480 0 : sal_uInt16 GetEditPageId() const { return mnEditId; }
481 :
482 : /** Mirrors the entire control including position of buttons and splitter.
483 : Mirroring is done relative to the current direction of the GUI.
484 : @param bMirrored sal_True = the control will draw itself RTL in LTR GUI,
485 : and vice versa; sal_False = the control behaves according to the
486 : current direction of the GUI. */
487 : void SetMirrored(bool bMirrored = true);
488 : /** Returns sal_True, if the control is set to mirrored mode (see SetMirrored()). */
489 0 : bool IsMirrored() const { return mbMirrored; }
490 :
491 : /** Sets the control to LTR or RTL mode regardless of the GUI direction.
492 : @param bRTL sal_False = the control will draw from left to right;
493 : sal_True = the control will draw from right to left. */
494 : void SetEffectiveRTL( bool bRTL );
495 : /** Returns true, if the control draws from right to left (see SetEffectiveRTL()). */
496 : bool IsEffectiveRTL() const;
497 :
498 : bool StartDrag( const CommandEvent& rCEvt, vcl::Region& rRegion );
499 : sal_uInt16 ShowDropPos( const Point& rPos );
500 : void HideDropPos();
501 : bool SwitchPage( const Point& rPos );
502 : void EndSwitchPage();
503 : bool IsInSwitching() { return mbInSwitching; }
504 :
505 : const Color& GetSelectColor() const { return maSelColor; }
506 : bool IsSelectColor() const { return mbSelColor; }
507 : const Color& GetSelectTextColor() const { return maSelTextColor; }
508 : bool IsSelectTextColor() const { return mbSelTextColor; }
509 :
510 : void SetPageText( sal_uInt16 nPageId, const OUString& rText );
511 : OUString GetPageText( sal_uInt16 nPageId ) const;
512 : OUString GetHelpText( sal_uInt16 nPageId ) const;
513 : OString GetHelpId( sal_uInt16 nPageId ) const;
514 :
515 0 : long GetSplitSize() const { return mnSplitSize; }
516 :
517 : void SetHelpText( const OUString& rText )
518 : { Window::SetHelpText( rText ); }
519 : OUString GetHelpText() const
520 : { return Window::GetHelpText(); };
521 372 : void SetHelpId( const OString& rId )
522 372 : { Window::SetHelpId( rId ); }
523 : const OString& GetHelpId() const
524 : { return Window::GetHelpId(); }
525 :
526 : void SetStyle( WinBits nStyle );
527 2404 : WinBits GetStyle() const { return mnWinStyle; }
528 :
529 : void SetScrollAlwaysEnabled(bool bScrollAlwaysEnabled);
530 :
531 : Size CalcWindowSizePixel() const;
532 :
533 0 : void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
534 758 : void SetSplitHdl( const Link& rLink ) { maSplitHdl = rLink; }
535 546 : void SetScrollAreaContextHdl( const Link& rLink ) { maScrollAreaContextHdl = rLink; }
536 :
537 : // accessibility
538 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE;
539 : };
540 :
541 : #endif // INCLUDED_SVTOOLS_TABBAR_HXX
542 :
543 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|