< Anterior | Próximo >

Lição 2.3: Ligar os Campos de Detalhes à Seleção da Tabela

No exercício anterior, você ligou employeesTable ao objeto de dados lightEmployeeRecordRows retornado pelo serviço getLightEmployeeRecords() no serviço da Web. É necessário, agora, ocupar os campos de detalhes com base no funcionário selecionado na tabela.

Para obter detalhes extras de cada funcionário selecionado, é utilizado um outro objeto de dados. O objeto de dados selectedEmployeeRecord que será incluído é retornado pelo serviço getFullEmployeeRecord(). Este serviço toma o ID do funcionário selecionado na tabela como um parâmetro e pega os detalhes adicionais sobre o funcionário, incluindo número de telefone e local de trabalho.

O JRowTableBinder, utilizado ao ligar a tabela para o objeto de dados da linha, simplifica esta etapa. JRowTableBinder expõe o elemento selecionado na tabela como um objeto de dados separado, que pode ser utilizado como parâmetro para o método getFullEmployeeRecord(java.lang.Integer). Então, você pode ligar facilmente cada um dos campos de texto em sua propriedade correspondente no objeto de dados selectedEmployeeRecord.

O serviço da Web inclui dois serviços para obter todos os detalhes de cada funcionário. A tabela lista todos os funcionários e apenas um subconjunto de dados é exibido na tabela. Portanto, quando um único funcionário é selecionado, é possível recuperar o restante das informações de funcionário apenas daquele selecionado. Se o serviço da Web enviou todos os dados de cada funcionário quando a tabela solicitou dados, o tráfego da Web pode ficar pesado e causar um baixo desempenho do aplicativo.

Por exemplo, se o registro do funcionário possui uma foto ou um anexo, você não deseja recuperar as fotos quando está simplesmente obtendo a lista completa de funcionários. Assim, o serviço getLightEmployeeRecord é utilizado para preencher a tabela e o getFullEmployeeRecord obtém o registro completo para o funcionário selecionado na tabela.

Ligar o Campo Sobrenome

Nessa etapa, você ligará o campo Sobrenome (Last name) à propriedade lastName no objeto de dados selectedEmployeeRecord:

  1. Na exibição Java Beans ou na exibição de design, selecione JTextField para o sobrenome (lastNameField). A área de design mostra uma guia Ligação (Bind) no campo de texto.

    Guia de Ligação em um Campo de Texto

  2. Clique na guia Ligação (Bind), para abrir a caixa de diálogo Ligações de Dados do Campo (Field Data Bindings).
  3. Clique em Novo Objeto de Dados da Origem de Dados (New Data Source Data Object). Embora o objeto de dados jRowTableBinder existente retorne o último nome correto, ele não inclui o registro completo do funcionário. É necessário criar um novo objeto de dados que representa o registro completo do funcionário.
  4. No campo Tipo de Origem (Source type), certifique-se de que Serviço da Web (Web Service) está selecionado e, para Origem de Dados (Data source), certifique-se de que webServiceDataSource está selecionado.
  5. Na lista Serviço de Origem (Source service), selecione getFullEmployeeRecord(java.lang.Integer). A caixa de diálogo Novo Objeto de Dados da Origem de Dados (New Data Source Data Object) lista os serviços que retornam objetos de dados compatíveis com um campo de texto.
  6. No campo Nome (Name), digite selectedEmployeeRecord.
  7. No campo Argumento (Argument), selecione jRowTableBinder e no campo Propriedade (Property), selecione employeeID. O ID do funcionário da linha selecionada agora é definido para ser o argumento para o método do serviço getFullEmployeeRecord().
    Nota: O getFullEmployeeRecord(java.lang.Integer) requer um inteiro como um argumento. Você deseja utilizar o ID de funcionário da seleção atual na tabela de funcionários para recuperar um registro completo. Quando você liga a tabela, o Visual Editor gera automaticamente o jRowTableBinder, o qual também atende a seleção atual na tabela de funcionários. Para o parâmetro inteiro, você utilizará o employeeID da linha selecionada em jRowTableBinder.

    Caixa de Diálogo Novo Objeto de Dados da Origem de Dados

  8. Clique em OK.
  9. No dialogo Ligações de Dados do Campo (Field Data Bindings), certifique-se de que selectedEmployeeRecord esteja selecionado na lista Objetos de Dados (Data objects). Observe que há mais propriedades disponíveis para o objeto de dados selectedEmployeeRecord do que para o objeto de dados jRowTableBinder.
  10. Na lista Propriedades do Objeto de Dados (Data object properties), selecione a propriedade lastName.

    Caixa de Diálogo Ligações de Dados de Campo para lastNameField

  11. Clique em OK. O campo de sobrenome no aplicativo agora é ligado à propriedade lastName do objeto de dados selectedEmployeeRecord, retornado por getFullEmployeeRecord().

    O novo objeto de dados chamado selectedEmployeeRecord é criado e incluído em seu aplicativo. Uma representação visual do objeto de dados é incluída na área livre da exibição de design, como mostrada na imagem a seguir:

    Objeto de Dados selectedEmployeeRecord

    Agora, ao selecionar o campo lastName na área de design, uma linha indica que ele está ligado ao selectedEmployeeRecord. Na metade da linha, o ícone do binder de texto representa SwingTextComponentBinder, utilizado para essa ligação. Se você selecionar a linha ou ícone representando o binder na área de design, você pode examinar suas propriedades na exibição Propriedades.

Ligar os Campos de Detalhes Restantes

Para ligar cada um dos campos de detalhes restantes para um funcionário, você seguirá um processo semelhante ao do campo de sobrenome, mas não será necessário incluir o objeto de dados. Como você já incluiu o objeto de dados selectedEmployeeRecord, você pode, facilmente, ligar cada um dos campos de texto em sua propriedade correspondente no objeto de dados selectedEmployeeRecord.

Para ligar os campos, conclua as etapas a seguir para cada um dos campos na seção Detalhes do Funcionário do aplicativo:
  1. Selecione o campo na exibição de design e clique na guia Ligação (Bind).
  2. No diálogo Ligações de Dados do Campo (Field Data Bindings), selecione selectedEmployeeRecord a partir da lista Objetos de Dados (Data objects).
  3. Na lista Propriedades do Objeto de Dados (Data object properties), selecione a propriedade apropriada para o campo que você está ligando. O gráfico a seguir mostra a propriedade que cada campo de texto precisa ser ligado a:
    Campo Propriedade no Objeto de Dados selectedEmployeeRecord
    lastNameField lastName
    firstNameField firstName
    idField employeeID
    emailField email
    phoneField phoneNum
    officeField location.office
    buildingField location.building
    siteField location.site
  4. Clique em OK.

Ao concluir a ligação dos campos de texto, a área de design deve ter a aparência da imagem a seguir:

Visualização do Canvas Gráfico Mostrando os Campos de Texto Vinculados

Transformar o Campo ID do Funcionário em Campo de Leitura

O campo do ID do Funcionário (employee ID) está desativado, pois a propriedade editável no campo está definida como false. No entanto, o comportamento padrão do binder do campo de texto altera o estado ativado no campo quando o objeto de dados contém um valor. É possível desligar esse comportamento do binder para que o campo permaneça no estado inicial de leitura.

Para evitar que o binder alterne automaticamente a propriedade editável:
  1. Selecione o campo ID do Funcionário (Employee ID). É exibida uma linha na área de design com um ícone Ícone do binder de texto representando o binder para o campo.
  2. Clique no ícone do binder Ícone do binder de texto para o campo ID do Funcionário (Employee ID).
  3. Na exibição Propriedades (Properties), altere a propriedade autoEditable para false. Pressione Enter.

Ponto de Verificação da Lição

Agora, ao executar o aplicativo e selecionar um funcionário da tabela, os detalhes do registro do funcionário são exibidos nos campos de detalhes.

< Anterior | Próximo >