JMP支持自定義主菜單和工具欄很長一段時間。但是,實現菜單自定義的方式有各種缺點,我們的用戶向我們指出了這些缺點。為了回應他們的反饋,我們對版本7中的菜單/工具欄自定義進行了重大更改。
過去,如果您安裝了新版本的JMP並希望恢復以前的自定義設置,那麼您有兩種選擇,這兩種選擇都不具備吸引力。(1)您可以將JMP指向舊的JMPCMD文件,並告訴JMP應用該組定義。果然,這將重置JMP的整個主菜單以反映您的舊自定義。但是在這個過程中,JMP的任何新菜單和/或命令都會消失(因為它們不包含在舊的JMPCMD文件中)。(2)您可以進入菜單編輯器,並將舊JMPCMD文件中包含的自定義命令一個接一個地複製到當前主菜單中。
JMP 7通過提供新的方法消除了這種困境菜單合併特徵。JMP 7允許你合併您在JMP 6中對菜單和工具欄進行的自定義。實際上,當您第一次啟動JMP 7時,它會自動提示您從JMP 6合併您的自定義項(如果有的話)。

(點擊查看完整大小的圖片)
請注意,合併過程不會消除JMP 7的新菜單 - 它只會插入JMP 7的主菜單和工具欄,無論命令,菜單和/或工具欄是您自定義JMP 6的唯一選擇。這是對以前版本的JMP的巨大改進,它不支持任何類型的JMP 合併特徵。
在以前的JMP版本中,菜單自定義是“全有或全無”的事情 - 如果你想添加一個新的命令,比如說,在文件菜單中,你必須在菜單編輯器中添加命令,然後將其保存到一個JMPCMD文件。該文件包含整個主菜單的定義;因此,如果您將JMPCMD文件提供給其他人並將其應用於JMP會話,則會替換其整個主菜單。
但是,使用JMP 7,您可以創建單個菜單(或工具欄)的定義以及單個命令,然後可以使用新的“JMPMENU”文件擴展名將其導出到存檔文件。如果其他人導入您的JMPMENU文件,則不會替換其主菜單 - 只會將新命令添加到其菜單中。導出菜單定義時,甚至可以指定JMP是否應保留其上下文,以便每當其他人導入您的JMPMENU文件時,您的命令將插入其主菜單中與主菜單中相同的位置。
舊菜單自定義方案的最大缺點可能是您的菜單定義和它們所依賴的JSL腳本(如果有的話)已斷開連接。這使得與其他人共享菜單自定義變得極其困難。例如,假設您使用的是JMP 6,並在主菜單中添加了一個名為“NTheory”的新菜單,其中包含兩個命令:“Euler Phi”和“Fibonacci”,每個命令都被定義為每當運行特定的JSL腳本時命令已被選中。因此,在每種情況下,將要執行的腳本的路徑硬編碼到命令本身的定義中。如果你想與朋友分享你的新菜單,僅僅給他們你的JMPCMD文件是不夠的 - 你還必須記住為他們提供命令所依賴的JSL文件。更糟糕的是,即使你給了你的朋友JMPCMD文件和所需的腳本文件,你的菜單仍然不太可能適合你的朋友。對於朋友的路徑,JSL文件的副本幾乎肯定不會與JMPCMD文件中定義的路徑匹配。因此,您的朋友必須進入JMP的菜單編輯器並修復每個命令的JSL文件的路徑。

(點擊查看完整大小的圖片)
自定義彈出菜單的示例
JMP 7消除了新JMPMENU文件的所有這些問題。當你出口在菜單(或工具欄或命令)中,系統會提示您是否希望JMP歸檔菜單命令所依賴的JSL文件。如果您肯定地回答,那麼與您的命令關聯的JSL腳本將與菜單的定義一起存檔到JMPMENU文件中。而當你的朋友進口在您的JMPMENU文件中,JMP會將存檔中包含的JSL腳本提取到一個特殊的“Dependencies”目錄中,JMP將修改命令本身的定義以指向提取的JSL文件。同樣,如果將位圖與其中一個菜單命令相關聯,那麼它也將與JSL文件一起存檔,並在導入JMPMENU文件時解壓縮。因此,您的朋友需要的所有內容都只包含在一個文件中,並且在導入JMPMENU文件後,他們無需執行任何其他操作即可使命令生效。
JMPMENU文件實際上是一個Zip文件 - 因此,如果您對菜單文件中的內容感到好奇,可以使用WinZip等工具在JMP之外進行檢查。默認情況下,如果以英語語言環境運行Windows操作系統,則JMPMENU文件將存儲在C:Documents and Settingsuser-nameLocal SettingsApplication DataJMP7 DataEnglish目錄中。

(點擊查看完整大小的圖片)
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 \支持文件英文
您所要做的就是創建一個名為“Factory Default Menus”的子目錄,並將您的JMPMENU文件複製到該位置(您可以在該目錄中擁有任意數量的此類文件)。然後,每當JMP啟動時,它會自動將“Factory Default Menus”子目錄中的每個JMPMENU文件導入主菜單和工具欄列表。(如果自定義菜單中的任何命令依賴於JSL腳本,請確保在導出菜單時將其歸檔。)當JMP導入菜單時,它將從歸檔中提取JSL文件並將它們放在“依賴關係”中“Factory Default Menus”子目錄中的目錄。
Mike Wodarczyk 中寫道:
當用戶自己已經定義了菜單項或通過導入另一個產品的jmpmenu包時已經這樣做了,則不再讀取“Factory Default Menus”文件夾。這使得很難將新菜單部署到已安裝其他菜單的用戶群。如果有這樣的用戶級文件夾,單個包所有者可以放置自己的菜單並讓它們與其他包很好地配合,那就太好了。