Introdução ao UIFactory: mudanças entre as edições
Criou página com 'O UIFactory é uma classe estática do BIS quer facilita a criação e integração dos componentes do Vaadin baseando na estrutura do framework do BIS. Há duas maneiras dif...' |
Sem resumo de edição |
||
Linha 2: | Linha 2: | ||
Há duas maneiras diferentes de utilizar a UIFactory: | Há duas maneiras diferentes de utilizar a UIFactory: | ||
* '''Métodos Estáticos''' - Os métodos estáticos do UIFactory tem funções variadas | * '''Métodos Estáticos''' - Os métodos estáticos do UIFactory tem funções variadas se resumem à tarefas simples como uma "macro". Têm a finalidade de criar ou configurar um componente do Vaadin para ser colocado na tela. Muitas vezes são linhas que se repetem para definir o padrão visual do BIS. Ao utilizar um método estático do UIFactory deixamos o código mais legível e centralizamos essas configurações. | ||
* '''Instanciando a UIFactory | * '''Instanciando a UIFactory''' - Ao instanciar uma UIFactory com um VO, a UIFactory consegue disponibilizar diversos métodos para integrar o VO aos componentes do Vaadin. Permite criar blocos de tela "padrão" da aplicação. Por exemplo, cria campos já interligados aos atributos do VO (fazendo um BIND entre campo do Vaadin e atributo do VO), criar campos de filtros, gerar o BISMO a partir do conteúdo dos campos de filtro, etc. | ||
= Métodos Estáticos = | = Métodos Estáticos = | ||
== Campos == | == Campos Genéricos == | ||
=== createField* === | === createField* === | ||
O método '''''createField(...)''''' cria campos do Vaadin em que sejam possíveis exibir a informação de um determinado atributo. Por isso recebem a classe do VO e a informação do atributo, além de outros parâmetros de configuração do padrão visual do BIS. | O método '''''createField*(...)''''' cria campos do Vaadin em que sejam possíveis exibir a informação de um determinado atributo. Por isso recebem a classe do VO e a informação do atributo, além de outros parâmetros de configuração do padrão visual do BIS. | ||
{{nota|Criação dos Campos|Note que este método avalia o BISMetaAnnotation do atributo e o type para gerar e configurar o campo. Os campos | {{nota|Criação dos Campos|Note que este método avalia o BISMetaAnnotation do atributo e o type para gerar e configurar o campo. Os campos gerados seguem uma convenção padrão de campo mais comum para o tipo de dados encontrado. No entanto, é possível forçar um tipo diferente de campo para o mesmo atributo de um VO utilizando os outros métodos que tem o prefixo '''createField_'''. Cada método gera um tipo de campo diferente e tem suporte à BISMetaAnnotations específicas.}} | ||
Linha 23: | Linha 23: | ||
=== applyBISDataFormatter() === | === applyBISDataFormatter() === | ||
Este método | Este método inclui um listener no evento ''onBlur()'' do componente que aplica um BISDataFormatter sempre que o usuário deixar o campo. Desta forma é possível manter o conteúdo de um Field formatado mesmo que o usuário coloque as informações "de qualquer jeito". Por exemplo, para manter valores com determinada precisão de casas decimais, para aplicar pontuação em um CPF/CNPJ, etc. | ||
Linha 32: | Linha 32: | ||
=== bind* === | === bind* === | ||
Os métodos de BIND permitem que um campo do Vaadin seja "conectado" em um atributo do VO diretamente. Desta forma quando o Bind é feito, o valor do VO é sincronizado no campo da tela. E sempre que o usuário alterar o valor no campo, | Os métodos de BIND permitem que um campo do Vaadin seja "conectado" em um atributo do VO diretamente. Desta forma quando o Bind é feito, o valor do VO é sincronizado no campo da tela. E sempre que o usuário alterar o valor no campo, este será automaticamente processado e atribuído no VO. Assim o VO está sempre com os dados que o usuário digitou. | ||
Edição das 19h36min de 21 de julho de 2021
O UIFactory é uma classe estática do BIS quer facilita a criação e integração dos componentes do Vaadin baseando na estrutura do framework do BIS.
Há duas maneiras diferentes de utilizar a UIFactory:
- Métodos Estáticos - Os métodos estáticos do UIFactory tem funções variadas se resumem à tarefas simples como uma "macro". Têm a finalidade de criar ou configurar um componente do Vaadin para ser colocado na tela. Muitas vezes são linhas que se repetem para definir o padrão visual do BIS. Ao utilizar um método estático do UIFactory deixamos o código mais legível e centralizamos essas configurações.
- Instanciando a UIFactory - Ao instanciar uma UIFactory com um VO, a UIFactory consegue disponibilizar diversos métodos para integrar o VO aos componentes do Vaadin. Permite criar blocos de tela "padrão" da aplicação. Por exemplo, cria campos já interligados aos atributos do VO (fazendo um BIND entre campo do Vaadin e atributo do VO), criar campos de filtros, gerar o BISMO a partir do conteúdo dos campos de filtro, etc.
Métodos Estáticos
Campos Genéricos
createField*
O método createField*(...) cria campos do Vaadin em que sejam possíveis exibir a informação de um determinado atributo. Por isso recebem a classe do VO e a informação do atributo, além de outros parâmetros de configuração do padrão visual do BIS.
![]() |
|
![]() |
|
applyBISDataFormatter()
Este método inclui um listener no evento onBlur() do componente que aplica um BISDataFormatter sempre que o usuário deixar o campo. Desta forma é possível manter o conteúdo de um Field formatado mesmo que o usuário coloque as informações "de qualquer jeito". Por exemplo, para manter valores com determinada precisão de casas decimais, para aplicar pontuação em um CPF/CNPJ, etc.
![]() |
|
bind*
Os métodos de BIND permitem que um campo do Vaadin seja "conectado" em um atributo do VO diretamente. Desta forma quando o Bind é feito, o valor do VO é sincronizado no campo da tela. E sempre que o usuário alterar o valor no campo, este será automaticamente processado e atribuído no VO. Assim o VO está sempre com os dados que o usuário digitou.
![]() |
|
Há 2 métodos de Bind estáticos. Um é genérico, permite associar qualquer campo criado à qualquer Bean do java. O outro é específico para BISVO. A diferença entre um e outro é que algumas informações sobre o atributo são tirados diretamente da BISMetaAnnotation. Simplificando o código e mantendo centralizadas as configurações do atributo.
Grid
Grid Listagem
O Grid (tabela de dados) é a maneira mais comum de exibir de dados no BIS. Podendo inclusive ser utilizada para manipulação em massa.
createGridForList()
Cria um Grid para exibir dados de uma lista de Beans quaisquer. Este método aceita trabalhar com qualquer tipo de Bean, considerando que ele tenha os métodos de Get/Set disponíveis.
setUpGrid()
Este método permite que um Grid seja configurado seguindo os padrões do BIS. Ele aceita vários parâmetros que permite que o desenvolvedor defina conforme a ocasião, como por exemplo se será de Simples ou Múltipla seleção.
No entanto faz alguns preparativos no Grid que garantem o bom funcionamento do componente conforme o padrão da estrutura do BIS.
Chame este método sempre depois de criar um Grid, mesmo que manualmente, para garantir as funcionalidades padrão do BIS em relação aos Grid.
Colunas
Há algumas maneiras diferentes de se colocar colunas no Grid. Utilizando os métodos estáticos ou manualmente.
addGridColumn()
Este métodos permitem colocar uma nova coluna em um grid baseado em um atributo de um BISVO. Permitindo inclusive configurar um BISDataFormatter.
![]() |
|
Colunas Customizadas
Uma coluna customizada pode exibir exatamente o que o desenvolvedor quiser. No entanto é preciso tomar cuidado com essas decisões, pois perdemos várias automações existentes, como por exemplo a questão de "sort" pela coluna.
![]() |
Exemplo Coluna Customizada
final Column<CFlowCategoryMapVO, String> categoryColumn = paramGrid.addColumn(vo -> {
if (vo.getCategoryVO() != null) {
switch (vo.getCategoryVO().getOperation()) {
case EXPENSE:
return "(-) " + vo.getCategoryVO().getName();
case INCOMING:
return "(+) " + vo.getCategoryVO().getName();
}
return vo.getCategoryVO().getName();
}
return "";
});
|
Grid Editável
Um Grid editável é um Grid normal, com algumas configurações adicionais.
setUpGridEditor()
O primeiro passo para deixar o grid editável é chamar este método. Ele fará as configurações necessárias no Grid para que fique no padrão do BIS.
Automação pelo UIFactory
Ao instanciar o UIFactory, é possível utiliza-lo para automatizar diversas funcionalidades das "telas" do sistema.
Para instanciar é necessário passar um VO, ou pelo menos a classe do VO e posteriormente definir a instância do VO pelo método setVO().
Ao fazer isso o UIFactory oferecerá vários métodos para automatizar sua manipulação.
Manipulação do VO
createVOField*()
Os métodos createVOField() criam campos utilizando os métodos estáticos de createField*(). No entanto já é feito o bind entre o campo e o VO atribuído na instância do UIFactory.
Todo campo criado por este método é registrado dentro do UIFactory para manipulações futuras.
createVOField_Custom()
Este método permite que um componente criado manualmente (fora do UIFactory), seja vinculado à um atributo de um VO. Ao chamar este método e passar o componente criado, o componente ficará registrado e passará a ser manipulado igualmente pelo UIFactory como os campos criados internamente.
getVOField()
Uma vez criado o campo pelos métodos createVOField*(), o campo pode ser recuperado pelo UIFactory através do método getVOField() passando o caminho do atributo do VO. Evitando assim que os todos os campos precisem ter uma referência de classe para ser encontrado por diferentes partes do sistema. Será necessário, no caso, apenas que a instância da UIFactory esteja disponível.
reloadVOField()
Este método faz com que os valores do VO seja recarregado no campo correspondente.
reloadVOField_All()
Este método copia o valor do VO para todos os campos registrados no UIFactory de uma única vez.
Automatização do BISMO
O UIFactory permite criar campos baseado nos atributos do VO para realizar filtros e buscas. Em geral essa funcionalidade é utilizada para aplicação de filtros em telas de listagem com Grid.
createMOField*()
Este métodos criam campos para serem utilizados na aplicação de filtros do atributo. Os campos retornados devem ser exibidos no layout da janela para entrada de dados do usuário.
Todos os campos criados por este método ficam registrados no UIFactory, e seus valores serão utilizados para a criação do BISMO do método createBISMO().
createMOField_Custom()
Este método permite que um campo seja feito manualmente pelo desenvolvedor, e ainda assim ser registrado como um campo de filtro para o BISMO.
Ao utilizar este método é necessário passar um listener, que será chamado para que o conteúdo desse campo gere o filtro necessário no BISMO. O listener é chamado toda vez que o método createBISMO() for chamado para recuperar o BISMO.
createBISMO()
Este método cria um BISMO já populado com os filtros utilizando os valores dos campos de MO. Esse BISMO pode ser utilizado para solicitação direta no banco de dados dos objetos correspondentes.
baseBISMO
O Base BISMO é um BISMO que pode ser colocado como base do BISMO criado pelo createBISMO(). Ou seja, é possível colocar um BISMO que servirá de base para o BISMO criado pelo createBISMO(). Esse BISMO de base é clonado toda vez, e colocados os filtros adicionais gerados pelos conteúdos dos combos.
Esse recurso é funcional quando queremos que um filtro esteja sempre ativo na listagem, como por exemplo esconder itens que não são excluídos, mas estão desabilitados.