Vediamo l'interfaccia utente grafica dell'esempio che verra' poi usato nell'esame. Abbiamo visto quella per l'utente abbonato (lezione 13), vediamo ora quella per l'utente gestore.
L'interfaccia grafica per l'utente gestore e' composta da una finestra che chiede di scegliere l'operazione (ricerca di abbonati nel data base o inserimento di un nuovo abbonato), una finestra per specificare il criterio di ricerca ed eseguire la ricerca, una finestra per mostrare il risultato della ricerca, ed una finestra per inserire un nuovo abbonato.
Tutte le finestre dell'interfaccia sono finestre di dialogo. Infatti nessuna di queste ha la prevalenza sulle altre quanto a durata dell'interazione con l'utente.
Inizialmente compare la finestra di scelta
che mostra un titolo e tre bottoni.
Questa finestra pur essendo una finestra di dialogo non dipende da
altre finestre.
I tre bottoni corrispondono alle operazioni possibili:
Se l'utente sceglie "ricerca" allora il programma mostra la finestra di ricerca, che permettera' all'utente di specificare il criterio di ricerca ed eseguire la ricerca.
Se l'utente sceglie "nuovo abbonato" allora il programma mostra la finestra del nuovo abbonato, che permettera' all'utente di immettere i dati per creare un nuovo abbonato e salvarlo nel data base.
La finestra del criterio di ricerca dipende dalla finestra di scelta ed e' modale (cioe' impedisce l'interazione con la finestra chiamante). Mostra tutti i campi corrispondenti ai dati di un abbonato, tutti editabili. I tre bottoni radio per la categoria di abbonamento possono essere selezionati indipendentemente (l'utente puo' ricercare piu' categorie di abbonamento).
Vi sono tre bottoni corrispondenti alle operazioni possibili:
Se l'utente preme "cerca" viene eseguita la ricerca con il criterio
correntemente specificato (e' corretto anche un criterio in cui
nessun requisito e' stato specificato: tutti i campi vuoti e nessuno
dei tre bottoni radio selezionato).
Se non vi sono risultati, viene mostrata una finestra con messaggio di
notifica.
Se vi sono risultati, sono mostrati in una finestra del risultato.
La finestra del risultato dipende dalla finestra del criterio
di ricerca ed e' modale
(cioe' impedisce l'interazione con la finestra chiamante).
Se vi sono N risultati, li mostra uno alla volta, e permette di scorrere
avanti e indietro la lista dei risultati.
Per il risultato corrente,
mostra tutti i dati dell'abbonato, e li lascia modificare tutti tranne
cognome, nome, anno di nascita.
Vi sono cinque bottoni corrispondenti alle operazioni possibili:
La finestra del nuovo abbonato dipende dalla finestra di scelta iniziale, ed e' modale. mostra tutti i dati dell'abbonato da creare, e li lascia modificare tutti.
Vi sono tre bottoni corrispondenti alle operazioni possibili:
Il diagramma seguente illustra il funzionamento dell'interfaccia.
I riquadri rettangolari sono finestre.
Le frecce sono azioni eseguite dall'utente nella finestra da cui la
freccia parte.
I riquadri con angoli arrotondati sono operazioni fatte dal programma in
risposta all'azione dell'utente.
Non sono indicate nel diagramma le finestre di errore...
Tutte le finestre sono realizzate con la classe Finestra, sotto-classe di JDialog, che abbiamo gia' visto nella lezione 13.
Vi sono poi classi che realizzano i pannelli che saranno collocati al centro delle finestre, e definiscono quali bottoni aggiuntivi vi saranno:
Tutte le classi che costituiscono questo esempio sono predisposte per essere documentate con Javadoc (vedere lezione 11). Scaricare tutti i file java nella directory corrente e poi digitare "javadoc *.java", genera documentazione per tutte le classi, il file da cui partire (con l'indice) e' poi quello di nome "index.html".
Qui diamo solo un inquadramento generale delle classi, a che cosa servono, che collegamenti hanno fra loro. Per tutti gli altri dettagli si rimanda alla documentazione javadoc.
Le classi per il data base sono descritte nella lezione 12, qui documentiamo solo quelle per l'interfaccia grafica (che usano le precedenti).
Alcune classi (Finestra, PannelloInfo, Programma) sono comuni all'interfaccia per l'utente abbonato descritte nella lezione 13, qui documentiamo solo quelle "nuove".
Realizza il pannello che sara' collocato al centro della finestra di iniziale di scelta.
Organizzato a border layout, contiene solo una etichetta in posizione
centrale, con un messaggio di benvenuto.
Crea e memorizza i bottoni aggiuntivi "ricerca" e "nuovo abbonato"
(senza metterli ancora da nessuna parte, sono da mettere poi nella
finestra).
Realizza il pannello che sara' collocato al centro della finestra del criterio di ricerca.
Sotto-classe di PannelloInfo, non cambia nulla rispetto alla super-classe, soltanto crea e memorizza i bottoni aggiuntivi "cerca" e "azzera" (da mettere poi nella finestra).
Realizza il pannello che sara' collocato al centro della finestra del risultato della ricerca.
Sotto-classe di PannelloInfo, rende mutuamente esclusivi i tre bottoni
radio e non editabili i campi di testo per cognome, nome e anno di nascita.
Crea e memorizza i bottoni aggiuntivi "salva", "ricarica", "indietro" e
"avanti" (da mettere poi nella finestra).
Sotto-classe di PannelloInfo, realizza il pannello che sara' collocato al centro della finestra per la creazione di un nuovo abbonato.
Lascia tutti i campi di testo editabili tranne ma rende
mutuamente esclusivi i tre bottoni radio.
Crea inoltre e memorizza i bottoni "salva" e "azzera".
Sotto-classe di Programma (classe descritta nella lezione 13), realizza tutta l'interfaccia grafica per l'utente gestore.
Costruisce le quattro finestre: ciascuna e' un'istanza di Finestra con al centro un pannello della classe opportuna, e con in basso aggiunti i bottoni memorizzati in tale pannello.
Stabilisce tutte le callback di tutti i bottoni presenti nelle quattro finestre: il bottone "chiudi" memorizzato nella finestra e i bottoni aggiuntivi memorizzati nei vari pannelli (ma aggiunti alla finestra).
Servono:
Per compilate e' sufficiente digitare: javac ProgrammaGestore.java
Per eseguire digitare: java ProgrammaGestore Pippo