XUL:PopupGuide:PlatformMenus
出典: MDC
[編集] プラットフォームごとの特殊なメニューに関する考察
多くのメニューコマンドは、慣例によって設置される場所が決定されます。たとえば、「編集」メニューはその機能が利用できるアプリケーションでは必ず「元に戻す」コマンドから始まり、「やり直し」、「切り取り」、「コピー」、「貼り付け」といったように続きます。
メニューアイテムの中には、プラットフォームごとに異なる特定の共通のラベルを持ち、プラットフォームごとに異なる特定の共通の場所に設置されるものがあります。たとえば Windows では、アプリケーションを終了するためのメニューには「終了」というラベルが付けられ、通常は「ファイル」メニューの最後に設置されます。
Macintosh では、「ファイル」メニューの横にアプリケーションの名前が付いた追加のメニューが存在します。このメニューの中にはそのアプリケーションに関連するアイテムがいくつか格納されます。たとえばアプリケーションの設定画面を開いたり、アプリケーションを終了させるメニューアイテムはこの場所に設置するのが適切です。
これは、アプリケーションメニューに設置する必要があるメニューアイテムに対して必ず特定の共通の id を設定することによって実現されます。Mac ではこれらのメニューアイテムはアプリケーションメニューに移動されますが、他のプラットフォームでは元の位置に置かれたままにされます。これにより、すべてのプラットフォームに対して同じ XUL コードを書くのがより簡単になります。以下は自動的に処理されるメニューアイテムの id の一覧です。
| menu_FileQuitSeparator | 「終了」アイテムの直前にあるセパレータ |
| menu_FileQuitItem | アプリケーションを終了するアイテム |
| menu_PrefsSeparator | 「環境設定/オプション」アイテムの直前にあるセパレータ |
| menu_preferences | アプリケーションの環境設定を開くアイテム |
| aboutSeparator | 「~について」アイテムの直前のセパレータ |
| aboutName | アプリケーションの「~について」ダイアログを開くアイテム |
| menu_mac_services | システムサービスを提供するメニュー |
| menu_mac_hide_app | アプリケーションを隠すためのアイテム |
| menu_mac_hide_others | このアプリケーション以外のすべてのアプリケーションを隠すためのアイテム |
| menu_mac_show_all | すべてのアプリケーションのウィンドウを表示するアイテム |
最後の 4 つのアイテムは通常は使われませんが、完全を期すために記載しました。
例を示します。
<menubar>
<menu label="Tools">
<menupopup>
<menuitem label="Spell Check"/>
<menuitem id="menu_preferences" label="Preferences"
oncommand="window.openDialog('options.xul', '_new', 'chrome');"/>
</menupopup>
</menu>
</menubar>
このメニューアイテムは Macintosh ではアプリケーションメニューに設置されますが、他のプラットフォームでは Tools メニューに残されます。アプリケーションメニューに移動されると、ラベルとショートカットキーはプラットフォームの慣例によって上書きされます。しかし、プラットフォームに関わらず、ユーザが実行すればそのメニューアイテムで command イベントが発生します。
