Java 如何在Eclipse RCP应用程序中设置首选项的默认值

Java 如何在Eclipse RCP应用程序中设置首选项的默认值,java,eclipse-plugin,eclipse-rcp,Java,Eclipse Plugin,Eclipse Rcp,我有一个RCP应用程序,当RCP作为应用程序运行时,我需要将首选项页面中的一些值设置为默认值。我需要隐藏快速查看栏和一些菜单,这就是为什么我需要从首选项页面设置这些设置 我的应用程序还不是产品,所以我不能使用plugin_customization.ini文件在其中进行更改 有人能告诉我一种通过首选项页面或任何其他方式以编程方式更改默认值的方法吗?您可以使用扩展点org.eclipse.core.runtime.preferences <extension point=

我有一个RCP应用程序,当RCP作为应用程序运行时,我需要将首选项页面中的一些值设置为默认值。我需要隐藏快速查看栏和一些菜单,这就是为什么我需要从首选项页面设置这些设置

我的应用程序还不是产品,所以我不能使用plugin_customization.ini文件在其中进行更改


有人能告诉我一种通过首选项页面或任何其他方式以编程方式更改默认值的方法吗?

您可以使用扩展点
org.eclipse.core.runtime.preferences

 <extension
         point="org.eclipse.core.runtime.preferences">
         <scope name="SamplePreferencePage" class="com.example.SamlePreferencePage"/>
      <initializer
            class="com.example.PreferenceInitializer">
      </initializer>
  </extension>

为您的首选项页面以及该页面的初始值设定项定义扩展点

首选项页面实现的示例可能如下所示:

public class MyPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
    public static final String PREF_USE_METRIC_UNITS = "PREF_USE_METRIC_UNITS";
    public static final String PREF_AUTO_UPDATE = "PREF_AUTO_UPDATE";
    public static final String PREF_USER_FILES_DIR = "PREF_USER_FILES_DIR";
    public static final String PREF_FAVORITE_ANIMAL = "PREF_FAVORITE_ANIMAL";

    public MyPreferencePage() {
        super(GRID);
    }

    public void createFieldEditors() {
        Composite parent = getFieldEditorParent();
        addField(new BooleanFieldEditor(PREF_USE_METRIC_UNITS, "Use &metric units", parent));
        addField(new BooleanFieldEditor(PREF_AUTO_UPDATE, "&Auto update", parent));

        addField(new DirectoryFieldEditor(PREF_USER_FILES_DIR, "User files &path:", parent));

        addField(new StringFieldEditor(PREF_FAVORITE_ANIMAL, "Favorite &animal:", parent));
    }

    public void init(IWorkbench workbench) {
        setPreferenceStore(Plugin.getPlugin().getPreferenceStore());
    }
}
然后在AbstractPreferenceInitializer类中设置实际的默认值:

public class MyPreferenceInitializer extends AbstractPreferenceInitializer {
    @Override
    public void initializeDefaultPreferences() {
        IPreferenceStore store = Plugin.getPlugin().getPreferenceStore();

        store.setDefault(MyPreferencePage.PREF_USE_METRIC_UNITS, true);
        store.setDefault(MyPreferencePage.PREF_AUTO_UPDATE, false);

        String userHome = System.getProperty("user.home");
        String defaultPath = userHome + "\\Local Settings\\Temp\\";
        store.setDefault(MyPreferencePage.PREF_USER_FILES_DIR, defaultPath);

        store.setDefault(MyPreferencePage.PREF_FAVORITE_ANIMAL, "platypus");
    }
}

我使用了这个扩展点,但是当我使用setValues(字符串PreferenceName,Boolean value)时,我不知道设置其值的首选项名称。如果我想使Hide Fast View Bar布尔值为true,我应该写什么作为PreferenceName?这是应用程序的首选项;你可以随便叫它什么。称之为“HideFastViewBar”。您还可以看到stracka的示例。为每个字段提供一个StringID。使用相同的字符串,您可以从PreferenceStore检索值。因为您的答案扩展了我的答案,所以我给您一个+1;)我喜欢提供的代码示例。但是“为您的首选项页面定义扩展点”这句话有点含糊不清。看起来实际上有两个扩展点可以满足条件(org.eclipse.core.runtime.preferences或org.eclipse.ui.preferencePages)。如果准确地命名扩展点,答案会更好。幸运的是,我在@aphex的答案中找到了这部分问题的答案。我想这两个答案在提供一个完整的画面时有点互补:-)