Manter opção marcada do menuBar

7 respostas
VypeR

Opa galerinha!

Eu sou meio novato nessa área de desenvolvimento web com java, e por motivos de forças maiores, estou utilizando IceFaces.

Para montar o menu eu utilizei o componente menuBar, e está funcionando quase que 100% da forma que eu quero. Ele está funcionando baseado nos cliques (será uma página vista em um toten, então sem mouse over), passando e recuperando parâmetros e tudo ok.

O único detalhe é mais visual, mas imagino eu, que não deve ser nada de outro mundo.

Tenho meus menus:

Arquivo
- Novo
- Salvar
- Salvar como..
Editar
- Copiar
- Colar
- Recortar
- Preferências
Visualizar
- Mensagens

Mas na visualização inicial só é aberto o primeiro nivel e quando clico é aberto o segundo. Porém, quero deixar um estilo no menu pai enquanto o menu filho estiver aberto.

Eu até conseguiria fazer isso via CSS se os divs do menu filho estivessem dentro do menu pai, mas não estão.

Por exemplo, assim seria fácil de via css resolver:
<div class="menuPai">
  Menu pai
  <div class="menuFilho">Filho</div>
  <div class="menuFilho">Filho</div>
</div>
Mas o código gerado pelo componente é:
<div class="menuPai">
  Menu pai
</div>
<div class="menuFilho">Filho</div>
<div class="menuFilho">Filho</div>

Espero ter sido claro.

7 Respostas

Mikhas

Tenta usar uma biblioteca de javascript para gerar esses lances. É bem mais facil.

Eu uso o Ext-Js.

L

Olá VypeR,

A muito tempo venho tentando criar um menuBar horizontal e dinâmido no ICEFaces, eu utilizo o Netbeans 6.5 e o Glassfish com MySQL.

Você poderia me ajudar nesta empreitada ???

Um abraço

VypeR

Com o que você está se batendo? (:

Ajudo sim, só ser um pouco mais específico. d:

L

Bom dia VypeR,

É o seguinte, sou iniciante em Java e nas ferramentas que te citei anteriormente.
   Eu precisava criar um Menu Dinâmico com o ICEFaces utilizando o componente menuBar.
   Não consigo evoluir, tudo está confuso pra mim e acredito que é fácil pra quem já tem experiência.

   Eu necessito criar um menu dinâmico horizontal, em que ele seja montando de acordo com as permissões dadas ao usuário, que deverão estar armazenadas dentro do banco de dados, ou seja, o usuário ao se logar no aplicativo web; o sistema irá buscar as permissões deste usuário dentro do banco de dados e fazer um loop montando o MENU.

  Espero ter sido específico pra você, mas se for necessário eu repito novamente, até porque o interesse é meu. 

  De ante mão, já quero te agradecer por ter respondido a minha questão.

  Voce tem MSN ?

Forte abraço

VypeR

Para criar o menu dinâmico no IceFaces (certeza disso?) eu utilizei o componente (também sou novato nesse mundo, se não for componente o termo, sinta-se a vontade de me corrigir): ice:menuBar. O componente tem uma documentação online aqui e um exemplo de uso (com links para o fonte do exemplo).

Antes de sair utilizando - foi um erro que eu cometi - tente entender (caso já não saiba) o que é o IceFaces para toda essa sopa de letrinha java. Isso me ajudou bastante depois de entender... Procure baixar alguns exemplos de programas prontos para você ver o que eles quiseram fazer, alguns até dizem o porque ter feito daquela forma.

Mas vou colar uns trechos de código, para ver se te ajuda na montagem do seu menu.

No bean (ainda não estou muito familiarizado com essas nomenclaturas) foi necessário colocar o código abaixo, como menu é todo dinâmico, acabei criando os itens do html "a mão", que no seu caso pode ser parecido, já que montará de acordo com os acesso. Mas não quer dizer que essa maneira é a melhor, foi a que consegui - posso mudar de opinião depois de estudar mais (tenho apenas 5 meses de IceFaces, portlets, portal e afins):
for (Tema tema : temaModel.getTemas()) {
            MenuItem menuItem = new MenuItem();
            menuItem.setValue(tema.getNome());
            menu.add(menuItem);

            for (Indicador indicador : tema.getIndicadores()) {
                MenuItem subMenuItem = new MenuItem();
                subMenuItem.setValue(indicador.getNome());
                subMenuItem.setActionListener(createMethodBinding("menuListener"));
                subMenuItem.getAttributes().put("codigo", indicador.getCodigo());
                subMenuItem.getAttributes().put("titulo", tema.getNome() + " / " + indicador.getNome());
                menuItem.getChildren().add(subMenuItem);
            }
        }
O que isso faz é um loop dentro de uma lista de objetos do tipo tema que é o primeiro nível do menu, e depois outro loop pegando os indicadores de cada tema (que é o segundo nível). E esse é o meu menu no meu "html":
<ice:menuBar orientation="horizontal" displayOnClick="true">
                    <ice:menuItems value="#{informacoes.menu}" />
                </ice:menuBar>
Ali tem a orientação (horizontal, mas pode ser vertical como tem no link que te passei lá em cima) e essa propriedade displayOnClick para mostrar as subopções só quando clicado, pois a tela é touchscreen.

Bom cara, tentei ajudar um pouco... mas sou bem novato nisso tudo, pode ver que tenho altas perguntas por aqui... fui resolvendo e fuçando vendo exemplos e as páginas que te passei no início. Qualquer coisa posta aí... e só assim para te ajudar, aqui no trabalho não tem acesso a MSN e comunicadores instantâneos.

L

Olá VypeR ,

Me desculpe pela demora em te responder, é que eu tive que viajar as pressas e  cheguei hoje.

  Olha, eu vou tentar seguir o teu exemplo e também tentar adaptá-lo a minha necessidade, qualquer coisa te dou um retorno ok ?

   que vc é iniciante e eu também, que tal trocarmos experiencias nesse assunto e outros relacionados a java ????

  Meu MSN é [email removido]

  Forte abraço
VypeR

Tranquilo cara… fico a diposição para ajudar no que eu puder.

Eu uso muito pouco msn, mas… [email removido]

Qualquer coisa, dá um grito!

Criado 18 de fevereiro de 2009
Ultima resposta 20 de mar. de 2009
Respostas 7
Participantes 3