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-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
|