Richfaces rich:toolbarGroup

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);