如何将首选项页面包含到首选项对话框中
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);
我知道如何将首选项页面添加到 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);