Prima di iniziare questo esercizio, è necessario completare l'.

In questo esercizio verrà abilitata l'applicazione per aggiungere il record di un nuovo dipendente. Poiché il comportamento dell'applicazione è più complicato e dinamico per l'aggiunta di un nuovo dipendente, questo esercizio è più complesso e verrà richiesto di effettuare alcune modifiche manuali al codice di origine. Inoltre, questo esercizio mostra alcune funzioni avanzate degli oggetti dati, e fornisce un esempio dei diversi modi in cui è possibile utilizzare i binder e gli oggetti dati.

Il seguente elenco descrive il comportamento previsto dell'applicazione:

Per aggiungere questo comportamento, completare le seguenti istruzioni riportate in questo esercizio:

  1. Aggiunta di un nuovo Oggetto dati dell'origine dati che richiama createNewFullEmployeeRecord()
  2. Aggiunta di un Oggetto dati di base per facilitare l'alternanza degli oggetti dati
  3. Rebinding di ciascun campo di dipendente a switchingDataObject
  4. Definizione di un indicatore e di un metodo per l'aggiornamento e l'alternanza delle modalità
  5. Aggiunta di un evento actionPerformed al pulsante Nuovo
  6. Rebinding del pulsante Aggiorna
  7. Aggiunta di un evento al binder del pulsante Aggiorna per reimpostare la modalità

1. Aggiunta di un nuovo Oggetto dati dell'origine dati che richiama createNewFullEmployeeRecord():

Il servizio Web di esempio fornisce un servizio createNewFullEmployeeRecord che a sua volta fornisce un record di dipendente nuovo, vuoto in cui verrà inserito il primo numero di ID dipendente disponibile. In questo record vuoto possono successivamente essere inserite le informazioni relative al nuovo dipendente e inoltrate al servizio Web.

  1. Nella tavolozza dell'editor visivo Java, espandere il cassetto Oggetti di dati e selezionare Oggetto dati dell'origine Java.
  2. Spostare il mouse sull'area vuota della vista di progettazione o sull'area a formato libero e fare clic con il pulsante sinistro del mouse per rilasciare l'Oggetto dati dell'origine Java. Un nuovo Oggetto dati dell'origine dati viene aggiunto e mostrato nell'area a formato libero:

    Oggetto dati dell'origine dati nell'area a formato libero. Non configurato.

  3. Selezionare l'oggetto dati dell'origine dati con il tasto destro del mouse e scegliere Rinomina campo. Rinominare l'oggetto dati in newEmployeeRecord.
  4. Selezionare l'oggetto dati newEmployeeRecord con il tasto destro del mouse e selezionare Proprietà di binding. Viene visualizzata la finestra Binding di dati.
  5. Nel campo Origine dati, selezionare webServiceDataSource.
  6. Nel campo Servizio, selezionare createNewFullEmployeeRecord().
  7. Scegliere OK.

    Oggetto dati newEmployeeRecord, connessi a webServiceDataSource

    Nell'area a formato libero, viene visualizzato l'oggetto dati dell'origine dati newEmployeeRecord associato al servizio Web.

2. Aggiunta di un Oggetto dati di base per facilitare l'alternanza degli oggetti dati:

Poiché i campi dei dettagli e il pulsante Aggiorna devono alternare le modalità (sia per eseguire un aggiornamento che per la creazione di un nuovo dipendente), dovranno essere associati a due diversi oggetti dati in due momenti diversi. Per semplificare queste operazioni, aggiungere un oggetto dati di base chiamato switchingDataObject. Tale oggetto verrà utilizzato per alternare il binding per i campi di testo tra selectedEmployeeRecord e newEmployeeRecord.

Il nuovo oggetto dati di base, indica semplicemente un altro oggetto dati (selectedEmployeeRecord) definito in uno degli esercizi precedenti. Questo nuovo oggetto dati risulterà utile durante la creazione di un metodo che indica all'oggetto di utilizzare il newEmployeeRecord creato precedentemente. In altre parole, l'oggetto dati di base funzionerà come oggetto dati intermedio che passa dall'oggetto dati selectedEmployeeRecord all'oggetto dati newEmployeeRecord, consentendo ai componenti visivi dell'applicazione di utilizzare due diversi oggetti dati.
  1. Nella tavolozza dell'editor visivo, selezionare Oggetto dati di base, e rilasciarlo nell'area a formato libero. Viene aggiunto un basicDataObject.

    Oggetto di dati di basi sull'area a formato libero, non configurato

  2. Ridenominare l'oggetto dati in switchingDataObject
  3. Nella vista Proprietà di switchingDataObject, impostare la proprietà sourceObject su selectedEmployeeRecord. È possibile selezionare selectedEmployeeRecord dal menu a discesa nella colonna Valore della proprietà.

    switchingDataObject in un'area a formato libero, connesso all'oggetto dati
selectedEmployeeRecord

    A questo punto, switchingDataObject fa riferimento a selectedEmployeeRecord e ne rispecchia gli stessi valori.

3. Rebinding di ciascun campo di dipendente a switchingDataObject:

Anche se i campi dei dettagli del dipendente sono già associati a selectedEmployeeRecord, adesso verranno associati a switchingDataObject. Dopo aver associato i campi, sarà possibile passare dinamicamente da un oggetto dati all'altro per i campi, in base alle modifiche apportate al record di un dipendente esistente o all'aggiunta di un nuovo record.

Per ciascuno dei campi nella sezione Dettagli dipendente, procedere come segue:

  1. Selezionare il campo e fare clic sulla scheda Binding.
  2. Nella finestra Binding di dati campo, selezionare switchingDataObject. Precedentemente sono stati associati i campi a selectedEmployeeRecord.

    Finestra Binding di dati di campo che mostra lastNameField associato alla proprietà lastName su switchingDataObject

  3. Assicurarsi che il campo sia ancora associato alla proprietà dell'oggetto dati e scegliere OK. Se si seleziona il campo nella vista di progettazione, è possibile vedere che le linee del binder adesso indicano l'oggetto switchingDataObject.

    Campo dei dettagli associato a switchingDataObject

4. Definizione di un indicatore e di un metodo per l'aggiornamento e l'alternanza delle modalità:

Il seguente metodo updateMode() controlla se il modo è impostato su Nuovo, quindi modifica alcuni comportamenti dell'applicazione di conseguenza. Per impostazione predefinita, l'indicatore Booleano isNewMode è impostato su false, e il metodo updateMode() abilita la tabella dipendenti e il campo dei filtri, ed imposta il testo sul pulsante Aggiorna in "Aggiorna". Se isNewMode è impostato su true, la tabella dei dipendenti viene disabilitata e qualsiasi selezione sarà annullata, il campo filtro viene disabilitato e il testo sul pulsante Aggiorna viene impostato su "Aggiungi".

Aggiungere il seguente codice alla classe DirectoryApp.java prima dell'ultima parentesi graffa chiusa:

private boolean isNewMode = false;
private void updateMode() {
	if (isNewMode) {
		getEmployeesTable().clearSelection();
		getEmployeesTable().setEnabled(false);
		getFilterField().setEditable(false);
		getUpdateCreateButton().setText("Add");
	} else {
		getEmployeesTable().setEnabled(true);
		getFilterField().setEditable(true);
		getUpdateCreateButton().setText("Update");
	}
}

5. Aggiunta di un evento actionPerformed al pulsante Nuovo:

In questa fase, verrà aggiunto il codice di evento per il pulsante Nuovo. L'evento indica a switchingDataObject di utilizzare l'oggetto dati newEmployeeRecord, imposta l'indicatore di modalità su "new" ed esegue il metodo updateMode() aggiunto precedentemente.

  1. Nella vista di progettazione selezionare il pulsante Nuovo con il tasto destro del mouse, quindi scegliere Eventi > actionPerformed. L'editor visivo genera un codice con uno stub di eventi generico che stampa una riga nella console:
    System.out.println("actionPerformed()");
  2. Sostituire questo stub generato (la riga System.out.println) con il seguente codice:
    getSwitchingDataObject().setSourceObject(getNewEmployeeRecord());
    getNewEmployeeRecord().refresh();
    
    isNewMode = true; //sets application to new mode
    updateMode(); //changes UI according to new mode
    getLastNameField().grabFocus();

6. Rebinding del pulsante Aggiorna:

In uno degli esercizi precedenti, è stato programmato il pulsante Aggiorna affinché utilizzi il metodo modifyEmployee sul servizio Web. Questa azione viene implementata come una SwingDataServiceAction. Una delle proprietà di SwingDataServiceAction è l'oggetto di origine, che agisce come argomento per il servizio. L'oggetto di origine per l'azione di modifica è al momento impostato su selectedEmployeeRecord. Per programmare il pulsante affinché controlli sia l'aggiornamento che l'aggiunta, è necessario riconfigurare l'azione del pulsante per utilizzare switchingDataObject come argomento nel servizio modifyEmployee:
  1. Nella vista di progettazione, selezionare il pulsante Aggiorna. Osservare la freccia rosa, punteggiata che mostra che selectedEmployeeRecord è l'argomento per la chiamata al servizio.
  2. Fare clic sulla scheda Binding nel pulsante Aggiorna.
  3. Nel campo Argomento, selezionare switchingDataObject.

    Binding di azioni componente per il pulsante Aggiorna che utilizza switchingDataObject

  4. Scegliere OK.

    A questo punto, osservare che l'azione del pulsante è configurata per utilizzare switchingDataObject come argomento per il metodo modifyEmployee:

    Pulsante Aggiorna associato al servizio Web con switchingDataObject come argomento

7. Aggiunta di un evento al binder del pulsante Aggiorna per reimpostare la modalità:

Dopo aver fatto clic su Aggiorna e una volta che l'azione è stata completata sul servizio Web, ripristinare la modalità e il comportamento predefinito dell'applicazione. Per ottenere questo risultato, aggiungere un listener di eventi al binder di azioni del pulsante che aggiornerà la modalità e aggiornerà la tabella dopo aver eseguito l'aggiornamento o l'aggiunta.

  1. Nella vista di progettazione, selezionare il pulsante Aggiorna. Una linea indica la connessione del pulsante all'origine dati. Sulla linea è raffigurata un'icona che rappresenta la SwingDataServiceAction per il pulsante, il binder di azioni del pulsante.
  2. Selezionare l'icona del binder di azioni del pulsante con il tasto destro del mouse e scegliere Eventi > Aggiungi eventi.

    Importante: l'evento viene aggiunto al binder del pulsante e non al pulsante.

  3. Nella finestra Aggiunta eventi, espandere il nodo actionBinder e selezionare afterActionPerformed.
  4. Scegliere Fine. Il seguente stub di evento viene aggiunto alla SwingDataServiceAction per il pulsante:
    modifyEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() { 
    	public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {    
    		System.out.println("afterActionPerformed()"); // TODO Auto-generated Event stub afterActionPerformed()
    	}
    	public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {}
    });
  5. Sostituire la riga System.out.println("afterActionPerformed()"); con il seguente codice:
    if (isNewMode) {
    	//Go back to using the selectedEmployeeRecord
    	getSwitchingDataObject().setSourceObject(getSelectedEmployeeRecord());
    	//Revert out of new mode
    	isNewMode = false;
    	updateMode();
    }
    // Refresh the table's data object
    getLightEmployeeRecordRows().refresh();

A questo punto, quando viene eseguita l'applicazione sarà possibile fare clic su Nuovo ed aggiungere un nuovo record di dipendente.

Ora è possibile passare all'esercizio successivo:

Termini di utilizzo | Feedback
(C) Copyright IBM Corporation 2000, 2005. Tutti i diritti riservati.