Nei capitoli precedenti abbiamo cominciato a lavorare sulle interfacce dando una
prima schematizzazione grafica dell’applicazione e
cominciando a parlare di eventi associati a pulsanti. Il metodo più ovvio per comunicare con l‘utente finale è comunque il contenuto, quindi, prima di proseguire nel nostro tutorial su
XUL, approfondiamo l'argomento testo.
Facendo un paragone con HTML, per permettere all’utente di immettere testo ci servirebbe un oggetto equivalente al tag
input. La controparte di
XUL si chiama
textbox, ma al contrario dell’HTML è possibile inserire molto più di una singola riga, se correttamente descritto dai suoi attributi.
<textbox multiline= " true "/>
L’attributo
multiline permette l’inserimento di più righe, ma è necessario distinguere tra il numero di linee possibili per l’inserimento e il numero di linee visualizzate. Nel caso il primo numero superi il secondo allora comparirà una barra a scorrimento verticale. Il numero di linee visualizzate è esprimibile tramite l’attributo
rows, mentre
value, similmente ad HTML, permette di specificare un testo di default da visualizzare nel campo testo.
Il numero massimo di testo possibile è invece specificato da
maxlength mentre
size ne specifica il numero di caratteri. Infine
timeout, ultimo attributo dell’oggetto
textbox permette la temporizzazione di eventi, ma ne parleremo in seguito.
Dopo aver specificato gli attributi parliamo dei
tipi di textbox:
XUL ne prevede quattro in base alle funzionalità che devono ricoprire, e oltre a quella base nei nostri progetti possiamo utilizzare
autocomplete che prevede le funzionalità di auto completamento,
password che non permette la visualizzazione del testo quando questo viene inserito dall’utente, e
timed, che utilizzato in congiunzione con l’attributo
timeout, aggiunge la possibilità di applicare un ritardo dopo che il testo viene inserito nella
textbox.
Di solito in congiunzione con le
textbox vengono utilizzate anche le etichette o
label, le quali consistono appunto in semplici linee di testo esplicative:
<label value= "Il mio testo"/>
La differenza con il tag
description, visto nei capitoli precedenti che sicuramente ricorderete, è che una label può essere associata anche ad altri componenti tramite l’attributo
control che specifica l’id del componente a cui associare l’etichetta stessa. Ad esempio, se una
textbox ha un identificatore "tb" l’attributo
control da assegnare alla label sarà specificato così:
<label control="tb" value= "My text"/>
Facciamo un esempio ancora più completo. Se volessimo realizzare un campo di testo a riga singola, ma che permetta l’inserimento di più linee di testo scriveremmo:
<?xml version='1.0'?>
<window
id="hello"
title="textbox"
width="400"
height="300"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
<box>
<vbox>
<label control="tb" value="Inserisci del testo qui:" />
<textbox id="tb" rows="1" size="40" multiline="true" value="empty" />
</vbox>
</box>
<box>
<button label="Visualizza" oncommand="alert(document.getElementById('tb').value);" /> </box>
</window>
Ovviamente
per gestire la visualizzazione abbiamo associato del codice JavaScript al gestore degli eventi, che controlla il bottone di visualizzazione. Come si può notare
l’accesso del codice al contenuto dell’oggetto è ottenuto tramite il DOM e il metodo getElementByID nel più classico degli stili JavaScript. Il DOM diventa quindi fondamentale anche per XUL, come vedremo nei prossimi capitoli.
Infine per vedere la differenza tra i vari tipi di
textbox provate a sostituire la definizione dell’elemento con:
<textbox type="password" id="tb" rows="1" />
A parte l’ovvia inutilità di visualizzare la password segreta potete osservare come l’utilità della box cambia radicalmente.