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
     * @param node the node to add
     * @return <code>true</code> if the add was successful,
     *  and <code>false</code> if there is no contribution at
     *  the given path
     */
    public boolean addTo(String path, IPreferenceNode node) {
        IPreferenceNode target = find(path);
        if (target == null)
            return false;
        target.add(node);
        return true;
    }
    /**
     * Adds the given preference node as a subnode of the
     * root.
     *
     * @param node the node to add, which must implement 
     *   <code>IPreferenceNode</code>
     */
    public void addToRoot(IPreferenceNode node) {
        Assert.isNotNull(node);
        root.add(node);
    }
    /**
     * Recursively enumerates all nodes at or below the given node
     * and adds them to the given list in the given order.
     * 
     * @param node the starting node