Dodatkowe możliwości kreatorów

Artykuł opisuje dodatkowe możliwości kreatorów.

Bardziej złożona nawigacja w kreatorze

Normalnie, kreator wyświetla każdy wizardpage w takiej kolejności w jakiej umieściłeś je w pliku XUL. Jednak w pewnych przypadkach możesz chcieć mieć różne strony kreatorów pojawiające się w zależności od tego co użytkownik wybrał na wcześniejszych stronach.

W tym przypadku umieść atrybut pageid na każdej z tych stron powinno być to ustawione jako identyfikator dla każdej strony. Potem, aby nawigować po stronie użyj jednej z dwóch metod:

  1. Ustaw atrybut next na każdej stronie na ID kolejnej strony. Możesz zmienić te atrybuty jako potrzebne do nawigacji po różnych stronach.
  2. Wywołaj metodę goTo(). Pobiera ona jeden argument, ID strony do której chcesz przejść. Możesz wywołać tą metodę w funkcji obsługi onpageadvanced lub onwizardnext. Pamiętaj o zwróceniu fałszu w tym przypadku, ponieważ już sam zmieniłeś stronę. Odnotuj metodę goTo(), ponieważ powoduje zmianę strony, ponownie uruchamiając zdarzenia, więc musisz się upewnić, że obsługujesz ten przypadek.

Na przykład tu mamy zbiór stron kreatora (wewnętrzna zawartość została pominięta):

<wizardpage pageid="type" next="font">
<wizardpage pageid="font" next="done">
<wizardpage pageid="color" next="done">
<wizardpage pageid="done">

Kreator zawsze zaczyna się od pierwszej strony, którą w tym przypadku ma ID strony type. Następna strona jest stroną z ID strony font, więc kreator będzie nawigował do kolejnej strony. Na stronie z ID strony font, widzimy, że kolejna strona to done, więc ta strona będzie wyświetlona później Strona z ID strony done nie ma atrybutu next, więc będzie to ostatnia strona. Skrypt będzie modyfikował atrybut next, jeśli to konieczne do pójścia do strony z ID strony color kiedy to potrzebne.

Funkcje kreatora

Kreator pracuje podobnie jak panel kart, z wyjątkiem tego, że karty nie są wyświetlane, a użytkownik przechodzi pomiędzy stronami używając przycisków ułożonych na dole. Ponieważ wszystkie strony są częścią tego samego pliku, wszystkie wartości tych pól na wszystkich stronach będą zapamiętane. Zatem, nie musisz wczytywać i zapisywać informacji pomiędzy stronami.

Jednakże, możesz chcieć wykonać sprawdzanie każde pole na każdej stronie. Do tego użyj funkcji obsługi opisanych w poprzednim rozdziale. Jeśli pole jest niepoprawne, możesz wyświetlić alarm. W pewnych przypadkach byłoby bardziej dogodne zablokować przycisk Next dopóki ie zostanie wprowadzona poprawna wartość.

Kreator ma własność canAdvance, która może być ustawiona na prawdę do wskazania, że przycisk Next powinien być włączony. Jeśli ustawimy ją na fałsz, przycisk Next będzie zablokowany. Możesz zmienić tą własność kiedy niepoprawna lub poprawna dana zostanie wprowadzona.

W poniższym przykładzie, użytkownik musi wprowadzić tajny kod do pola tekstowego na pierwszej stronie kreatora. Funkcja checkCode() jest wywoływana kiedy pierwsza strona jest pokazywana jako wskazywana przez atrybut onpageshow. Jest również wywoływane, kiedy jest naciśnięty klawisz w polu tekstowym, określającym czy przycisk Next powinien ponownie być włączony.

Przykład kreatora

Źródła

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<wizard id="theWizard" title="Secret Code Wizard"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<script>
function checkCode(){
  document.getElementById('theWizard').canAdvance = (document.getElementById('secretCode').value == "cabbage");
} 
</script>

  <wizardpage onpageshow="checkCode(); return true;">
       <label value="Enter the secret code:"/>
       <textbox id="secretCode" onkeyup="checkCode();"/>
  </wizardpage>

  <wizardpage>
       <label value="That is the correct secret code."/>
  </wizardpage>

</wizard>

Jest również odpowiednia własność canRewind, której możesz użyć do włączenia lub wyłączenia przycisku Back. Obie własności są modyfikowane automatycznie kiedy przełączasz strony. Zatem, przycisk Back będzie wyłączony na pierwszej stronie, więc nie musisz ustawiać go sam.

Inna użyteczną własnością kreatora jest currentPage, która przechowuje odniesienie do aktualnie wyświetlanego wizardpage. Możesz również modyfikować bieżąca stronę przez zmianę tej własności. Jeśli zmienisz ją, będzie uruchomione kilka zdarzeń zmian strony.

W kolejnym artykule dowiemy się jak stosować nakładki do obsługi wspólnej zawartości.

Autorzy i etykiety dokumentu

 Autorzy tej strony: fscholz, teoli, Ptak82, Mgjbot
 Ostatnia aktualizacja: fscholz,