例:XML MenuBuilder データソース

Adobe AIR 1.0 およびそれ以降

次の例では、MenuBuilder フレームワークを使用してテキスト領域のコンテキストメニューを定義します。XML をデータソースとするメニュー構造の定義方法を示します。同じメニュー構造を JSON 配列で指定するアプリケーションについては、 例:JSON MenuBuilder データソース を参照してください。

アプリケーションは 2 つのファイルで構成されます。

最初のファイルはメニューデータソースで、「textContextMenu.xml」というファイルです。この例で使用するメニューアイテムノードの名前は「menuitem」ですが、XML ノードの実際の名前は重要ではありません。前述したように、XML の構造とその属性値のみが、生成されたメニューに影響します。

<?xml version="1.0" encoding="utf-8" ?> 
<root> 
    <menuitem label="MenuItem A"/> 
    <menuitem label="MenuItem B" type="check" toggled="true"/> 
    <menuitem label="MenuItem C" enabled="false"/> 
    <menuitem type="separator"/> 
    <menuitem label="MenuItem D"> 
        <menuitem label="SubMenuItem D-1"/> 
        <menuitem label="SubMenuItem D-2"/> 
        <menuitem label="SubMenuItem D-3"/> 
    </menuitem> 
</root>

2 番目のファイルは、アプリケーションユーザーインターフェイスのソースコードで、application.xml ファイルに初期ウィンドウとして指定された HTML ファイルです。

<html> 
    <head> 
        <title>XML-based menu data source example</title> 
        <script type="text/javascript" src="AIRAliases.js"></script> 
        <script type="text/javascript" src="AIRMenuBuilder.js"></script> 
        <style type="text/css"> 
            #contextEnabledText 
            { 
                margin-left: auto; 
                margin-right: auto; 
                margin-top: 100px; 
                width: 50% 
            } 
        </style> 
    </head> 
    <body> 
        <div id="contextEnabledText">This block of text is context menu enabled. Right click or Command-click on the text to view the context menu.</div> 
        <script type="text/javascript"> 
            // Create a NativeMenu from "textContextMenu.xml" and set it 
            // as context menu for the "contextEnabledText" DOM element: 
            var textMenu = air.ui.Menu.createFromXML("textContextMenu.xml"); 
            air.ui.Menu.setAsContextMenu(textMenu, "contextEnabledText"); 
             
            // Remove the default context menu from the page: 
            air.ui.Menu.setAsContextMenu(null); 
        </script> 
    </body> 
</html>