< Précédent | Suivant >

Leçon 2.5 : Activation du bouton Delete et de la boîte de dialogue Confirm Delete

Dans cet exercice, vous allez programmer l'application My Company Directory afin qu'elle permette à l'utilisateur de supprimer un enregistrement d'employé.

La liste suivante décrit le comportement que vous souhaitez donner à l'application :
  • Lorsqu'un employé est sélectionné dans la table, le bouton Delete est activé.
  • Lorsque vous cliquez sur le bouton Delete, la boîte de dialogue Confirm Delete s'affiche et vous invite à confirmer la suppression.
  • Si vous cliquez sur le bouton Yes, l'enregistrement d'employé est supprimé, la boîte de dialogue Confirm Delete se ferme et la liste des employés est actualisée.
  • Si vous cliquez sur No, la suppression est annulée et la boîte de dialogue Confirm Delete se ferme.

Programmer le bouton Delete de sorte qu'il soit activé ou désactivé selon qu'une ligne est sélectionnée ou non dans la table

Pour programmer l'état d'activation du bouton Delete, vous allez ajouter à la table un écouteur (listener) qui activera ce bouton lorsqu'une ligne sera sélectionnée.

  1. Sélectionnez employeesTable dans la vue Beans Java. La ligne suivante est mise en évidence dans la vue du code source :
    employeesTable = new JTable();
  2. Juste après cette ligne, ajoutez un nouvel écouteur ListSelectionListener et un événement valueChanged au composant employeesTable :
    employeesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       public void valueChanged(ListSelectionEvent e) {
         getDeleteButton().setEnabled(getEmployeesTable().getSelectedRowCount() != 0);
       }
    });
  3. Une fois ces lignes de code ajoutées, l'éditeur de code source les signale comme étant des erreurs tant que ListSelectListener et ListSelectionEvent ne sont pas importés. Pour ajouter les importations requises, sélectionnez Source > Organiser les importations sur la barre de menus principale. Les lignes suivantes sont ajoutées à la section des importations de la classe :
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
Maintenant, lorsqu'une ligne est sélectionnée dans la table, le bouton Delete est activé.

Programmer l'ouverture de la boîte de dialogue Confirm Delete lorsque le bouton Delete est actionné

Vous allez ajouter un événement actionPerformed au bouton Delete et programmer cet événement pour qu'il ouvre la boîte de dialogue Confirm Delete.

  1. Cliquez avec le bouton droit sur le bouton Delete et sélectionnez Evénements > actionPerformed. La souche d'événement suivante est ajoutée à la méthode getDeleteButton() :
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
         System.out.println("actionPerformed()"); 
         // TODO Auto-generated Event stub actionPerformed()
       }
    });
  2. Remplacez cette souche générée par le code suivant, dont le but est d'afficher la boîte de dialogue Confirm Delete lorsque l'utilisateur clique sur le bouton :
    deleteButton.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent e) {    
         getConfirmDialog().setVisible(true);
       }
    });

Lier la zone de texte dans la boîte de dialogue Confirm Delete

Vous allez maintenant lier la zone de texte de la boîte de dialogue Confirm Delete afin qu'elle affiche le prénom de l'employé à supprimer.

  1. Dans la vue Beans Java ou dans la zone de conception, sélectionnez la zone de texte employeeToDeleteField et cliquez sur son onglet Lier.

    Boîte de dialogue Confirm Delete

  2. Dans la boîte de dialogue Liaisons de données de zone, sélectionnez l'objet de données selectedEmployeeRecord et la propriété firstName, puis cliquez sur OK.

    La zone de texte est désormais liée à la colonne firstName de la ligne sélectionnée dans la table employeesTable.

    Boîte de dialogue Confirm Delete après la liaison

  3. Pour que cette zone soit en lecture seule, affectez la valeur false à la propriété autoEditable du lieur de la zone.

Lier le bouton Yes pour l'exécution de la suppression

Vous allez lier le bouton Yes afin qu'il appelle la méthode removeEmployee(java.lang.Integer) du service Web.

  1. Sélectionnez le bouton Yes et cliquez sur son onglet Lier afin d'ouvrir la boîte de dialogue Liaisons d'action du composant.
  2. Dans la zone Type de la source, sélectionnez Service Web.
  3. Dans la zone Source de données, sélectionnez webServiceDataSource.
  4. Dans la liste Service source, sélectionnez removeEmployee(java.lang.Integer).
  5. La zone Nom prend automatiquement la valeur removeEmployeeAction. Acceptez cette valeur par défaut.
  6. Dans la zone Argument, sélectionnez selectedEmployeeRecord.
  7. Dans la zone Propriété, sélectionnez employeeID. Comme la méthode removeEmployee() prend un entier comme argument d'entrée, vous utilisez l'ID d'employé (employeeID) contenu dans l'objet selectedEmployeeRecord.
  8. Affectez la valeur Activé à l'état initial du bouton.
  9. En ce qui concerne les règles d'activation, sélectionnez Ignorer pour chacune des conditions.

    Cet état de composant signifie que le bouton Yes sera toujours activé, car son état n'a pas besoin de changer.

    Boîte de dialogue Liaisons d'action du composant pour le bouton Yes

  10. Cliquez sur OK.

Ajouter un événement pour masquer la boîte de dialogue Confirm Delete une fois l'employé supprimé

Dans cette étape, vous allez ajouter un événement au lieur du bouton Yes (et non au bouton Yes lui-même). Vous souhaitez que la boîte de dialogue Confirm Delete se ferme après le retrait de l'employé, c'est à dire une fois que le lieur a appelé le service sur la source de données.

Ajoutez le code suivant à la méthode getRemoveEmployeeAction() :
removeEmployeeAction.addActionBinderListener(new jve.generated.IActionBinder.ActionBinderListener() { 
   public void afterActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {    
     getConfirmDialog().setVisible(false);
   }
   public void beforeActionPerformed(jve.generated.IActionBinder.ActionBinderEvent e) {} 
});

Ce code d'événement masque (ferme) la boîte de dialogue Confirm Delete une fois l'action du lieur effectuée.

Récapitulatif de la leçon

A présent, lorsque vous exécutez l'application My Company Directory, vous pouvez sélectionner un employé dans la table, cliquer sur le bouton Delete, puis sur le bouton Yes pour confirmer la suppression. L'enregistrement d'employé sera supprimé de l'annuaire et la liste des employés reflétera cette suppression.

< Précédent | Suivant >