Eclipse rcp EclipseRCP:如何在特定页面上打开PreferencesAction?

Eclipse rcp EclipseRCP:如何在特定页面上打开PreferencesAction?,eclipse-rcp,Eclipse Rcp,如何使首选项对话框在特定页面上打开? 默认情况下,执行此操作将在第一页打开pref.对话框: OpenPreferencesAction action = new OpenPreferencesAction(); action.run(); 如何告诉它显示首选项树中的其他页面?您需要创建自己的操作,扩展OpenPreferencesAction并覆盖run()方法,传递要打开页面的id。如果查看OpenPreferencesAction,您将看到run方法如下所示: public void r

如何使首选项对话框在特定页面上打开? 默认情况下,执行此操作将在第一页打开pref.对话框:

OpenPreferencesAction action = new OpenPreferencesAction();
action.run();

如何告诉它显示首选项树中的其他页面?

您需要创建自己的操作,扩展OpenPreferencesAction并覆盖run()方法,传递要打开页面的id。如果查看OpenPreferencesAction,您将看到run方法如下所示:

public void run() {
    if (workbenchWindow == null) {
        // action has been dispose
        return;
    }
    PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(null, null, null, null);
    dialog.open();
}
第二个和第三个参数确定要显示的页面id和过滤条件

在EclipseRCP中打开首选项页面对话框(单击菜单按钮)


import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferencesUtil;
import com_demo.PreferencePage.PreferencePage_Dialog;

public class Preferences_Dialog_cmd extends AbstractHandler {

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        PreferenceDialog pref = PreferencesUtil.createPreferenceDialogOn(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),PreferencePage_Dialog.ID , null, null);
        if (pref != null)
                pref.open();
        return null;
    }   
}
public class PreferencePage_Dialog extends FieldEditorPreferencePage implements IWorkbenchPreferencePage 
{
    public static final String ID="custom_bill.PreferencePage_Dialog";
    @Override
    protected void createFieldEditors() {
        //..........
    }

    @Override
    public void init(IWorkbench workbench) {
        setPreferenceStore(Activator.getDefault().getPreferenceStore());
    }
}