次の例では、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>