如何将首选项页面包含到首选项对话框中

How to include a preference page into the preference dialog

我知道如何将首选项页面添加到 e3 RCP 应用程序的通用首选项对话框中。我有一个 e4 RCP 应用程序,我读到首选项对话框的工作方式不同。

我找到了打开通用首选项对话框的方法,但没有找到将自定义首选项页面包含到对话框中的方法。

public class PreferenceHandler {

    @CanExecute
    public boolean canExecute()
    {
        return true;    
    }

    @Execute
    public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell,  E4PreferenceRegistry  prefReg,
            @Optional @Named("preferencePageId") String pageId) {
        PreferenceManager pm = prefReg.getPreferenceManager();
        // Can display the standard dialog.
        PreferenceDialog dialog = new PreferenceDialog(shell, pm);
        if (pageId != null)
        {
            dialog.setSelectedNode(pageId);
        }
        dialog.create();
        dialog.getTreeViewer().setComparator(new ViewerComparator());
        dialog.getTreeViewer().expandAll();
        dialog.open();
    }
}

大部分偏好页面代码是 e3 的一部分,在 e4 中不可用。只有非常基本的 JFace 代码可用。

所以您必须将您想要的每个首选项页面直接添加到 PreferenceManager。类似于:

PreferenceManager pm = ... preference manager

IPreferencePage page = ... create your preference page

page.setTitle("title of the page");

IPreferenceNode node = new PreferenceNode("id of the page", page);

pm.addToRoot(node);