Mudanças entre as edições de "RFWPickerWindow"
(Criou página com 'A RFWPickerWindow é uma janela utilizada quando desejamos buscar e selecionar um ou mais itens do banco de dados. Por exemplo, em um cadastro de endereços o usuário precisa buscar o CEP pelo nome da rua, e depois de filtrar escolher o correto para carregar o endereço. Ou em uma tela de emissão de notas, o usuário precisa escolher o destinatário no cadastro de pessoas do sistema. = Implementação = Para utilizar a classe basta estender a '''RFWPickerWindow''', v...') |
|||
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 18: | Linha 18: | ||
// ==>>> Criamos o GRID de listagem e suas colunas | // ==>>> Criamos o GRID de listagem e suas colunas | ||
final Grid<GVO<SeuVO>> grid = this.getUiFac().createGridForMO(SelectionMode.SINGLE, null, new String[] { SeuVO_._name }, null, getDbProvider); | final Grid<GVO<SeuVO>> grid = this.getUiFac().createGridForMO(SelectionMode.SINGLE, null, new String[] { SeuVO_._name }, null, getDbProvider()); | ||
this.getUiFac().addGridForMOColumn(SeuVO_._name); | this.getUiFac().addGridForMOColumn(SeuVO_._name); | ||
Linha 29: | Linha 29: | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
= Utilização = | = Utilização = | ||
Linha 57: | Linha 55: | ||
</syntaxhighlight>}} | </syntaxhighlight>}} | ||
== UIFactory == | |||
Na instanciação da classe, o '''RFWPickerWindow''' cria uma instância do objeto [[UIFactory]]. Toda a implementação dessa janela leva em consideração o gerenciamento dos campos através deste componente. | |||
Os campos do painel de filtro são criados a partir dos campos de MO criadnos no [[UIFactory]]. Assim como a execução da busca é feita com o MO obtido a partir dele. | |||
Para obter a instância do [[UIFactory]] da janela utiliza o método '''getUiFac()'''. | |||
== Barra de Botões == | |||
A barra de botões, que contém os botões Cancelar e Confirmar podem ser customizada para, por exemplo, incluir outros botões ou mensagens. Para isso você deve criar seu próprio componente de layout e substituí-lo. | |||
Tenha mente que seu componente será colocado em um VerticalLayout e que deve se encaixar no layout já existente e o espaço total remanescente é passado para o Grid. | |||
Além disso, você pode obter os botões de Cancelar e Confirmar ja existentes pelos métodos '''getButtonCancel()''' e '''getButtonConfirm''', e utiliza-los no seu layout. Desta forma não perderá o código de ação já implementados nos botões. | |||
Para incluir sua barra de botões no layout utilize o método '''setButtonBar(...)'''. | |||
== Seleção Única == | |||
Como alternativa ao método '''getSelectedItems()''', também é possível utilizar o método '''getSelectedFirstItem()'''. Este método retorna o primeiro item da lista retornada por '''getSelectedItems()'''. '''Não é necessariamente o primeiro item que o usuário selecionou!''' Mas simplifica o código quando o picker é de seleção única, assim não temos que implementar a iteração para retirar esse item único. |
Edição atual tal como às 13h39min de 31 de julho de 2023
A RFWPickerWindow é uma janela utilizada quando desejamos buscar e selecionar um ou mais itens do banco de dados. Por exemplo, em um cadastro de endereços o usuário precisa buscar o CEP pelo nome da rua, e depois de filtrar escolher o correto para carregar o endereço. Ou em uma tela de emissão de notas, o usuário precisa escolher o destinatário no cadastro de pessoas do sistema.
Implementação
Para utilizar a classe basta estender a RFWPickerWindow, veja um exemplo de Picker para selecionar um objeto SeuVO:
![]() |
Criando uma RFWPickerWindow |
public class SeuPickerWindow extends RFWPickerWindow<SeuVO> {
// Crie seu construtor com os parâmetros que precisar
public SeuPickerWindow() throws RFWException {
super(SeuVO.class, "Título da Janela", new ThemeResource("icon/seuicon_64.png"), new SeuDBProvider());
// ==>>> Cria os campos de do Filtro utilizando o getUiFac() da classe
this.getUiFac().createMOField(SeuVO_._name, "300px", "500px");
// ==>>> Criamos o GRID de listagem e suas colunas
final Grid<GVO<SeuVO>> grid = this.getUiFac().createGridForMO(SelectionMode.SINGLE, null, new String[] { SeuVO_._name }, null, getDbProvider());
this.getUiFac().addGridForMOColumn(SeuVO_._name);
// Coloca o Grid no layout
super.setGrid(grid);
// Atualiza o SearchPanel com os campos MO criados no UIFac.
super.updateSearchPanel();
}
|
Utilização
Depois de implementada a sua classe, você precisará chamá-la, exibi-la e monitorar quando for fechada. A RFWPickerWindow pode ser fechada pelo botão de close da janela, pelo botão cancelar ou pelo confirmar.
Se for fechada pelo botão confirmar a janela valida se há ao menos 1 item selecionado antes de permitir que seja fechada. Se for fechada de outra forma não há nenhuma validação ou função que impeça seu fechamento.
Porém, se for finalizada pelo método confirmar o método getSelectedItems() será diferente de nulo, contendo uma List<> dos objetos selecionados. Qualquer outro método de fechamento da janela fará com que este método retorne nulo.
![]() |
Utilizando a RFWPickerwindow |
SeuPickerWindow picker = new SeuPickerWindow();
// Monitora quando a janela for fechada
picker.addCloseListener(evt -> {
try {
if (picker.getSelectedItems() != null) {
// Trata o(s) item(ns) selecionado(s)
}
} catch (RFWException e) {
TreatException.treat(e);
}
});
|
UIFactory
Na instanciação da classe, o RFWPickerWindow cria uma instância do objeto UIFactory. Toda a implementação dessa janela leva em consideração o gerenciamento dos campos através deste componente.
Os campos do painel de filtro são criados a partir dos campos de MO criadnos no UIFactory. Assim como a execução da busca é feita com o MO obtido a partir dele.
Para obter a instância do UIFactory da janela utiliza o método getUiFac().
Barra de Botões
A barra de botões, que contém os botões Cancelar e Confirmar podem ser customizada para, por exemplo, incluir outros botões ou mensagens. Para isso você deve criar seu próprio componente de layout e substituí-lo.
Tenha mente que seu componente será colocado em um VerticalLayout e que deve se encaixar no layout já existente e o espaço total remanescente é passado para o Grid.
Além disso, você pode obter os botões de Cancelar e Confirmar ja existentes pelos métodos getButtonCancel() e getButtonConfirm, e utiliza-los no seu layout. Desta forma não perderá o código de ação já implementados nos botões.
Para incluir sua barra de botões no layout utilize o método setButtonBar(...).
Seleção Única
Como alternativa ao método getSelectedItems(), também é possível utilizar o método getSelectedFirstItem(). Este método retorna o primeiro item da lista retornada por getSelectedItems(). Não é necessariamente o primeiro item que o usuário selecionou! Mas simplifica o código quando o picker é de seleção única, assim não temos que implementar a iteração para retirar esse item único.