quinta-feira, 2 de agosto de 2018

Configuração Menu

Introdução

A criação de menus sempre foi um pouco complicado mesmo utilizando framework's como JSF e Primefaces ou até mesmo utilizando HTML5, mas seria muito melhor se houvesse uma API JAVA para isso. O JARCH possui uma API para criação de menus de forma fluente, tornando muito fácil sua utilização.

Exemplos

Nesse post vou mostrar como configurar o menu da aplicação usando JARCH.
Segue abaixo um print do menu do template JARCH:
Para a implementação do menu é necessário criar uma action estendendo do MenuBaseAction.
Segue abaixo um exemplo:
1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package br.com.arch.arquitetura.menu;

import br.com.jarch.annotation.ArchViewScoped;
import br.com.jarch.menu.BaseMenuAction;
import br.com.jarch.menu.IMenu;
import br.com.jarch.menu.MenuBuilder;

import java.util.ArrayList;
import java.util.List;

@ArchViewScoped
public class MenuAction extends BaseMenuAction {

    @Override
    public List<IMenu> createMenu() {
        List<IMenu> menu = new ArrayList<>();

        menu.add(MenuBuilder
                .newInstance()
                .id("liCadastro")
                .name("Cadastro")
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .id("liCadastroAplicacao")
                        .name("Aplicação")
                        .action("../aplicacao/aplicacaoList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .id("liCadastroBanco")
                        .name("Banco")
                        .action("../banco/bancoList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Condominio")
                        .action("../condominio/condominioList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Cliente")
                        .action("../cliente/clienteList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Marca")
                        .action("../marca/marcaList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Produto")
                        .action("../produto/produtoList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Pessoa")
                        .action("../pessoa/pessoaList.jsf")
                        .build())
                .build());

        menu.add(MenuBuilder
                .newInstance()
                .name("Lançamento")
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Contas Pagar")
                        .action("../contapagar/contaPagarList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Pedido")
                        .action("../pedido/pedidoList.jsf")
                        .build())
                .build());

        menu.add(MenuBuilder
                .newInstance()
                .name("BPM")
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Lista Tarefa")
                        .action("../bpmn/tarefaList.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Lista Cockpit")
                        .action("../bpmn/listCockpit.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Lista Incidente")
                        .action("../bpmn/listIncident.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Reprocessamento")
                        .action("../bpmn/reprocessamento.jsf")
                        .build())
                .addSubMenu(MenuBuilder
                        .newInstance()
                        .name("Deploy")
                        .action("../bpmn/deploy.jsf")
                        .build())
                .build());

        menu.add(MenuBuilder
                .newInstance()
                .name("Parâmetro")
                .action("../relatorio/relatorioProduto.jsf")
                .build());

        return menu;
    }
}

Acima estou criando uma classe com o nome de MenuAction com escopo de view e acessível via EL (@ArchViewScoped). A classe que está sendo estendida de MenuBaseAction, essa classe obriga a implementação do método createMenu, que é uma List<IMenu>. Essa List<IMenu> será os itens que aparecerão no menu, para preencher essa lista eu usei a biblioteca MenuBuilder, e de forma fluente vou preenchendo o menu principal com os itens de menus.

Conclusão

Nunca foi tão fácil a criação de menu e mesmo se o menu for de forma dinâmica a utilização dessa biblioteca é muito fácil.

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...