To test this feature, add the following snippets into the component-showcase:
icefaces\samples\component-showcase\src\com\icesoft\icefaces\samples\showcase\components\menuBar\MenuBarBean.java
private List menuModel;
public MenuBarBean()
{
menuModel = buildMenuModel();
}
private List buildMenuModel() {
List list = new ArrayList();
for(int i = 0; i < 3; i++) {
MenuItem mi = new MenuItem();
mi.setIcon("xmlhttp/css/xp/css-images/tree_folder_close.gif");
mi.setValue("Dynamic " + i);
list.add( mi );
for(int j = 0; j < 3; j++)
{
MenuItem sub = new MenuItem();
sub.setIcon("xmlhttp/css/xp/css-images/tree_document.gif");
sub.setValue("sub_"+i+"_"+j);
mi.getChildren().add( sub );
}
}
return list;
}
public List getMenuModel()
{ return menuModel; }
icefaces\samples\component-showcase\web\inc\components\menuBar.jspx
[Anywhere inside an ice:menuItem tag. Plus, it should also work right inside the ice:menuBar or ice:menuPopup tags]
<ice:menuItems value="#
{menuBar.menuModel}
" actionListener="#
{menuBar.primaryListener}
"/>
I made it allow ice:menuItems inside of ice:menuItem, and I also fixed some duplicate recursion on decode, which made several ActionEvents get broadcast if you had an actionListener.
Subversion 15225
icefaces\component\src\com\icesoft\faces\component\menubar\MenuBar.java
icefaces\component\src\com\icesoft\faces\component\menubar\MenuItem.java
icefaces\component\src\com\icesoft\faces\component\menubar\MenuItemBase.java
icefaces\component\src\com\icesoft\faces\component\menubar\MenuItemRenderer.java
icefaces\component\src\com\icesoft\faces\component\menubar\MenuItems.java
icefaces\component\src\com\icesoft\faces\component\menubar\MenuItemsRenderer.java