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 :
- Lorsque vous cliquez sur le bouton Nouveau, l'application se comporte
de la manière suivante :
- La sélection est effacée de la table des employés et la table est désactivée.
- L'effacement de la sélection entraîne la désactivation du bouton
Supprimer.
- La zone Filtre est désactivée.
- Toutes les valeurs des zones de détails sont effacées, excepté le nouvel ID employé.
- Le texte du bouton Mettre à jour est remplacé par Ajouter.
- Lorsque vous cliquez sur le bouton Ajouter, l'application se comporte de la
manière suivante :
- Les valeurs entrées dans les zones de détails sont ajoutées au répertoire comme
nouvel enregistrement d'employé.
- La table est activée et les valeurs sont régénérées.
- La zone Filtre est activée.
- Le texte du bouton Ajouter redevient Mettre à jour.
Pour ajouter ce comportement, effectuez les étapes suivantes présentées dans cet
exercice :
- Ajoutez un objet de données Source de données appelant la méthode createNewFullEmployeeRecord()
- Ajoutez un objet de données de base facilitant les échanges d'objets de données
- Ré-associez chaque zone d'employé à switchingDataObject
- Définissez un indicateur et une méthode pour la mise à jour et la commutation des modes
- Ajoutez un événement actionPerformed au bouton Nouveau
- Ré-associez le bouton Mettre à jour
- 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.
- 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.
- 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 :

- 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.
- 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.
- Dans la zone Source de données, sélectionnez webServiceDataSource.
- Dans la zone Service, sélectionnez la méthode
createNewFullEmployeeRecord().
- Cliquez sur OK.

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.
- 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é.

- Renommez l'objet de données en switchingDataObject
- 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é.

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 :
- Sélectionnez la zone, puis cliquez sur l'onglet Lier.
- 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.

- 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.

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.
- 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()");
- 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 :
- 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.
- Cliquez sur l'onglet Liaison du bouton Mettre à jour.
- Dans la zone Argument, sélectionnez switchingDataObject.

- 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 :

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é.
- 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.
- 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.
- Dans la boîte de dialogue Ajout d'un événement, développez le noeud actionBinder et sélectionnez afterActionPerformed.
- 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) {}
});
- 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 :