InterfacciaRubrica.java
Created with JBuilder
import javabook.*;

class InterfacciaRubrica {
  // Attributi relativi all'interfaccia grafica
  private MainWindow    finestra;
  private ListBox       menu;
  private MultiInputBox scheda;
  private InputBox      richiesta;
  private OutputBox     uscita;
  private MessageBox    messaggio;

  // Attributo relativo alla rubrica da gestire
  private Rubrica rubrica;

  // Costruttore dell'interfaccia grafica. L'oggetto rubrica è
  // già stato creato all'esterno
  public InterfacciaRubrica(Rubrica rubrica) {
    this.rubrica = rubrica;
    // Imposta la finestra principale, un InputBox e un OutputBox
    finestra = new MainWindow("Gestione rubrica");
    finestra.show();
    richiesta = new InputBox(finestra, "Richiesta Dati");
    uscita = new OutputBox(finestra, "Visualizzazione Risultati");
    messaggio = new MessageBox(finestra);
    // Crea la scheda per l'inserimento di un nominativo
    String[] etichette = {"Nome", "Indirizzo", "Civico", "Telefono"};
    scheda = new MultiInputBox(finestra, etichette);
    scheda.setTitle("Scheda persona");
    // Crea il menu principale
    String[] vociMenu = {"Inserisci nominativo", "Cerca per nome",
                         "Cerca per indirizzo", "Cancella nominativo",
                         "Termine operazioni"};
    menu = new ListBox(finestra, "Menu Principale", false);
    for (int i = 0; i < vociMenu.length; i++) {
      menu.addItem(vociMenu[i]);
    }
  }

  public void esegui() {
    // Presenta all'utente il menu principale in un ciclo continuo
    while (true) {
      int selection = menu.getSelectedIndex();
      switch (selection) {
        case 0 : inserisciPersona(); break;
        case 1 : cercaPersona(); break;
        case 2 : cercaIndirizzi(); break;
        case 3 : cancellaPersona(); break;
        case 4 : System.exit(0);
        default : break;
      }
    }
  }

  private void inserisciPersona() {
    String[] campi = scheda.getInputs();
    if (campi != null) {
      for (int i = 0; i < campi.length; i++) {
        if (campi[i].length() == 0){
          messaggio.show("Non hai inserito correttamente un campo ");
          return;
        }
      }
      Persona p = new Persona(campi[0], campi[1],
                              Integer.parseInt(campi[2]), campi[3]);
      rubrica.aggiungi(p);
      messaggio.show("Inserimento effettuato ");
    }
  }

  private void cercaPersona() {
    String nome = richiesta.getString("Inserisci il nome da cercare: ");
    Persona p = rubrica.cercaPersonaPerNome(nome);
    if (p == null) {
      // La persona non è stata trovata
      messaggio.show("La persona di nome " + nome + " non è nell'elenco. ");
    } else {
      // La persona è nella rubrica, visualizziamo i dati
      uscita.clear();
      uscita.printLine("La seguente persona è stata trovata nella rubrica.");
      visualizzaPersona(uscita, p);
      uscita.show();
    }
  }

  private void cercaIndirizzi() {
    String indirizzo =
        richiesta.getString("Inserisci l'indirizzo da cercare: ");
    Persona[] elenco = rubrica.cercaPersonePerIndirizzo(indirizzo);
    // La persona è nella rubrica, visualizziamo i dati
    uscita.clear();
    int i = 0;
    while (i < elenco.length && elenco[i] != null) {
      uscita.printLine("Nominativo " + (i+1));
      visualizzaPersona(uscita, elenco[i]);
      ++i;
    }
    uscita.show();
  }

  private void cancellaPersona() {
    String nome = richiesta.getString("Inserisci il nome da cancellare: ");
    Persona p = rubrica.cercaPersonaPerNome(nome);
    if (p == null) {
      // La persona non è stata trovata
      messaggio.show("La persona di nome " + nome + " non è nell'elenco. ");
    } else {
      uscita.clear();
      uscita.printLine("La seguente persona è stata rimossa dalla rubrica.");
      visualizzaPersona(uscita, p);
      uscita.show();
    }
  }

  private void visualizzaPersona(OutputBox ob, Persona p) {
    // La persona è nella rubrica, visualizziamo i dati
    ob.printLine("Nome: " + p.restituisciNome());
    ob.printLine("Indirizzo e numero: " +
                     p.restituisciIndirizzo() + " " + p.restituisciCivico());
    ob.printLine("Telefono: " + p.restituisciTelefono());
  }
}

InterfacciaRubrica.java
Created with JBuilder