quinta-feira, 6 de setembro de 2018

Ação Dinâmica - Parte 1/3

Introdução

As ações de CRUD no JARCH já estão implícitas no menu de lista, sendo elas Incluir, Clonar, Alterar, Consultar e Excluir. Mas existe situações que precisamos de uma ação diferente, pelo menos com a descrição diferente do CRUD, como por exemplo, Ativar, Inativar, Bloquear, Desbloquear, etc... O JARCH suporta essas ações, através de ações dinâmicas. Existem 3 tipos dessas ações no JARCH. A primeira que veremos nesse Post é a ação dinâmica direta.

@JArchDynamicDirect

Para configurar essa ação é necessário anotar um método dentro da Action de Lista. Segue um exemplo abaixo dessa definição abaixo:

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
@ArchViewScoped
public class ListaLancamentoAction extends CrudListAction<LancamentoEntity, LancamentoFacade> implements Serializable {

    @JArchDynamicDirectAction(order = 1, id = "baixarVencimento", labelMenu = "label.baixarVencimento", headerConfirmation = "message.confirmacao", messageConfirmation = "message.confirmaBaixaTotalVencimento", elDisabled = "#{(l -> l.isLancamentoPago())(lancamento)}")
    public void baixaTotalVencimento(LancamentoEntity lancamento) {
        getFacade().baixaTotalVencimento(lancamento.getId());
    }

    @JArchDynamicDirectAction(order = 2, id = "baixarHoje", labelMenu = "label.baixarHoje", headerConfirmation = "message.confirmacao", messageConfirmation = "message.confirmaBaixaTotalHoje", elDisabled = "#{(l -> l.isLancamentoPago())(lancamento)}")
    public void baixaTotalHoje(LancamentoEntity lancamento) {
        getFacade().baixaTotalHoje(lancamento.getId());
    }

    @JArchDynamicDirectAction(order = 3, id = "cancelarBaixa", labelMenu = "label.cancelarBaixa", headerConfirmation = "message.confirmacao", messageConfirmation = "message.cancelaBaixa", elDisabled = "#{(l -> not l.isLancamentoPago())(lancamento)}")
    public void cancelaBaixa(LancamentoEntity lancamento) {
        getFacade().cancelaBaixa(lancamento.getId());
    }

Reparem que foram definidos 3 ações dinâmicas, 1 baixa vencimento, 1 baixa hoje e 1 cancelamento de baixa. Segue uma breve descrição dos atributos utilizados na anotação:
order: Para definir a ordem das ações no menu
id: Para controle de acesso
labelMenu: Chave no bundle da descrição do menu
headerConfirmation: Título no popup para confirmação da ação dinâmica
messageConfirmation: Mensagem no popup para confirmação da ação dinâmica
elDisabled: Expressão lambda para definição do atributo disabled do menu. Nesse exemplo acima para as ações de baixa o disabled será true caso a conta esteja paga. Para a ação cancelamento o menu só ficará habilitado caso a conta esteja baixada.

Segue um print dessas ações no menu.



Existem outros atributos, como elRendered, icon, evaluateRendered, evaluateDisabled.

Conclusão

As ações dinâmicas facilitam bastante o desenvolvimento de telas com ações específicas, no próximo post veremos um outro tipo de ação dinâmica.
Até mais,

Nenhum comentário:

Postar um comentário

Versão 23.3.0-Final

      Introdução Nesse post vou mostrar as principais novidades da versão 23.3.0, algumas correções e pequenas alterações. Alterações Além d...