TabView tabView = (TabView) uiComponent;
Integer selectedIndex = tabView.getSelectedIndex();
Object value = tabView.getValue();
String var = tabView.getVar();
boolean iterateOverDataModel = ((value != null) && (var != null));
Tab prototypeChildTab = null;
if (uiComponent instanceof TabView) {
prototypeChildTab = TabUtil.getFirstChildTab(tabView);
}
// Encode the starting <ul> unordered list element that represents the list of clickable tabs.
ResponseWriter responseWriter = facesContext.getResponseWriter();
responseWriter.startElement(StringPool.UL, tabView);
RendererUtil.encodeStyleable(responseWriter, tabView, NAV_NAV_TABS);
if (iterateOverDataModel) {
if (prototypeChildTab != null) {
int rowCount = tabView.getRowCount();
for (int i = 0; i < rowCount; i++) {
tabView.setRowIndex(i);
boolean selected = ((selectedIndex != null) && (i == selectedIndex));
encodeTabListItem(facesContext, responseWriter, prototypeChildTab, selected);
}
tabView.setRowIndex(-1);
}
else {
logger.warn("Unable to iterate because aui:tabView does not have an aui:tab child element.");
}
}
else {
List<UIComponent> children = uiComponent.getChildren();
int childCount = children.size();
for (int i = 0; i < childCount; i++) {
UIComponent child = children.get(i);
if ((child instanceof Tab) && child.isRendered()) {
Tab childTab = (Tab) child;
boolean selected = ((selectedIndex != null) && (i == selectedIndex));
encodeTabListItem(facesContext, responseWriter, childTab, selected);
}
else {
logger.warn("Unable to render child element of alloy:tabView since it is not alloy:tab");