Could you please try it after making the following changes in CaliforniaMenuRenderer.java;
Code: Select all
public class CaliforniaMenuRenderer extends BaseMenuRenderer {
...
protected void encodeElement(FacesContext context, AbstractMenu menu, MenuElement element) throws IOException {
ResponseWriter writer = context.getResponseWriter();
if (element.isRendered()) {
if (element instanceof MenuItem) {
MenuItem menuItem = (MenuItem) element;
String menuItemClientId = (menuItem instanceof UIComponent) ? menuItem.getClientId() : menu.getClientId(context) + "_" + menuItem.getClientId();
String containerStyle = menuItem.getContainerStyle();
String containerStyleClass = menuItem.getContainerStyleClass();
writer.startElement("li", null);
writer.writeAttribute("id", menuItemClientId, null);
writer.writeAttribute("role", "menuitem", null);
if (containerStyle != null) {
writer.writeAttribute("style", containerStyle, null);
}
if (containerStyleClass != null) {
writer.writeAttribute("class", containerStyleClass, null);
}
encodeMenuItem(context, menu, menuItem);
writer.endElement("li");
} else if (element instanceof Submenu) {
Submenu submenu = (Submenu) element;
String submenuClientId = (submenu instanceof UIComponent) ? ((UIComponent) submenu).getClientId() : menu.getClientId(context) + "_" + submenu.getId();
String style = submenu.getStyle();
String styleClass = submenu.getStyleClass();
boolean isExpanded = submenu.isExpanded(); // ADDED THIS LINE
String defaultStyleClass = "ui-menuitem-submenu";
styleClass = styleClass != null ? styleClass + " " + defaultStyleClass : defaultStyleClass;
styleClass = isExpanded ? styleClass + " active-menuitem" : styleClass; // ADDED THIS LINE
writer.startElement("li", null);
writer.writeAttribute("id", submenuClientId, null);
writer.writeAttribute("role", "menuitem", null);
writer.writeAttribute("class", styleClass, null);
if (style != null) {
writer.writeAttribute("style", style, null);
}
encodeSubmenu(context, menu, submenu);
writer.endElement("li");
} else if (element instanceof Separator) {
encodeSeparator(context, (Separator) element);
}
}
}
protected void encodeSubmenu(FacesContext context, AbstractMenu menu, Submenu submenu) throws IOException {
ResponseWriter writer = context.getResponseWriter();
String icon = submenu.getIcon();
String label = submenu.getLabel();
int childrenElementsCount = submenu.getElementsCount();
boolean isExpanded = submenu.isExpanded();
writer.startElement("a", null);
writer.writeAttribute("href", "#", null);
encodeItemIcon(context, icon);
if (label != null) {
writer.startElement("span", null);
writer.writeText(label, null);
writer.endElement("span");
if (submenu instanceof UISubmenu) {
encodeBadge(context, ((UISubmenu) submenu).getAttributes().get("badge"));
}
encodeToggleIcon(context, submenu, childrenElementsCount);
}
writer.endElement("a");
//submenus and menuitems
if (childrenElementsCount > 0) {
writer.startElement("ul", null);
writer.writeAttribute("role", "menu", null);
/********************* ADDED THESE LINES ********************/
if (isExpanded) {
writer.writeAttribute("style", "display:block;", null);
}
/***************************************************************/
encodeElements(context, menu, submenu.getElements());
writer.endElement("ul");
}
}
...
}