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
Assert.isTrue(order == PRE_ORDER || order == POST_ORDER,
                "invalid traversal order");
        ArrayList sequence = new ArrayList();
        IPreferenceNode[] subnodes = getRoot().getSubNodes();
        for (int i = 0; i < subnodes.length; i++)
            buildSequence(subnodes[i], sequence, order);
        return sequence;
    }
    /**
     * Returns the root node.
     * Note that the root node is a special internal node
     * that is used to collect together all the nodes that
     * have no parent; it is not given out to clients.
     *
     * @return the root node
     */
    protected IPreferenceNode getRoot() {
        return root;
    }
    /**
     * Removes the prefernece node at the given path.
     *
     * @param path the path
     * @return the node that was removed, or <code>null</code>
     *  if there was no node at the given path
     */
    public IPreferenceNode remove(String path) {
        Assert.isNotNull(path);
        int index = path.lastIndexOf(separator);
        if (index == -1)