JMPはかなり以前からメインメニューとツールバーのカスタマイズをサポートしてきました。しかし、メニューのカスタマイズが実装された方法にはさまざまな欠点があり、ユーザーから指摘されていました。彼らのフィードバックに応えて、バージョン7ではメニュー/ツールバーのカスタマイズに劇的な変更を加えました。
過去に、新しいバージョンのJMPをインストールして以前のカスタマイズを復元したい場合は、2つの選択肢がありましたが、どちらも魅力的ではありませんでした。(1)JMPに古いJMPCMDファイルを指定して、その定義セットを適用するようJMPに指示することができます。案の定、それはあなたの古いカスタマイズを反映するためにJMPのメインメニュー全体をリセットするでしょう。しかし、その過程で、JMPの新しいメニューやコマンドは消えてしまいます(古いJMPCMDファイルには含まれていなかったため)。(2)メニューエディタに入り、古いJMPCMDファイルに含まれているカスタムコマンドを一つずつ現在のメインメニューにコピーすることができます。
JMP 7は、新しいJMP 7を提供することによってこのジレンマを解消します。メニューマージ特徴。JMP 7はあなたをすることができますマージ JMP 6でメニューやツールバーに加えたカスタマイズ。実際、初めてJMP 7を起動すると、JMP 6からのカスタマイズ内容をマージするように自動的に促されます(存在する場合)。

(クリックしてフルサイズの画像を表示)
マージ処理ではJMP 7の新しいメニューは消去されません。JMP6のカスタマイズに固有のコマンド、メニュー、ツールバーは、JMP 7のメインメニューとツールバーに挿入されるだけです。これは、以前のバージョンのJMPを大幅に改善したものです。マージ特徴。
以前のバージョンのJMPでは、メニューのカスタマイズは「すべてか無か」の問題でした。たとえば、単一の新しいコマンドを[ファイル]メニューに追加する場合は、メニューエディタでそのコマンドを追加してから保存する必要がありました。JMPCMDファイル そのファイルにはメインメニュー全体の定義が含まれていました。したがって、そのJMPCMDファイルを他の人に渡して、彼らがJMPセッションにそれを適用すると、メインメニュー全体が置き換えられます。
ただし、JMP 7では、単一のメニュー(またはツールバー)と単一のコマンドの定義を作成することができます。これらのコマンドは、新しい「JMPMENU」ファイル拡張子を付けてアーカイブファイルにエクスポートできます。他の誰かがあなたのJMPMENUファイルをインポートしても、それらのメインメニューは置き換えられません - あなたの新しいコマンドだけがそれらのメニューに追加されます。メニュー定義をエクスポートするときに、JMPがそのコンテキストを保持するかどうかを指定して、他の誰かがJMPMENUファイルをインポートしたときにコマンドがメインメニューと同じ場所のメインメニューに挿入されるようにすることもできます。
おそらく、古いメニューカスタマイズ方式の最大の欠点は、メニュー定義とそれに依存しているJSLスクリプト(存在する場合)が切断されていることです。これにより、メニューのカスタマイズ内容を他のユーザーと共有することが非常に困難になりました。たとえば、JMP 6を使用していて、メインメニューに「NTheory」という2つのコマンド「Euler Phi」と「Fibonacci」が追加され、それぞれが特定のJSLスクリプトを実行するように定義されたとします。コマンドが選択されました。したがって、実行されるスクリプトへのパスは、それぞれの場合にコマンド自体の定義にハードコードされています。新しいメニューを友人と共有したい場合は、単にJMPCMDファイルを提供するだけでは十分ではありません。また、コマンドが依存しているJSLファイルでそれらを提供することを忘れないでください。さらに悪いことに、あなたがJMPCMDファイルと必要なスクリプトファイルの両方をあなたの友人に与えたとしても、あなたのメニューがあなたの友人のために正しく機能することはまだ非常にありそうもないことでした。友人のJSLファイルのコピーへのパスは、JMPCMDファイルで定義されているパスとほとんど一致しません。したがって、あなたの友人はJMPのメニューエディタに入り、あなたの各コマンドのためのJSLファイルへのパスを修正しなければならないでしょう。

(クリックしてフルサイズの画像を表示)
カスタマイズされたポップアップメニューの例
JMP 7では、新しいJMPMENUファイルに関するこれらすべての問題が解決されています。あなたが輸出するメニュー(またはツールバーまたはコマンド)を選択すると、メニューコマンドが依存するJSLファイルをJMPにアーカイブするかどうかを尋ねられます。あなたが肯定的に答えるならば、あなたのコマンドに関連したJSLスクリプトはあなたのメニューの定義と共にJMPMENUファイルにアーカイブされます。そしてあなたの友人が輸入 JMPMENUファイル、JMPはアーカイブに含まれるJSLスクリプトを特別な「Dependencies」ディレクトリに抽出し、JMPは抽出されたJSLファイルを指すようにコマンド自体の定義を変更します。同様に、ビットマップをメニューコマンドの1つに関連付けた場合は、それもJSLファイルと一緒にアーカイブされ、JMPMENUファイルのインポート時に抽出されます。したがって、あなたの友達が必要とするものはすべて1つのファイルに含まれていて、JMPMENUファイルをインポートした後にコマンドを機能させるために他に何もする必要はありません。
JMPMENUファイルは実際にはZipファイルです。したがって、メニューファイルの中身を知りたい場合は、WinZipなどのツールを使用してJMPの外でいつでも調べることができます。デフォルトでは、Windowsオペレーティングシステムを英語のロケールで実行している場合、JMPMENUファイルはC:Documents and Settingユーザ名ローカル設定アプリケーションデータJMP 7データ英語ディレクトリに保存されます。

(クリックしてフルサイズの画像を表示)
JMPMENUファイルを垣間見る
たとえば、私のコンピュータでは、JMPMENUファイルは次の場所にあります。
C:¥Documents and Settings¥potter¥Local Settings¥Application Data¥JMP7 Data¥Englishディレクトリ。
最後に、JMP 7は自動インポートインストールディレクトリの特別なサブディレクトリにJMPMENUファイルがある場合は、メニューのカスタマイズ内容を確認してください。たとえば、ロケールを英語に設定してWindowsを実行していて、JMPをデフォルトの場所にインストールした場合は、JMPが依存する英語のサポートファイルに移動します。
C:¥Program Files¥SAS¥JMP7¥Support Files日本語
「Factory Default Menus」というサブディレクトリを作成し、その場所にJMPMENUファイルをコピーするだけです(そのディレクトリには、このようなファイルをいくつでも含めることができます)。その後、JMPが起動するたびに、「Factory Default Menus」サブディレクトリにある各JMPMENUファイルをメインメニューとツールバーリストに自動的にインポートします。(カスタマイズしたメニューのコマンドがJSLスクリプトに依存している場合は、メニューをエクスポートしたときにそれらがアーカイブされていることを確認してください。)JMPがメニューをインポートすると、アーカイブからJSLファイルが抽出されて「依存関係」に配置されます。“ Factory Default Menus”サブディレクトリ内のディレクトリ。
マイク・ウォダジク書きました:
ユーザーがすでにメニュー項目を定義している場合、または別の製品用のjmpmenuパッケージをインポートして定義した場合は、[Factory Default Menus]フォルダは表示されなくなります。これにより、他のメニューが既にインストールされているユーザーベースに新しいメニューを展開することは困難になります。このようなユーザレベルのフォルダがあれば、個々のパッケージの所有者が自分のメニューを置いて他のパッケージとうまく連携させることができればいいでしょう。