Handling menu events

Flash Player 9 and later, Adobe AIR 1.0 and later

A menu dispatches events when the user selects the menu or when the user selects a menu item.

Events summary for menu classes

Add event listeners to menus or individual items to handle menu events.

Object

Events dispatched

NativeMenu (AIR)

Event.PREPARING (Adobe AIR 2.6 and later)

Event.DISPLAYING

Event.SELECT (propagated from child items and submenus)

NativeMenuItem (AIR)

Event.PREPARING (Adobe AIR 2.6 and later)

Event.SELECT

Event.DISPLAYING (propagated from parent menu)

Select menu events

To handle a click on a menu item, add an event listener for the select event to the NativeMenuItem object:

var menuCommandX = new NativeMenuItem("Command X"); 
menuCommand.addEventListener(air.Event.SELECT, doCommandX)

Because select events bubble up to the containing menus, you can also listen for select events on a parent menu. When listening at the menu level, you can use the event object target property to determine which menu command was selected. The following example traces the label of the selected command:

var colorMenuItem = new air.NativeMenuItem("Choose a color"); 
var colorMenu = new air.NativeMenu(); 
colorMenuItem.submenu = colorMenu; 
 
var red = new air.NativeMenuItem("Red"); 
var green = new air.NativeMenuItem("Green"); 
var blue = new air.NativeMenuItem("Blue"); 
colorMenu.addItem(red); 
colorMenu.addItem(green); 
colorMenu.addItem(blue); 
 
if(air.NativeApplication.supportsMenu){ 
    air.NativeApplication.nativeApplication.menu.addItem(colorMenuItem); 
    air.NativeApplication.nativeApplication.menu.addEventListener(air.Event.SELECT, 
                                                                colorChoice); 
} else if (air.NativeWindow.supportsMenu){ 
    var windowMenu = new air.NativeMenu(); 
    window.nativeWindow.menu = windowMenu; 
    windowMenu.addItem(colorMenuItem); 
    windowMenu.addEventListener(air.Event.SELECT, colorChoice); 
} 
 
function colorChoice(event) { 
    var menuItem = event.target; 
    air.trace(menuItem.label + " has been selected"); 
}

If you are using the ContextMenuItem class, you can listen for either the select event or the menuItemSelect event. The menuItemSelect event gives you additional information about the object owning the context menu, but does not bubble up to the containing menus.

Displaying menu events

To handle the opening of a menu, you can add a listener for the displaying event, which is dispatched before a menu is displayed. You can use the displaying event to update the menu, for example by adding or removing items, or by updating the enabled or checked states of individual items. You can also listen for the menuSelect event from a ContextMenu object.

In AIR 2.6 and later, you can use the preparing event to update a menu in response to either displaying a menu or selecting an item with a keyboard shortcut.

// Ethnio survey code removed