Avant de commencer cet exercice, vous devez terminer .

Dans cet exercice, vous activez l'application pour ajouter un nouvel enregistrement d'employé. Dans la mesure où le comportement de l'application est par nature plus compliqué et dynamique pour l'ajout d'un employé, cet exercice est plus complexe et exige que vous apportiez quelques modifications manuelles au code source. En outre, cet exercice illustre quelques fonctions avancées des objets de données et donne un exemple créatif de méthodes permettant d'utiliser les programmes de liaison et objets de données pour répondre à vos besoins.

La liste suivante décrit le comportement requis de l'application :

Pour ajouter ce comportement, effectuez les étapes suivantes présentées dans cet exercice :

  1. Ajoutez un objet de données Source de données appelant la méthode createNewFullEmployeeRecord()
  2. Ajoutez un objet de données de base facilitant les échanges d'objets de données
  3. Ré-associez chaque zone d'employé à switchingDataObject
  4. Définissez un indicateur et une méthode pour la mise à jour et la commutation des modes
  5. Ajoutez un événement actionPerformed au bouton Nouveau
  6. Ré-associez le bouton Mettre à jour
  7. Ajoutez un événement au programme de liaison du bouton Mettre à jour pour réinitialiser le mode

1. Ajoutez un objet de données Source de données appelant la méthode createNewFullEmployeeRecord() :

L'exemple de service Web contient un service createNewFullEmployeeRecord fournissant un nouvel enregistrement d'employé vide qui sera alimenté par le prochain ID employé disponible. L'enregistrement vide peut alors être alimenté par des informations sur un nouvel employé et renvoyé au service Web.

  1. Dans la palette de l'éditeur visuel Java, développez le tiroir des objets de données et sélectionnez Objet de données Source de données.
  2. Déplacez le pointeur de la souris sur la zone vide de la vue de conception (ou zone à format libre), puis cliquez à l'aide du bouton gauche pour placer l'objet de données Source de données. Un nouvel objet de données Source de données est ajouté et affiché dans la zone à format libre :

    Objet de données Source de données dans la zone à format libre. Non configuré.

  3. Cliquez à l'aide du bouton droit de la souris sur l'objet données Source de données, puis sélectionnez Renommer la zone. Renommez l'objet de données en newEmployeeRecord.
  4. A l'aide du bouton droit de la souris, cliquez sur l'objet de données newEmployeeRecord et sélectionnez Propriétés des liaisons. La boîte de dialogue des liaisons de données s'affiche.
  5. Dans la zone Source de données, sélectionnez webServiceDataSource.
  6. Dans la zone Service, sélectionnez la méthode createNewFullEmployeeRecord().
  7. Cliquez sur OK.

    Objet de données newEmployeeRecord, connecté à webServiceDataSource

    Dans la zone à format libre, vous pouvez voir que l'objet de données Source de données newEmployeeRecord est lié au service Web.

2. Ajoutez un objet de données de base facilitant les échanges d'objets de données :

Les zones de détails et le bouton Mettre à jour devant changer de mode (pour une mise à jour et la création d'un employé), ils doivent être liés à deux objets de données différents, à des moments distincts. Pour faciliter cette étape, ajoutez l'objet de données de base switchingDataObject. Cet objet de données de base permet de commuter la liaison des zones de texte entre les enregistrements selectedEmployeeRecord et newEmployeeRecord.

Le nouvel objet de données de base fait simplement référence à un autre objet de données (selectedEmployeeRecord) défini dans un exercice précédent. Ce nouvel objet de données sert ultérieurement lors de la création d'une méthode qui indique à cet objet de données de base d'utiliser l'enregistrement newEmployeeRecord créé antérieurement. En d'autres termes, cet objet de données de base sert d'objet de données intermédiaire qui commute entre les objets de données selectedEmployeeRecord et newEmployeeRecord ; les composants visuels de votre application peuvent ainsi utiliser deux objets de données différents.
  1. Dans la palette de l'éditeur visuel, sélectionnez Objet de données de base et copiez-le dans la zone à format libre. Un objet basicDataObject est ajouté.

    Objet de données de base dans la zone à format libre, non configuré

  2. Renommez l'objet de données en switchingDataObject
  3. Dans la vue Propriétés de l'objet switchingDataObject, affectez la valeur selectedEmployeeRecord à la propriété sourceObject. Vous pouvez sélectionner selectedEmployeeRecord dans le menu déroulant de la colonne Valeur de la propriété.

    switchingDataObject dans la zone à format libre, connecté à l'objet de données selectedEmployeeRecord

    A présent, switchingDataObject fait référence à selectedEmployeeRecord et reflète les mêmes valeurs.

3. Ré-associez chaque zone d'employé à switchingDataObject :

Chaque zone de détails de l'employé est déjà liée à selectedEmployeeRecord, mais vous devez maintenant les lier à switchingDataObject. Une fois que vous avez associé les zones, vous pouvez dynamiquement commuter entre les objets de données des zones, selon que vous modifiez un enregistrement d'employé existant ou que vous ajoutiez un nouvel enregistrement d'employé.

Pour chacune des zones de la section Détails de la table EMPLOYE, effectuez les étapes suivantes :

  1. Sélectionnez la zone, puis cliquez sur l'onglet Lier.
  2. Dans la boîte de dialogue des liaisons de données de zone, sélectionnez switchingDataObject. Vous avez précédemment associé les zones à selectedEmployeeRecord.

    Boîte de dialogue des liaisons de données de zone illustrant la zone lastNameField associée à la propriété lastName de l'objet switchingDataObject

  3. Assurez-vous que la zone est toujours associée à la propriété d'objet de données correcte, puis cliquez sur OK. Si vous sélectionnez la zone de la vue de conception, les lignes du programme de liaison font désormais référence à switchingDataObject.

    Zone de détails liée à switchingDataObject

4. Définissez un indicateur et une méthode pour la mise à jour et la commutation des modes :

La méthode updateMode() ci-après vérifie si l'indicateur de mode est paramétré sur nouveau, puis modifie en conséquence le comportement de l'application. Par défaut, l'indicateur booléen isNewMode a pour valeur false ; la méthode updateMode() active la table des employés et la zone de filtre et affecte au bouton Mettre à jour le texte "Mettre à jour". Si l'indicateur isNewMode a pour valeur true, la table des employés est désactivée et ne comporte aucune sélection, la zone de filtre est désactivée et le texte du bouton Mettre à jour est "Ajouter".

Ajoutez le code suivant dans votre classe DirectoryApp.java avant la dernière accolade fermante :

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. Ajoutez un événement actionPerformed au bouton Nouveau :

Dans cette étape, vous ajoutez un code d'événement utilisé lors de l'activation du bouton Nouveau. Cet événement indique à switchingDataObject d'utiliser l'objet de données newEmployeeRecord, affecte à l'indicateur de mode la valeur "new" et exécute la méthode updateMode() ajoutée à l'étape précédente.

  1. Dans la vue de conception, cliquez à l'aide du bouton droit de la souris sur le bouton Nouveau, puis sélectionnez Evénements > actionPerformed. L'éditeur visuel génère le code à l'aide d'un raccord d'événement générique qui imprime tout simplement une ligne sur la console :
    System.out.println("actionPerformed()");
  2. Remplacez ce raccord généré (ligne System.out.println) par le code suivant :
    getSwitchingDataObject().setSourceObject(getNewEmployeeRecord());
    getNewEmployeeRecord().refresh();
    
    isNewMode = true; //affecte le nouveau mode à l'application
    updateMode(); //modifie l'interface graphique en fonction du nouveau mode
    getLastNameField().grabFocus();

6. Ré-associez le bouton Mettre à jour :

Dans un exercice précédent, vous avez programmé le bouton Mettre à jour afin d'utiliser la méthode modifyEmployee sur le service Web. Cette action est implémentée sous forme de SwingDataServiceAction. Une des propriétés du SwingDataServiceAction est l'objet source qui sert d'argument pour le service. L'objet source de l'action de modification est actuellement paramétré sur selectedEmployeeRecord. Pour programmer le bouton de manière à contrôler à la fois une mise à jour et un ajout, reconfigurez l'action du bouton pour qu'elle utilise switchingDataObject comme argument du service modifyEmployee :
  1. Dans la vue de conception, sélectionnez le bouton Mettre à jour. Notez la flèche en pointillés de couleur rose indiquant que selectedEmployeeRecord est l'argument de l'appel de service.
  2. Cliquez sur l'onglet Liaison du bouton Mettre à jour.
  3. Dans la zone Argument, sélectionnez switchingDataObject.

    La boîte de dialogue Liaisons d'action du composant du bouton Mettre à jour utilise maintenant l'objet switchingDataObject

  4. Cliquez sur OK.

    Vous constatez maintenant que l'action du bouton est configurée de sorte à utiliser switchingDataObject comme son argument pour la méthode modifyEmployee :

    Bouton Mettre à jour lié au service Web avec switchingDataObject comme argument

7. Ajoutez un événement au programme de liaison du bouton Mettre à jour pour réinitialiser le mode :

Une fois le bouton Mettre à jour actionné et l'action effectuée sur le service Web, l'application doit retourner à son comportement et son mode par défaut. Pour cela, ajoutez un programme d'écoute des événements dans le programme de liaison des actions du bouton, qui mettra à jour le mode et régénérera la table une fois la mise à jour ou l'ajout effectué.

  1. Dans la vue de conception, sélectionnez le bouton Mettre à jour. Une ligne affiche la connexion entre le bouton et la source de données. Sur la ligne se trouve une icône qui représente l'action SwingDataServiceAction du bouton, qui représente le programme de liaison des actions du bouton.
  2. A l'aide du bouton droit de la souris, cliquez sur l'icône du programme de liaison des actions du bouton et sélectionnez Evénements > Ajouter des événements.

    Important : Vous ajoutez un événement au programme de liaison du bouton et non au bouton.

  3. Dans la boîte de dialogue Ajout d'un événement, développez le noeud actionBinder et sélectionnez afterActionPerformed.
  4. Cliquez sur Fin. Le raccord d'événement suivant est ajouté à l'action SwingDataServiceAction du bouton :
    modifyEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() { 
    	public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {    
    		System.out.println("afterActionPerformed()"); // TODO Raccord d'événement généré automatiquement afterActionPerformed()
    	}
    	public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {} 
    });
  5. Remplacez la ligne System.out.println("afterActionPerformed()"); par le code suivant :
    if (isNewMode) {
    	//Retour à l'utilisation de selectedEmployeeRecord
    	getSwitchingDataObject().setSourceObject(getSelectedEmployeeRecord());
    	//Sortie du nouveau mode
    	isNewMode = false; 
    	updateMode();
    }
    // Régénère l'objet de données de la table
    getLightEmployeeRecordRows().refresh();

A présent, lorsque vous exécutez l'application , vous pouvez cliquer sur le bouton Nouveau et ajouter un nouvel enregistrement d'employé.

Vous êtes désormais prêt à passer à l'exercice suivant :

Conditions d'utilisation | Appréciations en retour
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.