menuBar


The menuBar component provides a robust menu system that supports:

Examples

This is an example of a static menu definition that can be expressed in a jsp or jspx page. This is a typical menu bar with File, Edit and View menus. The final top-level menu, the View menu, is quite plain with only labels and no actions, actionListeners, or custom images. Only labels exist on non-functional menuItems.

The top-level File and Edit menus have a bit more detail: they contains labels, custom icons for each menu item, and associations with actions or actionListeners.

<ice:menuBar orientation="vertical">

<ice:menuItem value="File">
<ice:menuItem value="Open" icon="file_open.gif" actionListener="#{menuBean.menuActionListener}" />
<ice:menuItem value="Close" icon="file_close.gif" actionListener="#{menuBean.menuActionListener}" />
<ice:menuItemSeparator/>
<ice:menuItem value="Recent">
<ice:menuItem icon="xmlhttp/css/xp/css-images/document.gif" value="File 1"/>
<ice:menuItem icon="xmlhttp/css/xp/css-images/document.gif" value="File 2">
<ice:menuItem icon="xmlhttp/css/xp/css-images/paragraph.gif" value="Para 1" actionListener="#{menuBean.menuActionListener}" />
<ice:menuItem icon="xmlhttp/css/xp/css-images/paragraph.gif" value="Para 2" action="#{menuBean.menuAction}" />
</ice:menuItem>
<ice:menuItem value="File 3" icon="xmlhttp/css/xp/css-images/document.gif">
<ice:menuItem icon="xmlhttp/css/xp/css-images/paragraph.gif" value="Para 1"/>
<ice:menuItem icon="xmlhttp/css/xp/css-images/paragraph.gif" value="Para 2"/>
<ice:menuItem icon="xmlhttp/css/xp/css-images/paragraph.gif" value="Para 3"/>
</ice:menuItem>
</ice:menuItem>
</ice:menuItem>

<ice:menuItem value="Edit">
<ice:menuItem value="Cut" icon="xmlhttp/css/xp/css-images/cut.gif" action="#{menuBean.menuActionCut}"/>
<ice:menuItem value="Copy" icon="xmlhttp/css/xp/css-images/copy.gif" action="#{menuBean.menuActionCopy}"/>
<ice:menuItem value="Paste" icon="xmlhttp/css/xp/css-images/paste.gif" action="#{menuBean.menuActionPaste}"/>
</ice:menuItem>

<ice:menuItem value="View">
<ice:menuItem value="toolbar" />
<ice:menuItem value="statusbar" />
<ice:menuItem value="custom" />
</ice:menuItem>

</ice:menuBar>

The next example is the dynamic menu bar. The heirarchy is composed in and returned from the backing bean method.

The jsp/jspx snippet is very simple:

<ice:menuBar orientation="vertical">
<ice:menuItems value="#{menuBean.menuModel}"/>
</ice:menuBar>

The backing bean provides (some variation of) the following infrastructure. Actions and actionListeners are omitted for brevity:

    private List menuModel;
public List getMenuModel() {
return menuModel;
}
public MenuBean() {

menuModel = new ArrayList();

MenuItem topLevel1 = new MenuItem();
topLevel1.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
topLevel1.setValue("topLevel1");

MenuItem topLevel2 = new MenuItem();
topLevel2.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
topLevel2.setValue("topLevel2");

MenuItem topLevel3 = new MenuItem();
topLevel3.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
topLevel3.setValue("topLevel3");

menuModel.add(topLevel1);
menuModel.add(topLevel2);
menuModel.add(topLevel3);

MenuItem sub1_1 = new MenuItem();
sub1_1.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
sub1_1.setValue("sub1_1");
MenuItem sub1_2 = new MenuItem();
sub1_2.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
sub1_2.setValue("sub1_2");
MenuItem sub1_3 = new MenuItem();
sub1_3.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
sub1_3.setValue("sub1_3");

topLevel1.getChildren().add(sub1_1);
topLevel1.getChildren().add(sub1_2);
topLevel1.getChildren().add(sub1_3);

MenuItem sub1_1_1 = new MenuItem();
sub1_1_1.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
sub1_1_1.setValue("sub1_1_1");
MenuItem sub1_1_2 = new MenuItem();
sub1_1_2.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
sub1_1_2.setValue("sub1_1_2");
MenuItem sub1_1_3 = new MenuItem();
sub1_1_3.setIcon("xmlhttp/css/xp/css-images/menuitem.gif");
sub1_1_3.setValue("sub1_1_3");

sub1_1.getChildren().add(sub1_1_1);
sub1_1.getChildren().add(sub1_1_2);
sub1_1.getChildren().add(sub1_1_3);
}

Tag Summary

tag-name:
<ice:menuBar>
tag-class:
com.icesoft.faces.component.menubar.MenuBarTag
component-class:
com.icesoft.faces.component.menubar.MenuBar
component-type:
com.icesoft.faces.Menu
component-family:
com.icesoft.faces.Menu
renderer-class:
com.icesoft.faces.component.menubar.MenuBarRenderer
renderer-type:
com.icesoft.faces.View