UIFactory

De Wiki do Leitão
Ir para: navegação, pesquisa

O UIFactory nada mais é do que uma classe com diversos recursos para agilizar a produção da UI mantendo um padrão de desenvolvimento e criação por toda a aplicação. Ela não é obrigatória nem necessária, mas em muitos casos utilizar esta classe fará com que você faça muito mais com bem menos linhas de código.

Criação de Blocos

Métodos de de criação de blocos são todos estáticos! E tem explicitamente a função de receber em uma única linha de comando todas as definições que queremos do bloco e retorna-lo pronto para uso. Vejamos os exemplos:

createField_*

Os métodos com o prefixo createField_* são responsáveis por criar componentes do tipo campos de entrada de dados. Seja um TextBox, um ComboBox, ou componentes mais elaborados como o RFWComboMeasureUnit.

Gerencimento da Tela

A função mais avançada do UIFactory é gerenciar os campos e dados da tela. Podendo ser utilizado para criar telas de filtro e exibição de dados, ou telas para edição e entrada de dados.

Para essas funções você precisa instanciar a classe, que será responsável por manter o ciclo de vida dos componentes da tela. Para recomendo que crie um field na sua janela, podendo ser final ou não de acordo com sua implementação:


Java 256.png Instanciação da UIFactory
  private UIFactory<SeuVO> uiFac = new UIFactory<>(SeuVO.class);


Gerenciando Tela de Listagem

Para criar uma tela de listagem de dados gerenciada pelo UIFactory temos de criar os campos de filtro utilizando o UIFactory. Ao criar os campos com a instância do UIFactory ele fará automaticamente o bind entre os campos criados e os campos do RFWMO], assim, toda vez que o usuário solicitar que os dados sem filtrados o próprio UIFactory criará o RFWMO para realizar essa busca.

Vejamos alguns exemplos:


Java 256.png Instanciação da UIFactory
  // Cria um campo para filtrar a listagem do SeuVO pelo atributo 'name'
  TextField textField = this.uiFac.createMOField(SeuVO_._name, "100px", "200px");
  textField.focus(); // Coloca o foco no primeiro campo da tela de busca

  // Cria um campo para filtrar a listagem do SeuVO pelo atributo 'description'
  this.uiFac.createMOField(SeuVO_._description, "100px", "400px");


Criando Painel com os Campos

Se você criou os campos para filtrar com o UIFactory ele cria um modelo de painel com os campos de busca, botão de busca, botão de limpeza, etc.. para ser colocado na tela. para isso utilize o seguinte método:


Java 256.png Instanciação da UIFactory
  private void doLayout() {
    try {
      // Atualiza o conteúdo do searchPanel
      searchPanel.setContent(uiFac.createSearchPanel(1, null, getDBProvider()));
    } catch (RFWException e) {
      TreatException.treat(e);
    }
  }


O painel criado por este método utiliza o tamanho do componente pai para distribuir os componentes na tela, e atualmente não é responsivo. Assim, se o usuário mudar o tamanho do browser a tela precisará ser corrigida. Como solução até que este painel seja responsivo, é fazer a janela implementar a interface BrowserWindowResizeEvent que recebe um evento caso o painel precise ser refeito. Note que este evento é lançado a partir do RFWFrame, se você não o utilizar o evento não será recebido.