< Anterior | Próximo >

Lição 2.5: Ativar o Botão Excluir e a Caixa de Diálogo de Confirmação

Neste exercício, você programará o aplicativo My Company Directory para excluir um registro de funcionário.

A lista a seguir descreve o comportamento que deseja que o aplicativo utilize:
  • Ao selecionar um funcionário na tabela, o botão Excluir (Delete) é ativado.
  • Ao clicar no botão Excluir (Delete), a caixa de diálogo Confirmar Exclusão (Confirm Delete) é aberto e solicita uma confirmação de exclusão.
  • Se você clicar no botão Sim (Yes) na caixa de diálogo Confirmar Exclusão (Confirm Delete), o registro do funcionário é excluído, a caixa de diálogo é fechada e a lista de funcionários é atualizada.
  • Se você clicar em Não (No), a exclusão é cancelada e a caixa de diálogo Confirmar Exclusão (Confirm Delete) é fechada.

Programar o Botão Excluir para Ser Ativado ou Desativado Dependendo da Seleção de uma Linha na Tabela

Para programar o botão Excluir (Delete) para ser ativado ou desativado, inclua um listener na tabela que ativa o botão quando uma linha é selecionada.

  1. Selecione a employeesTable na visualização Java Beans. A exibição de origem destaca a seguinte linha:
    employeesTable = new JTable();
  2. Imediatamente após esta linha, inclua um novo evento ListSelectionListener e valueChanged em employeesTable:
    employeesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
       	public void valueChanged(ListSelectionEvent e) {
         		getDeleteButton().setEnabled(getEmployeesTable().getSelectedRowCount() != 0);
       }
    });
  3. Após incluir estas linhas de código, o editor de origem marca-as como erros até que você importe ListSelectListener e ListSelectionEvent. Para incluir as importações requeridas, clique em Origem (Source) > Organizar Importações (Organize Imports) no menu principal. As linhas a seguir são incluídas na seção de importações da classe:
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
Agora, ao selecionar uma linha na tabela, o botão Excluir (Delete) é ativado.

Programar a Caixa de Diálogo Confirmar Exclusão para Abrir ao Clicar em Excluir

Inclua um evento actionPerformed no botão Excluir (Delete) e programe o evento para abrir a caixa de diálogo Confirmar Exclusão (Confirm Delete):

  1. Clique com o botão direito do mouse no botão Excluir (Delete) e selecione Eventos (Events) > actionPerformed. O stub de evento a seguir está incluído no método 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. Substitua esse stub gerado pelo código a seguir, que configura a caixa de diálogo Confirmar Exclusão (Confirm Delete) para ser visível quando o botão é clicado:
    deleteButton.addActionListener(new java.awt.event.ActionListener() {
       public void actionPerformed(java.awt.event.ActionEvent e) {
         getConfirmDialog().setVisible(true);
       }
    });

Ligar o Campo de Texto na Caixa de Diálogo Confirmar Exclusão

Ligue o campo de texto na caixa de diálogo Confirmar Exclusão (Confirm Delete) para exibir o primeiro nome do funcionário a ser excluído.

  1. Na visualização Java Beans ou na área de design, selecione o campo de texto employeeToDeleteField e clique na guia Ligação (Bind).

    Caixa de Diálogo Confirmar Exclusão Antes da Ligação

  2. Na caixa de diálogo Ligações de Dados do Campo (Field Data Bindings), selecione o objeto de dados selectedEmployeeRecord e o campo firstName e, em seguida, clique em OK.

    Agora o campo de texto está ligado à coluna firstName da linha selecionada na employeesTable.

    Caixa de Diálogo Confirmar Exclusão Após a Ligação

  3. Para certificar-se de que este campo é de leitura, defina a propriedade autoEditable para o binder do campo como false.

Ligar o Botão Sim para Executar a Exclusão

Ligue o botão Sim (Yes) para chamar o método removeEmployee(java.lang.Integer) no serviço da Web.

  1. Selecione o botão Sim (Yes) e clique na guia Ligação (Bind), para abrir o diálogo Ligações de Ação do Componente (Component Action Bindings).
  2. No campo Tipo de Origem (Source type), selecione Serviço da Web (Web Service).
  3. No campo Origem de Dados (Data source), selecione webServiceDataSource.
  4. Na lista Serviço de Origem (Source service), selecione removeEmployee(java.lang.Integer).
  5. O campo Nome (Name) é alterado automaticamente para removeEmployeeAction. Aceite este padrão.
  6. No campo Argumento (Argument), selecione selectedEmployeeRecord.
  7. No campo Propriedade (Property), selecione employeeID. Como o método removeEmployee() toma um inteiro como argumento, utilize o ID do funcionário de selectedEmployeeRecord.
  8. Defina Estado Inicial (Initial state) do botão como Ativado (Enabled).
  9. Para as Regras de Ativação (Enablement rules), selecione Ignorar (Ignore) para cada uma das condições.

    Esse estado do componente significa que o botão Sim (Yes) estará sempre ativado, porque não há necessidade de alterar o estado.

    Caixa de Diálogo Ligações de Ação do Componente para o Botão Sim

  10. Clique em OK.

Incluir um Evento para Ocultar o Diálogo Confirmar Exclusão Após Excluir o Funcionário

Nesta etapa, você inclui um evento ao binder do botão Sim (Yes) (não ao botão Sim (Yes) em si). Você deseja que a caixa de diálogo Confirmar Exclusão (Confirm Delete) feche após remover o funcionário, o que significa após o binder ter chamado com êxito o serviço na origem de dados.

Incluir o seguinte código ao método 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) {}
});

Este código de evento oculta a caixa de diálogo Confirmar Exclusão (Confirm Delete) após executar a ação do binder.

Ponto de Verificação da Lição

Agora, quando você executar o aplicativo My Company Directory, pode selecionar um funcionário na tabela, clicar no botão Excluir (Delete) e clicar em Sim (Yes) para confirmar a exclusão. O registro do funcionário será removido do diretório e a lista de funcionários refletirá a remoção.

< Anterior | Próximo >