Mit Hilfe der Tabulator-Makros lassen sich Tabulator-Zeilen erstellen. Wird ein Tabulator angeklickt, wird derzugehörige Bereich eingeblendet und anderen Tabulatoren zugeordnete Bereiche werden ausgeblendet.
#INCLUDE Tabs.inc {{TabSelectorsTop| myTab | Line VMargin }} {{TabLabel| Label: }} {{TabSel| tab0 }} {{TabSelDefault| tab1 }} {{TabSel| tab2 }} {{TabSelDisabled| tab3 }} {{EndTabSelectors}} {{TabBoxes| myTab }} box 0 {{NextTabBox}} box 1 {{NextTabBox}} box 2 {{NextTabBox}} box 3 {{EndTabBoxes}}
So sieht es aus:
box 0
box 1
box 2
box 3
Die Tabulator-Zeile wird durch die Makros zwischen TabSelectorsTop oder TabSelectorsBottom und EndTabSelectors definiert. Die zugehörige Gruppe von TabBoxen muss zwischen den Makros TabBoxes und EndTabBoxes stehen. Die Tabulator-Zeile und die zugehörigen Boxen müssen die selbe ID haben, im Beispiel myTab.
Mit den Angaben TabSelectorsTop wird die Tabulator-Zeile so formatiert, wie sie oberhalb der Boxen steht mit TabSelectorsBottom entspricht die Formatierung einer Zeile unterhalb der Boxen. Mit Line und VMargin, das sind CSS-Klassen, kann das Aussehen der Tabulator-Zeile beeinflusst werden. Anstatt TabSelectorsTop und TabSelectorsBottom kann auch einfach TabSelectors verwendet werden und mit einem der CSS-Klassen Top oder Bottom die Formatierung gesteuert werden (oder mit einer anderen, selbst definierten Klasse).
{{TabSelectorsTop| ID | TabKlassen }} {{TabSelectorsBottom| ID | TabKlassen }} {{TabSelectors| ID | Klassen }}
{{TabLabel| Text | LabelID}}
{{TabSel| TabText | TabID }} {{TabSelDefault| TabText | TabID }} {{TabSelDisabled| TabText | TabID }}
{{TabSelButton| Text | ButtonID | ButtonKlassen }} {{TabSelButtonDisabled| Text | ButtonID | ButtonKlassen }}
{{EndTabSelectors}}
{{TabBoxes| ID | Indizes }} {{NextTabBox| Indizes }} {{EndTabBoxes}}
Es wird eine Gruppe von TabBox Bereichen definiert, von denen üblicherweise zu einer Zeit jeweils einer angezeigt werden soll. Mit einer Gruppe von Tabulator-ähnlichen TabSelectors kann der Anwender steuern, welche Bereiche er sehen will.
Tabs.Select( id, ix ); Tabs.Reset( id ); Tabs.SelectNext( id, wrap ); Tabs.SelectPrev( id, wrap );
var ix = Tabs.GetCurrent( id ); var ix = Tabs.GetDefault( id ); var num = Tabs.GetNTabs( id ); var num = Tabs.GetNBoxes( id );
var boxTab = Tabs.FindBoxTab( name ); var tabDomObj = Tabs.GetTabDomObj( id, ix ); var boxDomObj = Tabs.GetBoxDomObj( id, ix ); var tabData = Tabs.GetTabData( id, ix ); var boxData = Tabs.GetBoxData( id, ix );
Tabs.SetText( id, ix, text ); var text = Tabs.GetText( id, ix );
if (Tabs.IsSelected( id, ix )) ... if (Tabs.IsEnabled( id, ix )) ... if (Tabs.IsBoxVisible( id, ix )) ... Tabs.SetEnabled( id, ix, enabled ); Tabs.SetEnabled( id, -1, enabled ); Tabs.SetEnabled( null, -1, enabled ); Tabs.SetEnabled( id ); var enabled = Tabs.ToggleEnabled( id, ix );
Tabs.AddSelectHandler( id, func( BoxTab ) ); Tabs.RemoveSelectHandler( id, func( BoxTab ) ); Tabs.AddVisiChangeHandler( boxChildDomObj, func( BoxData ) ); Tabs.RemoveVisiChangeHandler( boxChildDomObj, func( BoxData ) );
var boxData = Tabs.FindBoxDataByChildDomObj( domObj ); var boxData = Tabs.FindBoxDataByDomObj( boxDataDomObj );
var buttonData = Tabs.FindButtonData( id, button ); var domObj = Tabs.GetButtonDomObj( id, button ); var buttonId = Tabs.GetButtonId( id, button ); var ix = Tabs.GetButtonIndex( id, buttonId );
if (Tabs.IsButtonEnabled( id, button )) ... Tabs.SetButtonEnabled( id, button, enabled ); Tabs.SetButtonEnabled( buttonData, enabled ); Tabs.SetButtonEnabled( null, -1, enabled ); Tabs.SetButtonEnabled( id, -1, enabled ); Tabs.SetButtonEnabled( ); var enabled = Tabs.ToggleButtonEnabled( id, button ); var enabled = Tabs.ToggleButtonEnabled( buttonData );
var text = Tabs.GetButtonText( id, button ); var text = Tabs.GetButtonText( buttonData ); Tabs.SetButtonText( id, button, text ); Tabs.SetButtonText( buttonData, text );
Tabs.AddButtonClickHandler( id, button, func( ButtonData, xEvent ) ); Tabs.AddButtonClickHandler( buttonData, func( ButtonData, xEvent ) ); Tabs.AddButtonClickHandler( null, -1, func( ButtonData, xEvent ) );
Tabs.RemoveButtonClickHandler( id, button, func( ButtonData, xEvent ) ); Tabs.RemoveButtonClickHandler( buttonData, func( ButtonData, xEvent ) ); Tabs.RemoveButtonClickHandler( null, -1, func( ButtonData, xEvent ) );
Alle Memebers der folgenden Klassen sind read only und dürfen nur über Tabs-Funktion geändert werden. Auf private Memebers darf nicht zugegriffen werden.
Tabs = { BoxTabList: Array of BoxTab (private) IsInit: boolean }
BoxTab = { Name: String TabContainer: TabContainer BoxContainer: BoxContainer ButtonDataList: Array of ButtonData CurrentTab: Integer DefaultTab: Integer }
TabContainer = { DomObj: DomObject TabDataList: Array of TabData }
BoxContainer = { DomObj: DomObject BoxDataList: Array of BoxData }
TabData = { BoxTab: BoxTab DomObj: DomObject Index: Integer IsSelected: Boolean }
BoxData = { BoxTab: BoxTab DomObj: DomObject Indexes: Number or Array of Number IsVisible: Boolean }
ButtonData = { BoxTab: BoxTab DomObj: DomObject Id: String (optional) Index: Integer IsEnabled: Boolean }
Die folgenden Zeilen zeigen die Anwendung einiger obiger Funktionen:
box 0
box 1
box 2
* [javascript:Tabs.Select('myTab',2)|Tab2 selektieren] * [javascript:Tabs.SelectNext('myTab')|Nächsten Tab selektieren] * [javascript:alert('Current = ' + Tabs.GetCurrent('myTab'))|GetCurrent] * [javascript:alert('NTabs = ' + Tabs.GetNTabs('myTab'))|GetNTabs] * [javascript:alert('Current Tab Text = ' + Tabs.GetText('myTab',Tabs.GetCurrent('myTab')))|Current Tab Text] * [javascript:alert('Default Tab Text = ' + Tabs.GetText('myTab',Tabs.GetDefault('myTab')))|Default Tab Text] * [javascript:ChangeAllTabTexts()|Alle Tab Texte ändern] <jscript> function ChangeAllTabTexts() { var nTabs = Tabs.GetNTabs( 'myTab' ); for (var i = 0; i < nTabs; i++) { Tabs.SetText( 'myTab', i, 'TAB-' + i ); } } </jscript>
sieht so aus:
In der Tabulator-Zeile können auch Buttons mit hinterlegten JavaScript Funktionen definiert werden. Diese Buttons können aktiviert und deaktiviert werden. Angesprochen werden diese Buttons über ihre HTML-id oder den Index. Der erste Button in einer Tab-Zeile hat den Index 0. Damit ein Button auf einen Klick reagiert, muss ihm ein Event-Handler zugewiesen werden. Das folgende Beispiel zeigt wie das funktioniert:
box 0
box 1
box 2
{{TabSelectorsTop| TabButtonDemo | Line VMargin}} {{TabLabel| Label: }} {{TabSelButton| On | OnOffButton }} {{TabSelButtonDisabled| Next | NextButton }} {{TabSelButtonDisabled| Prev | PrevButton }} {{TabSelButton| Tab On | OnOffTabButton }} {{TabSel| tab0 }} {{TabSel| tab1 }} {{TabSelDisabled| tab2 }} {{EndTabSelectors}} <jscript> xOnDomReady( function() { var boxTabName = 'TabButtonDemo'; Tabs.AddButtonClickHandler( boxTabName, 'OnOffButton', function( buttonData ) { var enabled = Tabs.ToggleButtonEnabled( buttonData.BoxTab, 'NextButton' ); Tabs.ToggleButtonEnabled( buttonData.BoxTab, 'PrevButton' ); Tabs.SetButtonText( buttonData, enabled ? 'Off' : 'On' ); } ); Tabs.AddButtonClickHandler( boxTabName, 'NextButton', function( buttonData ) { Tabs.SelectNext( buttonData.BoxTab ); } ); Tabs.AddButtonClickHandler( boxTabName, 'PrevButton', function( buttonData ) { Tabs.SelectPrev( buttonData.BoxTab ); } ); Tabs.AddButtonClickHandler( boxTabName, 'OnOffTabButton', function( buttonData ) { var enabled = Tabs.ToggleEnabled( buttonData.BoxTab, 2 ); Tabs.SetButtonText( buttonData, enabled ? 'Tab Off' : 'Tab On' ); } ); } ); </jscript> {{TabBoxes|TabButtonDemo}} box 0 {{NextTabBox}} box 1 {{NextTabBox}} box 2 {{EndTabBoxes}}