Boa tarde a todos!
Estou sofrendo aqui pra fazer uma coisa que deve ser simples! Vamos lá:
Eu tenho um componente rich:toolbar do richfaces no meu programa.Este componente eu estou instanciando através de minha classe java e depois fazendo um binding para ele no meu managedBean.
//Java:
private HtmlToolBar toolbar = new HtmlToolBar();
//xhtml:
<rich:toolBar id="toolbar" itemSeparator="line" styleClass="menutop" binding="#{s0002.toolbar}" />
A idéia de eu instanciar esse componente no meu managedBean é porque estou criando um menu dinâmico a partir das permissões do usuário.
Segue o código onde eu adiciono os toolbargroup no meu toolbar:
for (CdtbScreenScre scre : screensList){
HtmlToolBarGroup group = new HtmlToolBarGroup();
group.setId("IDMENU_" + String.valueOf(scre.getIdScre()));
group.setLocation("left");
HtmlCommandLink link = new HtmlCommandLink();
link.setId("IDLINK_"+ String.valueOf(scre.getIdScre()));
link.setValue(scre.getDescription());
link.setImmediate(true);
HtmlGraphicImage image = new HtmlGraphicImage();
//Aqui eu pego o link da imagem
image.setUrl(IMAGE_PATH + scre.getImagePath());
group.getChildren().add(image);
//Aqui eu gostaria de adicionar um <br /> do HTML.... pois a imagem aparece ao lado do link e não acima!
group.getChildren().add(link);
toolbar.getChildren().add(group);
}
O toolbar aparece na tela corretamente, porém, as imagens ficam ao lado dos ícones e eu gostaria que elas ficassem embaixo! Isso seria resolvido com um simples
entre a imagem e o link mas eu não sei como adicionar!
Tem algum jeito de adicionar “HTML” diretamente no richfaces? Eu gostaria de adicionar um
entre group.getChildren().add(image);
//Aqui eu gostaria de adicionar um <br /> do HTML.... pois a imagem aparece ao lado do link e não acima!
group.getChildren().add(link);
Ja dei uma olhada nos componentes HTMLOtputtext e outros parecidos mas eles adicionam o texto formatado para HTML!
Espero ter sido claro.Alguém pode me ajudar?
Alguem conhece algum site/tutorial/qualquer coisa que fale sobre como trabalhar com componentes richfaces a partir do código java? tenho tido algumas dificuldades em achar informações sobre isso na web, e bom, eles não são tão intuitivos assim!
Abraço a todos e bom domingo!
Eu acabei criando um menu diferenciado…
segue o exemplo
package kernel.managedbeans.menu;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.event.MethodExpressionActionListener;
import kernel.entity.Tcmenu;
import kernel.lib.ISecurityManagerBean;
import kernel.managedbeans.abstracts.MBDefault;
import org.richfaces.component.html.HtmlPanelMenu;
import org.richfaces.component.html.HtmlPanelMenuGroup;
import org.richfaces.component.html.HtmlPanelMenuItem;
public class MenuBean extends MBDefault{
private HtmlPanelMenu panelMenu;
public MenuBean(){
init();
}
@Override
public void init() {
criarMenuDinamico();
}
private void criarMenuDinamico() {
ISecurityManagerBean bean;
panelMenu = new HtmlPanelMenu();
try {
bean = getRemoteEJB(ISecurityManagerBean.class);
List<Tcmenu> menu = bean.getRootMenuItens();
panelMenu.setEvent("onclick");
panelMenu.setMode("ajax");
//Para cada item do menu, pegando o submenu
for (Tcmenu m : menu){
HtmlPanelMenuGroup grupoMenu = new HtmlPanelMenuGroup();
grupoMenu.setLabel(m.getNome().toString().trim());
getSubMenus(m, grupoMenu, bean);
panelMenu.getChildren().add(grupoMenu);
}
} catch (Exception e) {
e.printStackTrace();
addErrorMessage(e.getMessage());
}
}
private void getSubMenus(Tcmenu sm, HtmlPanelMenuGroup grupoMenu, ISecurityManagerBean bean){
List<Tcmenu> subMenus = bean.getRootMenuChilds(sm.getIdmenu());
if (subMenus != null){
//Para cada subMenu
for (Tcmenu sb : subMenus){
//Verificando se o item tem botão, caso contrário, verificar subItens
if (sb.getTctela() == null){
HtmlPanelMenuGroup sGrupoMenu = new HtmlPanelMenuGroup();
sGrupoMenu.setLabel(sb.getCodigo());
grupoMenu.getChildren().add(sGrupoMenu);
getSubMenus(sb, sGrupoMenu, bean);
}else {
HtmlPanelMenuItem item = new HtmlPanelMenuItem();
item.setLabel(sb.getCodigo());
MethodExpressionActionListener listener = new MethodExpressionActionListener(getMethodExpression("#{MBean.processAction}"));
item.addActionListener(listener);
//sb = bean.load(sb.getClass(), sb.getIdmenu());
//sb.setTctela(bean.load(sb.getTctela().getClass(), sb.getTctela().getIdtela()));
item.setValue(sb.getTctela().getIdtela());
List<UIComponent> componentes = grupoMenu.getChildren();
//Verifica se a tela ja não foi adicionada ao menu
boolean estaNoMenu = false;
for (UIComponent comp : componentes){
HtmlPanelMenuItem it = (HtmlPanelMenuItem) comp;
it.setStatus("waitStatus");
if (it.getLabel().toString().trim().equalsIgnoreCase(item.getLabel().toString().trim()))
estaNoMenu = true;
}
if (!estaNoMenu)
grupoMenu.getChildren().add(item);
item.setReRender("panelcorpo");
getSubMenus(sb, grupoMenu, bean);
}
}
}
}
public HtmlPanelMenu getPanelMenu() {
return panelMenu;
}
public void setPanelMenu(HtmlPanelMenu panelMenu) {
this.panelMenu = panelMenu;
}
}
Acabei adicionando apenas itens fixados no toolbar…
O Código é o seguinte:
HtmlToolBarGroup group = new HtmlToolBarGroup();
group.setLocation("center");
HtmlAjaxCommandLink link = new HtmlAjaxCommandLink();
link.setImmediate(true);
link.setValue(getAplicacaoString("label_botao_sair"));
link.setTitle("");
link.setReRender("panelcorpo");
link.setStatus("waitStatus");
//link.setOnclick("javascript:" + getAplicacaoString("label_sair_mensagem"));
link.setOnclick("javascript:verificaSairSistema();");
ExpressionFactory factory = getFacesContext().getApplication().getExpressionFactory();
MethodExpressionActionListener actionListener = new MethodExpressionActionListener(factory.createMethodExpression(getFacesContext().getELContext(),"#{MBean.processAction}", null ,new Class[] {ActionEvent.class}));
HtmlGraphicImage image = new HtmlGraphicImage();
image.setUrl(getAplicacaoString("imagem_botao_sair"));
image.setOnclick("javascript:verificaSairSistema();");
image.setStyle("cursor: pointer;");
HtmlPanelGrid hPanelgrid = new HtmlPanelGrid();
hPanelgrid.setColumns(1);
hPanelgrid.setStyle("text-align: center;");
hPanelgrid.getChildren().add(image);
hPanelgrid.getChildren().add(link);
group.getChildren().add(hPanelgrid);
HtmlToolBarGroup groupHome = new HtmlToolBarGroup();
groupHome.setLocation("center");
HtmlAjaxCommandLink linkHome = new HtmlAjaxCommandLink();
linkHome.setImmediate(true);
linkHome.setValue(getAplicacaoString("label_botao_home"));
linkHome.setTitle(getAplicacaoString("pagina_botao_home"));
linkHome.setReRender("panelcorpo");
linkHome.setStatus("waitStatus");
ExpressionFactory factoryHome = getFacesContext().getApplication().getExpressionFactory();
MethodExpressionActionListener actionListenerHome = new MethodExpressionActionListener(factoryHome.createMethodExpression(getFacesContext().getELContext(),"#{MBean.processAction}", null ,new Class[] {ActionEvent.class}));
linkHome.addActionListener(actionListenerHome);
HtmlGraphicImage imageHome = new HtmlGraphicImage();
imageHome.setUrl(getAplicacaoString("imagem_botao_home"));
//imageHome.setOnclick("disconnect();");
imageHome.setStyle("cursor: pointer;");
HtmlPanelGrid hPanelgridHome = new HtmlPanelGrid();
hPanelgridHome.setColumns(1);
hPanelgridHome.setStyle("text-align: center;");
hPanelgridHome.getChildren().add(imageHome);
hPanelgridHome.getChildren().add(linkHome);
groupHome.getChildren().add(hPanelgridHome);
//Adicionando o logoff
toolbar.getChildren().add(groupHome);
toolbar.getChildren().add(group);