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