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 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 -
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 : struct ImplTabBarItem;
328 :
329 : class SVT_DLLPUBLIC TabBar : public Window
330 : {
331 : friend class ImplTabButton;
332 : friend class ImplTabSizer;
333 :
334 : private:
335 : ImplTabBarList* mpItemList;
336 : ImplTabButton* mpFirstBtn;
337 : ImplTabButton* mpPrevBtn;
338 : ImplTabButton* mpNextBtn;
339 : ImplTabButton* mpLastBtn;
340 : TabBar_Impl* mpImpl;
341 : TabBarEdit* mpEdit;
342 : OUString maEditText;
343 : Color maSelColor;
344 : Color maSelTextColor;
345 : Size maWinSize;
346 : long mnMaxPageWidth;
347 : long mnCurMaxWidth;
348 : long mnOffX;
349 : long mnOffY;
350 : long mnLastOffX;
351 : long mnSplitSize;
352 : sal_uLong mnSwitchTime;
353 : WinBits mnWinStyle;
354 : sal_uInt16 mnCurPageId;
355 : sal_uInt16 mnFirstPos;
356 : sal_uInt16 mnDropPos;
357 : sal_uInt16 mnSwitchId;
358 : sal_uInt16 mnEditId;
359 : bool mbFormat;
360 : bool mbFirstFormat;
361 : bool mbSizeFormat;
362 : bool mbAutoMaxWidth;
363 : bool mbInSwitching;
364 : bool mbAutoEditMode;
365 : bool mbEditCanceled;
366 : bool mbDropPos;
367 : bool mbInSelect;
368 : bool mbSelColor;
369 : bool mbSelTextColor;
370 : bool mbMirrored;
371 : bool mbHasInsertTab; // if true, the tab bar has an extra tab at the end.
372 : bool mbScrollAlwaysEnabled;
373 : Link maSelectHdl;
374 : Link maDoubleClickHdl;
375 : Link maSplitHdl;
376 : Link maActivatePageHdl;
377 : Link maDeactivatePageHdl;
378 : Link maStartRenamingHdl;
379 : Link maAllowRenamingHdl;
380 : Link maEndRenamingHdl;
381 : Link maScrollAreaContextHdl;
382 : size_t maCurrentItemList;
383 :
384 : using Window::ImplInit;
385 : SVT_DLLPRIVATE void ImplInit( WinBits nWinStyle );
386 : SVT_DLLPRIVATE void ImplInitSettings( bool bFont, bool bBackground );
387 : SVT_DLLPRIVATE void ImplGetColors( Color& rFaceColor, Color& rFaceTextColor,
388 : Color& rSelectColor, Color& rSelectTextColor );
389 : SVT_DLLPRIVATE void ImplShowPage( sal_uInt16 nPos );
390 : SVT_DLLPRIVATE bool ImplCalcWidth();
391 : SVT_DLLPRIVATE void ImplFormat();
392 : SVT_DLLPRIVATE sal_uInt16 ImplGetLastFirstPos();
393 : SVT_DLLPRIVATE void ImplInitControls();
394 : SVT_DLLPRIVATE void ImplEnableControls();
395 : SVT_DLLPRIVATE void ImplSelect();
396 : SVT_DLLPRIVATE void ImplActivatePage();
397 : SVT_DLLPRIVATE long ImplDeactivatePage();
398 : SVT_DLLPRIVATE void ImplPrePaint();
399 : SVT_DLLPRIVATE ImplTabBarItem* ImplGetLastTabBarItem( sal_uInt16 nItemCount );
400 : SVT_DLLPRIVATE Rectangle ImplGetInsertTabRect(ImplTabBarItem* pItem) const;
401 : DECL_DLLPRIVATE_LINK( ImplClickHdl, ImplTabButton* );
402 :
403 : ImplTabBarItem* seek( size_t i );
404 : ImplTabBarItem* prev();
405 : ImplTabBarItem* next();
406 :
407 : public:
408 : static const sal_uInt16 APPEND;
409 : static const sal_uInt16 PAGE_NOT_FOUND;
410 : static const sal_uInt16 INSERT_TAB_POS;
411 :
412 : TabBar( Window* pParent, WinBits nWinStyle = WB_STDTABBAR );
413 : virtual ~TabBar();
414 :
415 : virtual void MouseMove( const MouseEvent& rMEvt ) SAL_OVERRIDE;
416 : virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
417 : virtual void MouseButtonUp( const MouseEvent& rMEvt ) SAL_OVERRIDE;
418 : virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE;
419 : virtual void Resize() SAL_OVERRIDE;
420 : virtual void RequestHelp( const HelpEvent& rHEvt ) SAL_OVERRIDE;
421 : virtual void StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
422 : virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
423 :
424 : virtual void Select();
425 : virtual void DoubleClick();
426 : virtual void Split();
427 : virtual void ActivatePage();
428 : virtual long DeactivatePage();
429 : virtual long StartRenaming();
430 : virtual long AllowRenaming();
431 : virtual void EndRenaming();
432 : virtual void Mirror();
433 :
434 : void InsertPage( sal_uInt16 nPageId, const OUString& rText,
435 : TabBarPageBits nBits = 0,
436 : sal_uInt16 nPos = TabBar::APPEND );
437 : void RemovePage( sal_uInt16 nPageId );
438 : void MovePage( sal_uInt16 nPageId, sal_uInt16 nNewPos );
439 :
440 : Color GetTabBgColor( sal_uInt16 nPageId ) const;
441 : void SetTabBgColor( sal_uInt16 nPageId, const Color& aTabBgColor );
442 : bool IsDefaultTabBgColor( sal_uInt16 nPageId );
443 :
444 : void Clear();
445 :
446 : bool IsPageEnabled( sal_uInt16 nPageId ) const;
447 :
448 : void SetPageBits( sal_uInt16 nPageId, TabBarPageBits nBits = 0 );
449 : TabBarPageBits GetPageBits( sal_uInt16 nPageId ) const;
450 :
451 : sal_uInt16 GetPageCount() const;
452 : sal_uInt16 GetPageId( sal_uInt16 nPos ) const;
453 : sal_uInt16 GetPagePos( sal_uInt16 nPageId ) const;
454 : sal_uInt16 GetPageId( const Point& rPos, bool bCheckInsTab = false ) const;
455 : Rectangle GetPageRect( sal_uInt16 nPageId ) const;
456 : // returns the rectangle in which page tabs are drawn
457 : Rectangle GetPageArea() const;
458 :
459 : void SetCurPageId( sal_uInt16 nPageId );
460 0 : sal_uInt16 GetCurPageId() const { return mnCurPageId; }
461 :
462 : void SetFirstPageId( sal_uInt16 nPageId );
463 : sal_uInt16 GetFirstPageId() const { return GetPageId( mnFirstPos ); }
464 : void MakeVisible( sal_uInt16 nPageId );
465 :
466 : void SelectPage( sal_uInt16 nPageId, bool bSelect = true );
467 : sal_uInt16 GetSelectPageCount() const;
468 : bool IsPageSelected( sal_uInt16 nPageId ) const;
469 :
470 : void EnableAutoMaxPageWidth( bool bEnable = true ) { mbAutoMaxWidth = bEnable; }
471 : bool IsAutoMaxPageWidthEnabled() const { return mbAutoMaxWidth; }
472 : void SetMaxPageWidth( long nMaxWidth );
473 : long GetMaxPageWidth() const { return mnMaxPageWidth; }
474 : void ResetMaxPageWidth() { SetMaxPageWidth( 0 ); }
475 : bool IsMaxPageWidth() const { return mnMaxPageWidth != 0; }
476 :
477 0 : void EnableEditMode( bool bEnable = true ) { mbAutoEditMode = bEnable; }
478 : bool IsEditModeEnabled() const { return mbAutoEditMode; }
479 : bool StartEditMode( sal_uInt16 nPageId );
480 : void EndEditMode( bool bCancel = false );
481 0 : void SetEditText( const OUString& rText ) { maEditText = rText; }
482 0 : const OUString& GetEditText() const { return maEditText; }
483 0 : bool IsInEditMode() const { return (mpEdit != NULL); }
484 0 : bool IsEditModeCanceled() const { return mbEditCanceled; }
485 0 : sal_uInt16 GetEditPageId() const { return mnEditId; }
486 :
487 : /** Mirrors the entire control including position of buttons and splitter.
488 : Mirroring is done relative to the current direction of the GUI.
489 : @param bMirrored sal_True = the control will draw itself RTL in LTR GUI,
490 : and vice versa; sal_False = the control behaves according to the
491 : current direction of the GUI. */
492 : void SetMirrored(bool bMirrored = true);
493 : /** Returns sal_True, if the control is set to mirrored mode (see SetMirrored()). */
494 0 : bool IsMirrored() const { return mbMirrored; }
495 :
496 : /** Sets the control to LTR or RTL mode regardless of the GUI direction.
497 : @param bRTL sal_False = the control will draw from left to right;
498 : sal_True = the control will draw from right to left. */
499 : void SetEffectiveRTL( bool bRTL );
500 : /** Returns true, if the control draws from right to left (see SetEffectiveRTL()). */
501 : bool IsEffectiveRTL() const;
502 :
503 : bool StartDrag( const CommandEvent& rCEvt, Region& rRegion );
504 : sal_uInt16 ShowDropPos( const Point& rPos );
505 : void HideDropPos();
506 : bool SwitchPage( const Point& rPos );
507 : void EndSwitchPage();
508 : bool IsInSwitching() { return mbInSwitching; }
509 :
510 : const Color& GetSelectColor() const { return maSelColor; }
511 : bool IsSelectColor() const { return mbSelColor; }
512 : const Color& GetSelectTextColor() const { return maSelTextColor; }
513 : bool IsSelectTextColor() const { return mbSelTextColor; }
514 :
515 : void SetPageText( sal_uInt16 nPageId, const OUString& rText );
516 : OUString GetPageText( sal_uInt16 nPageId ) const;
517 : OUString GetHelpText( sal_uInt16 nPageId ) const;
518 : OString GetHelpId( sal_uInt16 nPageId ) const;
519 :
520 0 : long GetSplitSize() const { return mnSplitSize; }
521 :
522 : void SetHelpText( const OUString& rText )
523 : { Window::SetHelpText( rText ); }
524 : OUString GetHelpText() const
525 : { return Window::GetHelpText(); };
526 0 : void SetHelpId( const OString& rId )
527 0 : { Window::SetHelpId( rId ); }
528 : const OString& GetHelpId() const
529 : { return Window::GetHelpId(); }
530 :
531 : void SetStyle( WinBits nStyle );
532 0 : WinBits GetStyle() const { return mnWinStyle; }
533 :
534 : void SetScrollAlwaysEnabled(bool bScrollAlwaysEnabled);
535 :
536 : Size CalcWindowSizePixel() const;
537 :
538 0 : void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
539 : const Link& GetSelectHdl() const { return maSelectHdl; }
540 : void SetDoubleClickHdl( const Link& rLink ) { maDoubleClickHdl = rLink; }
541 : const Link& GetDoubleClickHdl() const { return maDoubleClickHdl; }
542 0 : void SetSplitHdl( const Link& rLink ) { maSplitHdl = rLink; }
543 : const Link& GetSplitHdl() const { return maSplitHdl; }
544 : void SetActivatePageHdl( const Link& rLink ) { maActivatePageHdl = rLink; }
545 : const Link& GetActivatePageHdl() const { return maActivatePageHdl; }
546 : void SetDeactivatePageHdl( const Link& rLink ) { maDeactivatePageHdl = rLink; }
547 : const Link& GetDeactivatePageHdl() const { return maDeactivatePageHdl; }
548 : void SetStartRenamingHdl( const Link& rLink ) { maStartRenamingHdl = rLink; }
549 : const Link& GetStartRenamingHdl() const { return maStartRenamingHdl; }
550 : void SetAllowRenamingHdl( const Link& rLink ) { maAllowRenamingHdl = rLink; }
551 : const Link& GetAllowRenamingHdl() const { return maAllowRenamingHdl; }
552 : void SetEndRenamingHdl( const Link& rLink ) { maEndRenamingHdl = rLink; }
553 : const Link& GetEndRenamingHdl() const { return maEndRenamingHdl; }
554 0 : void SetScrollAreaContextHdl( const Link& rLink ) { maScrollAreaContextHdl = rLink; }
555 : const Link& GetScrollAreaContextHdl() const { return maScrollAreaContextHdl; }
556 :
557 : // accessibility
558 : virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE;
559 : };
560 :
561 : #endif // INCLUDED_SVTOOLS_TABBAR_HXX
562 :
563 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|