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