Archiwum dla November, 2006

XUL – kolejne dwa pliki

Dziś zamieściłem kolejne dwa przetłumaczone i troszkę przerobione pliki w przeglądarce XUL. W jednym pliku jest zamieszczone i pokazane umieszczanie obrazków, a w drugim jest pokazane dodawanie przycisków w języku XUL.

images.xul

obrazki_w_xulu2.png

Jak dodać obrazki możecie przeczytać w artykule “XUL – etykiety i obrazki“.

buttons.xul

Czyli przyciski w XUL-u :P . Szerzej o przyciskach pisałem w artykule: “XUL Przyciski okna“. W “przeglądarce” XUL zamieściłem plik w którym zobaczymy różne możliwości wykorzystania przycisków:

buttons_xul.png

Więcej w kursie XUL i dokumentacji XUL..

XUL – dwa słowa o przeglądarkach przykładów XUL

Zgodnie z tym co pisałem kilka tygodni temu, dodałem kolejna małą przeglądarkę przykładów XUL – w wykorzystanych przeze mnie przykładów z kursie XUL-a i innych. Różnią się one rozmiarami plików zawartymi w sobie.

Aby obejrzeć stronę z dodatkową zawartością, należy przejść pod adres: http://medeco.p9.pl/xul/inne/xul2.xul

W razie jakichkolwiek problemów, proszę o umieszczanie ich w komentarzach do tego wątku.

Dodatkowo do pierwszej przeglądarki przykładów XUL dodałem, kolejny plik lists.xul:

Kontrolki list zostały przeze mnie opisane w dwóch artykułach o nich.

listy_xul.png

Dodatkowe informacje uzyskasz poprzez korzystanie z kursu XUL lub dokumentacji.

Konferencja Akademii Cisco w WSHE

Wczoraj, czyli 25 listopada miałem okazję uczestniczyć w Ogólnopolskiej Konferencji Akademii Cisco. Przeznaczona była dla wszystkich, którzy uczestniczą w programie Cisco Networking Academy oraz osób go wspierających (instruktorów, administratorów itp.). W ramach spotkania w jakim miałem okazję uczestniczysz można było posłuchać o:

  • Cisco Unified Communication
  • Cisco Wireless Technology
  • Troubleshoting Common Router Issues
  • Cisco Security

Skorzystałem z zaproszenia i udałem się na oba środkowe wykłady, wrażenia jak najbardziej pozytywne. Powiem więcej jestem pod wrażeniem w jakim tempie wszystko idzie do przodu – szczególnie w sieciach bezprzewodowych. Także jeśli macie taką możliwość wysłuchania takich wykładów polecam gorąco.

cisco_wizytowka.png.jpg

Sorki za brzydki scan, ale nie mam dziś już siły na lepszy :P

XUL – siatki

XUL posiada zbiór elementów do zrobienia układu graficznego siatki elementów, wszystko to możliwe dzięki elementowi grid. Posiada duże podobieństwo w stosunku do znacznika table z języka HTML. Siatka sama w sobie nie wyświetla żadnego elementu i jest stosowana tylko do pozycjonowania elementów, coś w formie tabeli z wierszami oraz kolumnami.

Wewnątrz elementu grid, musimy zadeklarować dwa elementy; columns (kolumny) i rows (wiersze), które są zastosowane podobnie jak tabele HTML. Siatka pozwala na zawarcie treści w wiersze i kolumny. Częściej stosuje się wiersze. Możemy umieścić zawartość wewnątrz kolumn i zastosować dodatkowe wiersze do określenia wyglądu.

Aby zadeklarować ustawienie wierszy stosujemy znacznik rows, który powinien być elementem potomnym grid. Wewnątrz powinniśmy dodać elementy row, które są stosowane dla każdego wiersza. Wewnątrz elementu wiersza powinniśmy umieścić zawartość jaką chcemy mieć wewnątrz tego wiersza.

Każda kolumna jest zadeklarowana znacznikiem column. Każda kolumna posiada dodany atrybut flex. Każdy wiersz zawiera cztery elementy, przyciski i etykiety. Pierwszy element w każdym elemencie row jest umieszczony w pierwszej kolumnie siatki, a drugi element każdego wiersza jest umieszczony w drugiej kolumnie.

Przykład (*skróconego kodu) został pokazany na zrzucie poniżej w sekcji “Dane w wierszach“:

<grid>
  <columns>
    <column flex="1" />
    <column flex="1" />
    <column flex="1" />
    <column flex="1" />
  </columns>

  <rows>
    <row>
      <button label="Imię" />
      <button label="Płeć" />
      <button label="Kolor" />
      <button label="Opis" />
    </row>
    <row>
      <label value="Tomasz" />
      <label value="Mężczyzna" />
      <label value="Szary" />
      <label value="Ptaszor" />
    </row>
  </rows>
</grid>

Kolumny są deklarowane poprzez element columns, który powinien być umieszczony jako element potomny grid. Wewnątrz, którego przechodzimy do pojedynczego elementu column, jednego dla każdej kolumny.

Ta siatka posiada cztery wiersze i dwie kolumny. Elementy row są rozmieszczone do określenia jak wiele ich tam jest. Możemy dodać atrybut flex do wiersza, aby uczynić go elastycznym. Zawartość jest umieszczona wewnątrz każdej kolumny. Pierwszy element wewnątrz każdego elementu column jest umieszczony w pierwszym wierszu, drugi element w drugim wierszu itd..

Przykład (*skróconego kodu) został pokazany na zrzucie poniżej w sekcji “Dane w kolumnach“:

<grid>
  <rows>
    <row />
    <row />
    <row />
    <row />
  </rows>>

  <columns>
    <column flex="1">
      <button label="Imię" />
      <button label="Płeć" />
      <button label="Kolor" />
      <button label="Opis" />
    </column>
    <column flex="1">
      <label value="Tomasz" />
      <label value="Mężczyzna" />
      <label value="Szary" />
      <label value="Ptaszor" />
    </column>
  </columns>
</grid>

Nie ma sposobu na połączenie komórki szczególnie wielu kolumn lub wierszy. Jednak możliwe jest stworzenie wiersza lub kolumny, które obejmują całą szerokość lub wysokość siatki. Robi się to poprzez dodanie elementu do wewnątrz elementu rows, który nie jest wewnątrz elementu row. Możemy zastosować typ pudełka i wstawić inne elementy wewnątrz niego, jeśli chcemy użyć kilku elementów.

Przykład (*skróconego kodu) został pokazany na zrzucie poniżej w sekcji “Przykład łączenia kolumn“:

<grid>
  <columns>
    <column flex="1"/>
    <column flex="1"/>
  </columns>

  <rows>
    <row>
      <label value="północno-zachodni
"/>
      <label value="północno-wschodni"/>
    </row>
    <button label="równik"/>
    <row>
      <label value="południowo-zachodni"/>
      <label value="południowo-wschodni"/>
    </row>
  </rows>
</grid>

Przycisk będzie wystarczający, aby wypełnić całą szerokość siatki, ponieważ nie jest wewnątrz wiersza siatki. Możesz używać podobnej metody, aby dodać element pomiędzy dwoma kolumnami. Będzie to wystarczające, aby wypełnić wysokość siatki.

Zobacz działanie powyższego kodu. Ten sam kod zamieszczony został w przeglądarce XUL. W tej przeglądarce mamy możliwość obejrzenia pełnego kodu ze zrzutu poniżej.

grids_xul_siatki.png

Więcej w kursie XUL i dokumentacji XUL.

* Kod w przykładach skróciłem ze względu na jego rozmiar.

XUL – jak dodać elementy języka HTML?

Do wszystkich elementów języka XUL możemy dodać elementy języka HTML. Dzięki umieszczeniu elementów HTML wewnątrz XUL-a, mamy możliwość dodawania na przykład apletów Javy. Pomimo możliwości umieszczania tych elementów, należy jak najrzadziej to czynić.
Pierwszym ważnym krokiem ku zagnieżdżaniu HTML-a w naszych przykładach jest to, że umieszczane elementy muszą zawsze być pisane z małej litery, tak jak w XML-u.

Chcąc stosować elementy języka HTML w pliku XUL, musimy zadeklarować, że chcemy tego dokonać. Aby to uczynić stosujemy przestrzeń nazw XHTML. Poniższy fragment kodu powinien zostać dodany do atrybutu elementu window:

xmlns:html="http://www.w3.org/1999/xhtml"

Poniżej przykład zastosowania przestrzeni nazw w jakimś konkretnym przykładzie:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
   id="identyfikator-okna"
   title="tytuł"
   orient="horizontal"
  xmlns:html="http://www.w3.org/1999/xhtml"
   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

Elementy języka HTML możemy stosować według następujących kilku reguł:

  • Należy dodawać do każdego znacznika prefiks html:.
  • Stosować powyżej omówioną przestrzeń nazw.
  • Znaczniki muszą być pisane z małej litery.
  • Do wszystkich atrybutów, należy stosować cudzysłowy.
  • Do elementów bez znacznika kończącego, należy stosować zamykający znacznik /.

Przykład zastosowania elementów HTML:

<html:img src="obrazek.jpg"/>

<html:input type="checkbox" value="true"/>

<html:table>
  <html:tr>
    <html:td>
      Tabela
    </html:td>
  </html:tr>
</html:table>

W XUL-u zostały zagnieżdżone; obrazek, pole wyboru i tabela z jedną komórką. Zwróćcie uwagę na zastosowanie slasha (/) w obrazku oraz w polu wyboru. Jeśli opuścimy część html: przeglądarka pomyśli, że element był elementem XUL i nie będą wyświetlone, ponieważ elementy img, input oraz table nie są poprawnymi znacznikami XUL.

Użyjmy poznanych do tej pory wiadomości:

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

<window id="przykladowe-okno" title="Przykład HTML-a w XUL-u"
        xmlns:html="http://www.w3.org/1999/xhtml"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<html:p>
  Tekst w znaczniku p:
  <html:input id="tekst"/>
  <button id="przycisk" label="OK"/>
</html:p>

</window>

Co wyświetli nam:

uzycie_znacznika_p_w_xulu.png

Tekst został wyświetlony ponieważ został poprawnie użyty znacznik p. Natomiast jeśli byśmy chcieli umieścić tekst poza znacznikiem, to nie zostałby on w ogóle wyświetlony.

Dodatkowo podam jeszcze trzy przypadki w jakich nie zostanie poprawnie zinterpretowany HTML w XUL-u:

<html:po>Przypadek 1</html:po>
<div>Przypadek 2</div>
<html:description value="Przypadek 3"/>
  • Przypadek 1po nie jest poprawnym znacznikiem HTML-a, a przeglądarka nie wie jak odczytać ten znacznik.
  • Przypadek 2div jest poprawny, ale tylko w HTML-u. Aby działał i tu, musimy dodać prefiks html:.
  • Przypadek 3 – Element description jest poprawny tylko w XUL-u, a nie w HTML-u. Nie powinniśmy dodawać prefiksu html: przed tym elementem.

To tyle, więcej jak zwykle w kursie i dokumentacji XUL.

XUL – crop

Bardzo ciekawym i użytecznym atrybutem XUL-a jest crop. Czym jest:

Jeśli etykieta elementu (np. button, label, description) jest za długa, aby umieścić ją w daną przestrzeń, to jej tekst zostanie skrócony po określonej stronie przy pomocy atrybutu crop. Zastosowany zostanie wielokropek (...), w miejscu skróconego tekstu. Jeśli kierunek pudełka jest określony w lewą stronę to skrócenie tekstu nastąpi w tym samym kierunku (czyli z lewej strony). Kierunek w jakim ma nastąpić skrócenie określają wartości:

  • start – Tekst będzie skrócony z jego lewej strony.
  • end – Tekst będzie skrócony z jego prawej strony.
  • center – Tekst będzie skrócony w środku, pokazując oba końce: początek i koniec tekstu.
  • none – Tekst nie będzie skrócony przy zastosowaniu wielokropka. Ewentualne skrócenie możemy wywołać za pomocą stylów CSS.
  • left(Przestarzały) Tekst będzie skrócony z jego lewej strony.
  • right(Przestarzały) Tekst będzie skrócony z jego prawej strony.

W przeglądarce XUL, już został dodany przykład dotyczący atrybutu crop. Aby przejść do samego przykładu: cropping.xul. Kod opisywanego atrybutu i sposób w jaki może zostać on użyty:

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

<window title="XUL - crop..."
        xmlns:html="http://www.w3.org/1999/xhtml"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

 <script type="application/x-javascript"
	  src="chrome://global/content/dialogOverlay.js" />

<description><html:h1>XUL - crop...</html:h1></description>

 <vbox flex="1" style="overflow: auto">
  <groupbox>
   <caption label="Na początku" />

   <description crop="start"
      value="Jedna linia opisu, jeśli zabraknie miejsca, to zostanie on skrócony i obcięty
 z lewej strony. W miejscu obcięcia zobaczymy trzy kropki." />

   <button crop="start" 
           label="Treść zawarta na przycisku pokazuje, że etykieta zostanie wyświetlona poza przyciskiem
 jeśli zmniejszymy okno." />

   <label crop="start"
          value="Jedna linia etykiety,
jeśli zabraknie miejsca, to zostanie ona skrócona i obcięta z lewej strony. W miejscu obcięcia
zobaczymy trzy kropki." />
  </groupbox>

  <groupbox>
    <caption label="Na końcu" />

    <description crop="end"
                value="Jedna linia opisu, jeśli zabraknie miejsca, to zostanie on skrócony i obcięty
z prawej strony. W miejscu obcięcia zobaczymy trzy kropki." />

    <button crop="end"
            label="Treść zawarta na przycisku pokazuje, że etykieta zostanie wyświetlona
 poza przyciskiem jeśli zmniejszymy okno." />
    <label crop="end"
           value="Jedna linia etykiety,
jeśli zabraknie miejsca, to zostanie ona skrócona i obcięta z prawej strony. W miejscu obcięcia
 zobaczymy trzy kropki." />
  </groupbox>

  <groupbox>
    <caption label="Po środku" />

    <description crop="center"
                value="Jedna linia opisu, jeśli zabraknie miejsca, to zostanie on skrócony i obcięty
 na środku. W miejscu obcięcia zobaczymy trzy kropki." />

    <button crop="center" 
            label="Treść zawarta na przycisku pokazuje, że etykieta zostanie wyświetlona poza przyciskiem
 jeśli zmniejszymy okno." />

    <label crop="center"
           value="Jedna linia etykiety,
jeśli zabraknie miejsca, to zostanie ona skrócona i obcięta na środku. W miejscu obcięcia
 zobaczymy trzy kropki." />

  </groupbox>

 </vbox>
</window>

Rezultat:

crop.png

BTW: Do samej przeglądarki XUL, dodałem przejścia z danego przykładu do opisującego go artykułu na moim blogu (osiągnąłem to poprzez zagnieżdżenie elementów HTML w XUL-u, ale o tym niebawem).

Standardowo odsyłam do kursu XUL-a i do cały czas powstającej polskiej wersji dokumentacji.

Webstarfestival

Od kilku dni słyszymy o Webstarfestival, konkursie, który przyjął, że promuje najlepsze strony WWW w polskim Internecie. Jako członek zespołu Osiolki.net, zespołu zajmującego się poprawą Polskiego Internetu, chciałbym wyrazić kilka swoich opinii na temat stron, jakie są uważane za te najlepsze naszego polskiego netu. Podkreślam, że jest to moja własna opinia na temat tego festiwalu i nie należy jej wiązać z zespołem Osiolki.net. Na początek, czym jest festiwal:

> Webstarfestival to konkurs promujący najlepsze strony www. Nagrody przyznaje Akademia Internetu oraz internauci. 24 paździrnika 2006 roku zakończone zostało przyjmowanie zgłoszeń do drugiej edycji konkursu. Gala Webstarfestival 2.0 odbędzie się 30 listopada 2006.

Pomijając te dwa błędy, w opisie festiwalu, oburza mnie fakt, że strony do konkursu nie są przez nikogo chyba sprawdzane. Wchodzimy na początek na stronę na której możemy oddać swój głos w różnych kategoriach. Na dzień dobry widzimy:

webstar_kategoria_publiczne.png

Kategoria stron publicznych na pierwszy rzut oka, zachęciła mnie do przyjrzenia się tym stronom, które jeśli się tu znalazły w tej kategorii powinny być bardzo dobrze wykonanymi stronami o kodzie, którego powinny pozazdrościć niejedne strony prywatne lub firmowe.

Niestety rozczarowanie przyszło jeszcze szybciej niż miał przyjść podziw i uznanie dla wykonawców tych pięciu stron wymienionych w tej kategorii. Czytając, że jest to kategoria stron publicznych, nakłada na te strony pewne rygorystyczne zasady jakie te strony powinny spełniać. Przede wszystkim, to że są to strony użytku publicznego i są tworzone ze środków publicznych. Czyli w skrócie za nasze pieniądze. Tu widać jak są marnotrawione, złość bierze, że jeszcze autorzy, którzy zgarnęli na pewno nie jeden tysiąc za takie strony, bezczelnie się nimi chwalą poprzez ten konkurs! Za równo kod, jak i efekt jest strasznie mizerny i co najgorsza, nadal nie jest brana pod uwagę ustawa o tym jak mają być budowane strony publiczne:

Rozporządzenie Rady Ministrów z dnia 11 października 2005 r. (http://isip.sejm.gov.pl/servlet/Search?todo=open&id=WDU20052121766) obliguje do trzymania się standardów dotyczących dokumentów publikowanych w Internecie przez ministerstwa, urzędy i inne instytucje. W skrócie; wszystkie strony z tej kategorii powinny spełniać wymagania dostępności dla osób niepełnosprawnych! Przecież, każdy ma prawo korzystać ze stron WWW, bez względu na jakiekolwiek problemy, czy to ze słuchem, wzrokiem lub innymi schorzeniami. Niestety pierwsze testy jakie podjąłem, dały wynik negatywny. Aby nie być gołosłownym. Poniżej test pod względem WAI, dla każdej ze stron z tej kategorii:

Jak widać powyżej, strony podobno te najlepsze z publicznych nie przechodzą testu pod względem zasad WAI.
Patrząc zatem w źródło stron, jeszcze bardziej zniechęciło mnie to do pozytywnego wrażenia o konkursie i o omawianej kategorii. Dla ciekawych, jakiego typu “kfiatki” mamy w kodzie, poniżej zrzut ze źródła Urzędu Miasta w Łodzi.

webstar_kategoria_publiczne_zrodlo_lodz.png

I co Wy na to? Ale to jeszcze nic, popatrzcie na ten zrzut strony Ministerstwa Obrony Narodowej w przeglądarce Opera (to są dopiero jaja, że taka strona bierze udział w konkursie):

webstar_kategoria_publiczne_strona_monu_w_operze.png

Strona zaraz zostanie zgłoszona do Osiołków Polskiego Internetu przeze mnie.

Kolejna źle wykonana strona mająca problemy w Operze strona to Urzędu Miejskiego w Sosnowcu:

webstar_kategoria_publiczne_strona_sosnowiec_w_operze.png

A to ta sama strona w Firefoksie:

webstar_kategoria_publiczne_strona_sosnowiec_w_fx.png

I od razu napisze! Panowie webmasterzy, to nie wina przeglądarek a Wasza! To, że Wy tworzycie tylko i wyłącznie pod Internet Explorera to nie znaczy, że nie liczą się inne przeglądarki, które łącznie mają już ponad 30 % rynku.

Na koniec jedyny mój mały plus dla strony Miejskiego Informatora Multimedialnego w Poznaniu, za próbę stworzenia serwisu opartego najnowsze standardy. Lecz od razu mała uwaga, po co XHTML w wersji 1.1 jak i tak strona jest odczytywana jako text/html?

I kończąc, konkurs nie ma dla mnie sensu, promując takie strony. Głosu swego nie oddałem na żadną z powyższych stron i stron w ogóle w konkursie – dalej się nie zagłębiam bo bym jeszcze … bardziej się przestraszył :P . Po tym co napisałem moja ocena jest niezbyt pozytywna i dla organizatorów i tych którzy ośmielili brać w nim udział w kategorii stron publicznych.

XUL – przyciski opcji i pola wyboru

Post ten będzie oparty o dwa pliki: checkboxes.xul oraz radiobuttons.xul, które umieściłem już w przeglądarce plików XUL. Zdecydowałem omówienie obu plików opisać w jednym poście ze względu na podobny układ rozmieszczenia poszczególnych pudełek w obu plikach. Przykłady te pokazują gdzie i jak możemy wykorzystać pola wyboru (checkbox) oraz przyciski opcji (radio).

przyciski_opcji_przyklad.png pola_wyboru_przyklad.png

W obu przykładach zastosowana została jedna funkcja setText, która służy temu, że podczas wybrania pola wyboru lub przycisku opcji, tuż pod przykładem pojawi się króciutki komentarz odnośnie naciśniętego elementu.

function setText(textID,val)
{
  document.getElementById(textID).value=val;
}

Tuż po wczytaniu przykładów w każdej sekcji dotyczącej omówionym problemom, na jej spodzie znajduje się napis: (Brak). Dzięki zastosowaniu wspomnianej funkcji, po kliknięciu w jakikolwiek element, zamiast słowa (Brak), pojawi się krótki komentarz, wszystko dzięki zastosowaniu elementu description:

<description  id="identyfikator-taki-sam-jak-w-przedstawionym-przykladzie" value="(Brak)" />

Element radio:

Element, który może być zaznaczamy lub odznaczamy. Przyciski opcji są prawie zawsze pogrupowane razem w jedną grupę. Tylko jeden przycisk opcji może być zaznaczony, wewnątrz tej samej grupy radiogroup. Użytkownik klikając w przycisk opcji, włączona go poprzez zaznaczenie opcji myszką lub poprzez klawiaturę i skróty klawiaturowe. Po zaznaczeniu jednego przycisku opcji, inny zostaje odznaczony. Do przykładu możemy bez problemów dodać etykietę, określoną za pomocą atrybutu label i zostanie dodana obok przycisku opcji.

Poniżej przykładowy kod przycisku opcji:

<radiogroup flex="1">
       <description value="Przyciski opcji w różnych stanach."/>
       <radio label="Zaznaczony" selected="true"
              oncommand="setText('stan-tekstu','Zaznaczony');" />
       <radio label="Normalny"
              oncommand="setText('stan-tekstu','Normalny');" />
       <radio label="Wyłączony" disabled="true"
              oncommand="setText('stan-tekstu','Wyłączony');" />
       <separator flex="1" />
       <description id="stan-tekstu" value="(brak)" />
</radiogroup>

Wspomniałem o możliwości zaznaczenia pól opcji za pomocą klawiatury, czyli za pomocą klawisza Alt + klawisz z ze znakiem, który jest w etykiecie podkreślony:

<radiogroup flex="1">
      <description value="Przyciski zawierające skróty klawiaturowe."/>
      <description value="(Zdarzenie, jeśli nawet nie są zaznaczone)"/>
      <radio label="Zwierzaki" accesskey="Z"
             oncommand="setText('klawisz-skrotu-tekst','Zwierzaki');" />
      <radio label="Niedźwiedz"   accesskey="N"
             oncommand="setText('klawisz-skrotu-tekst','Niedżwiedz');" />
      <radio label="Kot"    accesskey="K"
             oncommand="setText('klawisz-skrotu-tekst','Kot');" />
      <radio label="Pies"    accesskey="P"
             oncommand="setText('klawisz-skrotu-tekst','Pies');" />
      <radio label="Puma"   accesskey="U"
             oncommand="setText('klawisz-skrotu-tekst','Puma');" />
      <radio label="Ryba"   accesskey="R"
             oncommand="setText('klawisz-skrotu-tekst','Ryba');" />
      <separator flex="1" />
      <description  id="klawisz-skrotu-tekst" value="(Brak)" />
</radiogroup>

Jak widać po przykładzie za klawisze skrótu odpowiada atrybut accesskey, któremu przyporządkowujemy klawisz (najlepiej jeśli jest to pierwsza litera etykiety). W przypadku gdy w naszej grupie będzie już występował juz dany skrót to możemy dowolną wolną literę przypisać tej etykiecie. Tak jak to jest zrobione w opcji “Puma”.

Za rozmieszczenie przycisku opcji z lewej, z prawej, powyżej lub poniżej etykiety odpowiadają atrybuty:

  • dir
  • orient

Zobaczmy to na przykładzie:

<radiogroup flex="1">
      <description value="Te przyciski opcji pokazują różne ich rozmieszczenie."/>
      <radio label="Z lewej"
       oncommand="setText('tekst-etykiety','Przycisk opcji z lewej strony etykiety');" />
      <radio label="Z prawej" dir="reverse" 
       oncommand="setText('tekst-etykiety','Przycisk opcji z prawej strony etykiety');"/>
      <radio label="Powyżej" orient="vertical" dir="forward"
       oncommand="setText('tekst-etykiety','Przycisk opcji powyżej etykiety');"/>
      <radio label="Poniżej" orient="vertical" dir="reverse"
       oncommand="setText('tekst-etykiety','Przycisk opcji poniżej etykiety');"/>
      <radio
       oncommand="setText('tekst-etykiety','Przycisk opcji bez etykiety');" />
      <radio
       oncommand="setText('tekst-etykiety','Kolejny przycisk opcji bez etykiety');" />
      <separator flex="1" />
      <description  id="tekst-etykiety" value="(Brak)" />
</radiogroup>

Aby dodać do tego obrazek, wystarczy dopisać atrybut src do elementu radio.

Element checkbox:

Element, który możemy zaznaczany lub odznaczany. Domyślnie jest interpretowany jako puste pudełko, kiedy element jest odznaczony i jako zaznaczone pudełko, kiedy element jest włączony. Posiadamy możliwość włączenia stanu pola wyboru poprzez zaznaczenie pudełka kursorem myszki. Etykieta, określona z atrybutem label, może być dodana obok pola wyboru, tak jak w polu opcji.

<description  value="Pokazuje stan pola wyboru." />
    <checkbox  flex="1" label="Domyslny"  default="true" 
                      oncommand="setText('stan-tekstu','Domyślny');" />
    <checkbox  flex="1" label="Zaznaczony"  checked="true"
                      oncommand="setText('stan-tekstu','Zaznaczony');" />
    <checkbox  flex="1" label="Normalny"   
                      oncommand="setText('stan-tekstu','Normalny');" />
    <checkbox  flex="1" label="Wyłączony" disabled="true"
                      oncommand="setText('stan-tekstu','Wyłączony');" />
    <separator flex="1" />
<description  id="stan-tekstu" value="(Brak)" />

Wszystkie powyższe przykłady zastosowane do przycisku opcji, można bez problemów zastosować do pola wyboru. Oba przykłady możemy obejrzeć w przeglądarce plików XUL. Cały kod źródłowy znajdziecie w “przeglądarce” na karcie “Kod źródłowy” lub po prostu przejść do kodu w postaci tekstowej obu przykładów:

Dodatkowe informacje są zawarte w dokumentacji XUL oraz w kursie XUL.

XUL – przeglądarka plików XUL

Od dłuższego czasu pisze na temat języka XUL, jeszcze mało popularnego w naszym kraju. Nawet nie wiem czy tym językiem interesuje się wiele osób, bo mało kto pisze na jego temat. W Google też za wiele informacji, szczególnie po polsku nie znajdziemy. Aby w ramach tego co pisze, wszystkie przykłady, które przedstawiam wraz z opisywanymi fragmentami języka XUL, nie poszły w otchłań sieci, udostępniłem małą przeglądarkę swoich przykładów.

Jeśli chcecie przejrzeć, przykłady (w tej chwili, tylko te dłuższe), jaki mi posłużyły do opisania już wielu elementów, atrybutów, metod oraz stylów w języku XUL, wystarczy, że skorzystacie z linka po prawej stronie w menu; w kategorii XUL, “przykłady w xul”.

moj_blog_link.png

Przeglądarka jest bardzo prosta, w miarę jak będzie chwila wolna to postaram się ją rozbudować. Aktualnie pozwala ona na przeglądanie plików napisanych w języku XUL, wyświetlając ich zawartość w prawej ramce, która zawiera domyślnie trzy karty. W lewej ramce znajduje się lista umieszczonych na serwerze plików z przykładami. Klikając na poszczególne pliki, w ramce prawej są one wyświetlane:

przegladarka_plikow_xul1.png

Jeśli natomiast chcemy zobaczyć kod źródłowy aktualnie oglądanego pliku, wystarczy przejść na kartę “Kod źródłowy”:

przegladarka_plikow_xul_kod.png

W ostatniej karcie będą się znajdowały aktualizacje i krótkie opisy dotyczące ogólnie całej przeglądarki. To tyle, mam nadzieję, że ułatwi to Wam, poznawanie języka XUL.