Bug 125632 [Commands] request: enhance command to show preferences dialog with parameter identifying which page to show
I'm going to attach a patch that enhances the command org.eclipse.ui.window.preferences as described in the summary. The id of the parameter is "preferencePageId". It is optional. If omitted the pref page just shows as it was the last time. I wanted to have an IParameterValues class for this parameter to enumerate the meaningful values (like the showView and showPerspective commands). This led me into the wierd case of several preference pages with the same name ("Appearance" and "Editor"), so I constructed qualified names like "General > Appearance" and "Java > Appearance". That led me to add a new API method to the jface PreferenceManager class. I hope that's not a controversial change.... Another thing to look at. I removed this line from OpenPreferencesAction to allow my handler to run: setActionDefinitionId("org.eclipse.ui.window.preferences"); //$NON-NLS-1$ If that's not right can you give me more direction on what the right thing to do is?
bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceManager.java
* @param path the path
     * @return the node, or <code>null</code> if none
     * 
     * @since 3.1
     */
    protected IPreferenceNode find(String path,IPreferenceNode top){
    	 Assert.isNotNull(path);
         StringTokenizer stok = new StringTokenizer(path, separator);
         IPreferenceNode node = top;
         while (stok.hasMoreTokens()) {
             String id = stok.nextToken();
             node = node.findSubNode(id);
             if (node == null)
                 return null;
         }
         if (node == top)
             return null;
         return node;
    }
    /**
     * Returns all preference nodes managed by this
     * manager.
     *
     * @param order the traversal order, one of 
     *	<code>PRE_ORDER</code> and <code>POST_ORDER</code>
     * @return a list of preference nodes
     *  (element type: <code>IPreferenceNode</code>)
     *  in the given order
     */
    public List getElements(int order) {