Criação de menus nativos (AIR)

Adobe AIR 1.0 e posterior

Este tópico descreve como criar os vários tipos de menu nativos suportados pelo AIR.

Criação de objeto do menu raiz

Para criar um objeto NativeMenu para servir como raiz do menu, use o construtor NativeMenu:

var root:NativeMenu = new NativeMenu(); 

Em menus de aplicativo e janela, o menu raiz representa a barra de menu e deve conter apenas itens que abram submenus. Menus de contexto e pop-up não têm barra de menu, portanto, o menu raiz pode conter comandos e linhas separadoras, bem como submenus.

Depois que o menu é criado, você pode adicionar itens de menu. Os itens aparecem no menu na ordem em que são adicionados, a menos que você os adicione em um índice específico, usando o método addItemAt() de um objeto de menu.

Atribua o menu como aplicativo, janela, ícone ou menu de contexto ou exiba-o como menu pop-up, conforme mostrado nas seções a seguir:

Configuração do menu de aplicativo ou menu de janela

É importante que o código possua suporte a ambos menus do aplicativo (suporte no Mac OS) e menus de janela (suporte em outros sistems operacionais)

var root:NativeMenu = new NativeMenu(); 
if (NativeApplication.supportsMenu) 
{ 
    NativeApplication.nativeApplication.menu = root; 
} 
else if (NativeWindow.supportsMenu) 
{ 
    nativeWindow.menu = root; 
}
Nota: O Mac OS define um menu contendo itens padrão para cada aplicativo. Atribuir um novo objeto NativeMenu à propriedade menu do objeto NativeApplication substitui o menu padrão. Você também pode usar o menu padrão, em vez de substitui-lo.

O Adobe Flex fornece uma classe FlexNativeMenu para criar facilmente menus que funcionam em várias plataformas. Se estiver usando a estrutura do Flex, use as classes FlexNativeMenu no lugar da classe NativeMenu.

Configuração de menu de contexto em um objeto interativo

interactiveObject.contextMenu = root;

Configuração de menu de ícone de encaixe ou o menu de ícone da bandeja do sistema

É importante que o código possua suporte a ambos menus do aplicativo (suporte no Mac OS) e menus de janela (suporte em outros sistems operacionais)

if (NativeApplication.supportsSystemTrayIcon) 
{ 
    SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = root; 
} 
else if (NativeApplication.supportsDockIcon) 
{ 
    DockIcon(NativeApplication.nativeApplication.icon).menu = root; 
}
Nota: O Mac OS X define um menu padrão para o ícone de encaixe do aplicativo. Ao atribuir um novo NativeMenu à propriedade de menu do objeto DockIcon, os itens nesse menu são exibidos acima dos itens padrão. Você não pode remover, acessar nem modificar os itens de menu padrão.

Exibição de menu como pop-up

root.display(stage, x, y); 

Criação de submenu

Para criar um submenu, você adiciona o objeto NativeMenuItem ao menu pai e, em seguida, atribui o objeto NativeMenu, definindo o submenu para a propriedade submenu do item. O AIR oferece duas maneiras de criar itens de submenu e respectivos objetos de menu associados:

Você pode criar um item de menu e respectivo objeto de menu relacionado em uma etapa, com o método addSubmenu() :

var editMenuItem:NativeMenuItem = root.addSubmenu(new NativeMenu(), "Edit"); 

Você também pode criar o item de menu e atribuir separadamente o objeto de menu à respectiva propriedade submenu :

var editMenuItem:NativeMenuItem = root.addItem("Edit", false); 
editMenuItem.submenu = new NativeMenu(); 

Criação de comando de menu

Para criar um comando de menu, adicione o objeto NativeMenuItem a um menu e adicione um ouvinte de evento que faça referência à função que implementa o comando de menu:

var copy:NativeMenuItem = new NativeMenuItem("Copy", false); 
copy.addEventListener(Event.SELECT, onCopyCommand); 
editMenu.addItem(copy);

Você pode ouvir o evento select no próprio item de comando (conforme mostrado no exemplo) ou pode ouvir o evento select em um objeto de menu pai.

Nota: Os itens de menu que representam submenus e linhas separadoras não despacham eventos select e, portanto, não podem ser usados como comandos.

Criação de linha separadora de menu

Para criar uma linha separadora, crie um NativeMenuItem, definindo o parâmetro isSeparator como true no construtor. Em seguida, adicione o item separador ao menu no local correto:

var separatorA:NativeMenuItem = new NativeMenuItem("A", true); 
editMenu.addItem(separatorA);

O rótulo especificado para o separador, se houver, não é exibido.