add dynamically tab to rich:tabPanel
rino.covelli Jan 26, 2013 9:40 AMDear Friends , i want add and remove tab dynamically , now i have managed to do this
<rich:panelMenu >
<rich:panelMenuGroup >
<rich:panelMenuItem label="Users" name="Users" action="#{tabsBean.createTabs('Users Tab')}" render="tabs" />
<rich:panelMenuItem label="Orders" name="Orders" action="#{tabsBean.createTabs('Orders Tab')}" render="tabs" />
</rich:panelMenuGroup>
</rich:panelMenu>
<h:panelGrid id="tabs" binding="#{tabsBean.panelGrid}"/>
then i have a bean that manage the tabs
package net.interneteidee.utility;
import java.util.LinkedList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.Application;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIData;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.context.FacesContext;
import org.richfaces.component.SwitchType;
import org.richfaces.component.UITab;
import org.richfaces.component.UITabPanel;
@ManagedBean
@SessionScoped
public class TabsBean {
private HtmlPanelGrid panelGrid;
private UITabPanel tabPanel;
private List<UITab> tabsList;
private Application application;
public TabsBean() {
tabsList = new LinkedList<UITab>();
}
@PostConstruct
public void init(){
FacesContext context = FacesContext.getCurrentInstance();
application = context.getApplication();
tabPanel = (UITabPanel)application.createComponent(UITabPanel.COMPONENT_TYPE);
tabPanel.setSwitchType(SwitchType.ajax);
}
public void createTabs (String name){
UITab tab = new UITab();
tab = (UITab)application.createComponent(UITab.COMPONENT_TYPE);
tab.setName(name);
tabPanel.getChildren().add(tab);
UIData d = new UIData();
panelGrid.getChildren().add(tabPanel);
}
public UITabPanel getTabPanel() {
return tabPanel;
}
public void setTabPanel(UITabPanel tabPanel) {
this.tabPanel = tabPanel;
}
public List<UITab> getTabsList() {
return tabsList;
}
public void setTabsList(List<UITab> tabsList) {
this.tabsList = tabsList;
}
public Application getApplication() {
return application;
}
public void setApplication(Application application) {
this.application = application;
}
public HtmlPanelGrid getPanelGrid() {
return panelGrid;
}
public void setPanelGrid(HtmlPanelGrid panelGrid) {
this.panelGrid = panelGrid;
}
}
now my problem is that i must add of components a this tabs (datatable that contains all user , form for insert a user and other)
how can i do?