InterfacciaSpedizioni.java
Created with JBuilder |
import javabook.*;
class InterfacciaSpedizioni {
// Attributi relativi all'interfaccia grafica
private static MainWindow finestra;
private static ListBox menuPrincipale;
private static ListBox menuRicerca;
private static MultiInputBox schedaDestinatario;
private static MultiInputBox schedaSpedizione;
private static InputBox richiesta;
private static OutputBox uscita;
private static MessageBox messaggio;
// Attributo relativo alla gestione spedizioni
private static GestioneSpedizioni gestioneSpedizioni;
private static long codiceProgressivo = 0;
public static void main(String[] args) {
inizializzaInterfaccia();
// Chiede all'utente il massimo numero di spedizioni
int numeroMaxSpedizioni = richiesta.getInteger("Numero MAX spedizioni? ");
gestioneSpedizioni = new GestioneSpedizioni(numeroMaxSpedizioni);
// Presenta all'utente il menu principale in un ciclo continuo
while (true) {
int selection = menuPrincipale.getSelectedIndex();
switch (selection) {
case 0 : inserisciSpedizione(); break;
case 1 : cercaSpedizionePerCodice(); break;
case 2 : cercaSpedizioneAvanzato(); break;
case 3 : effettuaConsegna(); break;
case 4 : System.exit(0);
default : break;
}
}
}
private static void inizializzaInterfaccia( ) {
// Imposta la finestra principale, un InputBox e un OutputBox
finestra = new MainWindow("Gestione spedizioni");
finestra.show();
richiesta = new InputBox(finestra, "Richiesta Dati");
uscita = new OutputBox(finestra, "Visualizzazione Risultati");
uscita.setLocation(0,0);
messaggio = new MessageBox(finestra);
// Crea le schede per i destinatari e le spedizioni
creaSchedaDestinatario();
creaSchedaSpedizione();
// Crea i menu: principale e ricerche avanzate
creaMenuPrincipale();
creaMenuRicerche();
}
private static void inserisciSpedizione() {
// Inserisci il destinatario
String[] campiDestinatario = schedaDestinatario.getInputs();
if ((campiDestinatario != null) && controllaScheda(campiDestinatario)) {
Destinatario d = new Destinatario(campiDestinatario[0],
campiDestinatario[1],
campiDestinatario[2],
campiDestinatario[3]);
// Inserisci gli altri campi della spedizione
String[] campiSpedizione = schedaSpedizione.getInputs();
if ((campiSpedizione != null) && controllaScheda(campiSpedizione)) {
Spedizione s = new Spedizione(codiceProgressivo,
Integer.parseInt(campiSpedizione[0]),
Integer.parseInt(campiSpedizione[1]),
d, campiSpedizione[2]);
++codiceProgressivo;
gestioneSpedizioni.presaInCarico(s);
messaggio.show("Inserimento effettuato ");
}
}
}
private static void cercaSpedizionePerCodice() {
long codice = richiesta.getInteger("Inserisci il codice da cercare: ");
Spedizione s = gestioneSpedizioni.cercaPerCodice(codice);
if (s == null) {
// La spedizione non č stata trovata
messaggio.show("La spedizione con codice " + codice +
" non č tra quelle in carico ");
} else {
// La spedizione č ancora pendente
uscita.clear();
uscita.printLine("La seguente spedizione č stata trovata.");
visualizzaSpedizione(uscita, s);
uscita.show();
}
}
private static void cercaSpedizioneAvanzato() {
// Presenta all'utente il menu ricerca
int[] data;
boolean continua = true;
GestioneSpedizioni estratto = null;
while (continua) {
int selection = menuRicerca.getSelectedIndex();
switch (selection) {
case 0 :
String cittā = richiesta.getString("Inserisci cittā: ");
estratto = gestioneSpedizioni.cercaSpedizioniPerCittā(cittā);
break;
case 1 :
data = richiediData();
estratto =
gestioneSpedizioni.cercaSpedizioniStessaData(data[0], data[1]);
break;
case 2 :
data = richiediData();
estratto =
gestioneSpedizioni.cercaSpedizioniScadute(data[0], data[1]);
break;
case 3 : continua = false;
default : break;
}
if (estratto != null) {
visualizzaSpedizioni(estratto);
}
}
}
private static void effettuaConsegna() {
long codice =
richiesta.getInteger("Codice della spedizione consegnata? ");
Spedizione s = gestioneSpedizioni.consegnaEffettuata(codice);
if (s == null) {
// La spedizione non č stata trovata
messaggio.show("La spedizione con codice " + codice +
" č giā stata consegnata");
} else {
uscita.clear();
uscita.printLine("La seguente spedizione č stata consegnata.");
visualizzaSpedizione(uscita, s);
uscita.show();
}
}
private static void visualizzaDestinatario(OutputBox ob, Destinatario d) {
ob.printLine("Nome: " + d.restituisciNome());
ob.printLine("Indirizzo: " + d.restituisciIndirizzo());
ob.printLine("Cittā: " + d.restituisciCittā());
ob.printLine("Telefono: " + d.restituisciCap());
}
private static void visualizzaSpedizione(OutputBox ob, Spedizione s) {
ob.printLine("Codice: " + s.restituisciCodice());
ob.printLine("Dati del destinatario:");
visualizzaDestinatario(ob, s.restituisciDestinatario());
ob.printLine("Data spedizione: " +
s.restituisciGiorno() + "/" + s.restituisciMese());
ob.printLine("Descrizione: " + s.restituisciDescrizione());
}
private static void visualizzaSpedizioni(GestioneSpedizioni estratto) {
uscita.clear();
uscita.printLine("Le spedizioni richieste sono:");
Spedizione s = estratto.inizio();
while (s != estratto.fine()) {
visualizzaSpedizione(uscita, s);
s = estratto.prossima();
}
uscita.show();
}
private static int[] richiediData() {
String[] etichetteData = {"Giorno", "Mese"};
MultiInputBox dataBox = new MultiInputBox(finestra, etichetteData);
String[] campiData = dataBox.getInputs();
if ((campiData != null) &&
(campiData[0].length() > 0) && (campiData[1].length() > 0)) {
int[] data = new int[2];
data[0] = Integer.parseInt(campiData[0]);
data[1] = Integer.parseInt(campiData[1]);
return data;
} else {
return null;
}
}
private static boolean controllaScheda(String[] campi) {
for (int i = 0; i < campi.length; i++) {
if (campi[i].length() == 0){
messaggio.show("Non hai compilato correttamente la scheda");
return false;
}
}
return true;
}
private static void creaSchedaDestinatario() {
String[] etichetteDest = {"Nome", "Indirizzo", "Cittā", "CAP"};
schedaDestinatario = new MultiInputBox(finestra, etichetteDest);
schedaDestinatario.setTitle("Scheda Destinatario");
}
private static void creaSchedaSpedizione() {
String[] etichetteSped = {"Giorno", "Mese", "Descrizione"};
schedaSpedizione = new MultiInputBox(finestra, etichetteSped);
schedaSpedizione.setTitle("Scheda Spedizione");
}
private static void creaMenuPrincipale() {
String[] vociMenuPrincipale = {
"Inserisci spedizione", "Cerca per codice",
"Ricerche avanzate", "Segnala una consegna",
"Termine operazioni"};
menuPrincipale = new ListBox(finestra, "Menu Principale", true);
for (int i = 0; i < vociMenuPrincipale.length; i++) {
menuPrincipale.addItem(vociMenuPrincipale[i]);
}
}
private static void creaMenuRicerche() {
String[] vociMenuRicerca = {
"Ricerca per cittā", "Ricerca per data di spedizione",
"Ricerca spedizioni in ritardo", "Ritorna al menu principale" };
menuRicerca = new ListBox(finestra, "Menu Ricerca", true);
for (int i = 0; i < vociMenuRicerca.length; i++) {
menuRicerca.addItem(vociMenuRicerca[i]);
}
}
}
InterfacciaSpedizioni.java
Created with JBuilder |