What's changed in menu customization in JMP 9? The answer to that question is: “Almost everything.” In JMP 9, we took a good, hard look at our menu customization framework and found that it had a number of limitations:
• You could import customized menus from various sources into JMP, but those imports were not kept separate; so if you wanted to undo one import, you had to revert to factory defaults and start over.
• If you removed any JMP built-in items from your menu to simplify it, you could not get them back later without reverting to factory defaults.
• JMP Scripting Language (JSL) experts trying to create add-ins to JMP could not distribute menu customizations that worked across languages or could easily be updated later.
As a result, menu customization has been thoroughly reworked for JMP 9. This is the first of a planned series of blog posts designed to help you understand the new customized menu system in JMP 9 and ease the transition from JMP 8 for both users and administrators.
A New Menu Customization File
In JMP 8, if you ran JMP in English, the file containing your customized menu was named “JMP User-Customized Menu (English).jmpmenu,” and it could be found in this directory:
XP: C:\Documents and Settings\Local Settings\Application Data\JMP\8\ Data\English
Vista and Windows 7: C:\\Users\AppData\Local\JMP8Data\English
In JMP 9, a user’s menu customizations are stored in a file named usercust.jmpcust, found in:
XP: C:\Documents and Settings\Local Settings\Application Data\SAS\JMP\9
Vista and Windows 7: C:\\Users\AppData\Local\SAS\JMP\9
Macintosh: ~/Library/Application Support/JMP/9
Note the absence of the word “English” from either the directory name or the file name – usercust.jmpcust is language-neutral. Another key difference is that usercust.jmpcust contains only the changes that you have made to the built-in JMP menu, rather than a copy of the entire menu (including JMP’s built-in items) like in JMP 8. You can still modify or hide JMP’s built-in menu items if you want to, but only the changes or the fact that you hid an item are recorded in usercust.jmpcust. Also, if you hide a built-in JMP menu item, it is easy to go back later and unhide it without affecting any of your other customizations.
Notice that I included a location for the Macintosh in the second list above. The fact that JMP’s built-in menu items are not included in usercust.jmpcust means that these files are fully transportable to the Macintosh in JMP 9. It was virtually impossible to have customized menus on the Mac before JMP 9.
Administrators Get a Customization File
Another big change for JMP 9 is that usercust.jmpcust is not the only source of menu customizations that gets applied. A second source of menu customizations is admincust.jmpcust, which JMP looks for in this location:
XP: C:\Documents and Settings\All Users\Application Data\SAS\JMP\9
Windows Vista and Windows 7: C:\Program\Data\SAS\JMP\9
MacIntosh: /Library/Application Support/JMP/9
The purpose of admincust.jmpcust is to allow administrators to push down a standard baseline set of menu customizations that they want to apply to all JMP users. Because the administrator’s customization set is kept separate from the user’s customizations, the administrator can update his or her set without affecting customizations that the user has made.
Another key point about the customizations in admincust.jmpcust: They are not enforced. If a user brings up the JMP Menu Editor, he or she has the power to override any customizations that were made in admincust.jmpcust. The user’s changes are still recorded in usercust.jmpcust, though, as normally only administrators have permission to change admincust.jmpcust. But when JMP is coming up, it loads usercust.jmpcust after it loads admincust.jmpcust. So the end user has the final say.
JMP Add-Ins Need Menu Customizations
Users and administrators are not the only ones who get a chance to supply menu customizations. JMP Add-In developers also need the ability to customize menus. In JMP 9, we have added an entirely new mechanism whereby add-ins to JMP can be installed and managed, and several JMP 9 Add-Ins have been discussed in previous posts here. One of the files that an add-in developer can supply with an add-in is an addin.jmpcust file, which contains the menu customizations for the add-in. The addin.jmpcust files of all registered, enabled JMP Add-Ins are loaded after admincust.jmpcust but before usercust.jmpcust, once again leaving the final say to the end user.
Reverting to Factory Defaults
With menu customizations coming from several different sources now, it became necessary to change what Revert to Factory Defaults (which is now on the View > Customize menu) does. We could not really allow Revert to Factory Defaults to wipe out all of the customizations in admincust.jmpcust and the various addin.jmpcust files. So all Revert to Factory Defaults does in JMP 9 with respect to menu customizations is clear out usercust.jmpcust. Customizations for a JMP Add-In can be “reverted” by disabling or uninstalling the associated add-in, and it is up to the administrator to manage admincust.jmpcust.
Transitioning to JMP 9 Customized Menus
For end users, the transfer of menu customizations from JMP 8 to JMP 9 should be easy and automatic. The first time you run JMP 9 (and each time you Revert to Factory Defaults thereafter), you will be asked whether or not you want to bring your JMP 8 menu customizations forward. If you say “Yes,” a usercust.jmpcust file will be created from the menu customizations we find in your JMP 8 customized menu.
For administrators attempting to push the same menu customizations down to JMP 9 users as they did in JMP 8, there are a few more steps, but that will have to wait for a follow-up blog post.