Creazione dei menu nativi (AIR)

Adobe AIR 1.0 e versioni successive

In questa sezione viene descritto come creare i vari tipi di menu nativi supportati da AIR.

Creazione di un oggetto menu principale

Per creare un oggetto NativeMenu che agisca da menu principale, usate la funzione di costruzione NativeMenu:

var root:NativeMenu = new NativeMenu(); 

Per i menu delle applicazioni e delle finestre, il menu principale rappresenta la barra dei menu e deve contenere solo voci che aprono sottomenu. I menu di scelta rapida e a comparsa non dispongono di una barra dei menu, pertanto un menu principale può contenere comandi, separatori e sottomenu.

Dopo avere creato il menu, potete aggiungere le voci. Le voci appaiono nel menu nell'ordine in cui sono state aggiunte, a meno che non le inseriate in corrispondenza di un indice specifico usando il metodo addItemAt() di un oggetto.

Assegnate il menu come un menu dell'applicazione, della finestra, dell'icona o di scelta rapida, oppure visualizzatelo come un menu a comparsa come mostrato nelle seguenti sezioni:

Impostazione del menu dell'applicazione o della finestra

È importante che il codice gestisca sia i menu dell'applicazione (supportati in Mac OS) sia i menu della finestra (supportati in altri sistemi operativi).

var root:NativeMenu = new NativeMenu(); 
if (NativeApplication.supportsMenu) 
{ 
    NativeApplication.nativeApplication.menu = root; 
} 
else if (NativeWindow.supportsMenu) 
{ 
    nativeWindow.menu = root; 
}
Nota: in Mac OS è disponibile un menu contenente voci standard per ogni applicazione. Assegnando un nuovo oggetto NativeMenu alla proprietà menu dell'oggetto NativeApplication il menu standard viene sostituito (potete anche usare il menu standard invece di sostituirlo).

Adobe Flex fornisce una classe FlexNativeMenu per semplificare la creazione di menu in grado di funzionare tra diverse piattaforme. Se state utilizzando il framework Flex, utilizzate le classi FlexNativeMenu anziché la classe NativeMenu.

Impostazione di un menu di scelta rapida per un oggetto interattivo

interactiveObject.contextMenu = root;

Impostazione di un menu per un'icona del dock o di un menu per un'icona della barra delle applicazioni

È importante che il codice gestisca sia i menu dell'applicazione (supportati in Mac OS) sia i menu della finestra (supportati in altri sistemi operativi).

if (NativeApplication.supportsSystemTrayIcon) 
{ 
    SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = root; 
} 
else if (NativeApplication.supportsDockIcon) 
{ 
    DockIcon(NativeApplication.nativeApplication.icon).menu = root; 
}
Nota: in Mac OS X è disponibile un menu standard per le icone del dock delle applicazioni. Quando assegnate un nuovo oggetto NativeMenu alla proprietà menu dell'oggetto DockIcon, le voci di quel menu vengono visualizzate sopra le voci standard. Non potete rimuovere, accedere o modificare le voci del menu standard.

Visualizzazione di un menu a comparsa

root.display(stage, x, y); 

Creazione di un sottomenu

Per creare un sottomenu, aggiungete un oggetto NativeMenuItem al menu principale e quindi assegnate l'oggetto NativeMenu, che definisce il sottomenu, alla proprietà submenu della voce. AIR offre due metodi per creare le voci di sottomenu e i relativi oggetti menu:

Potete creare una voce di menu e il relativo oggetto con un unico passaggio usando il metodo addSubmenu() :

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

Oppure potete creare una voce di menu e assegnare separatamente l'oggetto menu alla relativa proprietà submenu :

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

Creazione di un comando del menu

Per creare un comando di un menu, aggiungete un oggetto NativeMenuItem a un menu e quindi aggiungete un listener di eventi che faccia riferimento alla funzione che implementa il comando.

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

Potete intercettare l'evento select in corrispondenza del comando stesso (come mostrato nell'esempio) o potete intercettare l'evento select in corrispondenza dell'oggetto menu principale.

Nota: le voci di menu che rappresentano sottomenu e separatori non inviano eventi select e pertanto non possono essere usati come comandi.

Creazione di un separatore di menu

Per inserire un separatore, create un oggetto NativeMenuItem, impostando il parametro isSeparator su true nella funzione di costruzione. Quindi inserite il separatore nella posizione corretta del menu:

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

L'eventuale etichetta specificata per il separatore non viene visualizzata.