PlatformMenus

プラットフォームごとの特殊なメニューに関する考察

多くのメニューコマンドは、慣例によって設置される場所が決定されます。たとえば、「編集」メニューはその機能が利用できるアプリケーションでは必ず「元に戻す」コマンドから始まり、「やり直し」、「切り取り」、「コピー」、「貼り付け」といったように続きます。

メニューアイテムの中には、プラットフォームごとに異なる特定の共通のラベルを持ち、プラットフォームごとに異なる特定の共通の場所に設置されるものがあります。たとえば 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>

Image:Popupguide-specialmenubar.png

このメニューアイテムは Macintosh ではアプリケーションメニューに設置されますが、他のプラットフォームでは Tools メニューに残されます。アプリケーションメニューに移動されると、ラベルとショートカットキーはプラットフォームの慣例によって上書きされます。しかし、プラットフォームに関わらず、ユーザが実行すればそのメニューアイテムで command イベントが発生します。

Document Tags and Contributors

Contributors to this page: Shoot, Mgjbot
最終更新者: Shoot,