3

我想使用 Eclipse 机制在我的 RCP 应用程序中设置默认首选项。因此,我扩展了该类AbstractPreferenceInitializer以设置我的默认首选项:

public class PreferenceInitializer extends AbstractPreferenceInitializer {
  @Override
  public void initializeDefaultPreferences() {
    IPreferenceStore preferenceStore = PlatformUI.getPreferenceStore();
    preferenceStore.setDefault("xyz",  xyz);
    preferenceStore.setDefault("abc", false);
  }
}

然后我定义了扩展点:

<extension point="org.eclipse.core.runtime.preferences">
  <initializer class="com.abc.PreferenceInitializer">
  </initializer>
</extension>

但不幸的是,初始化程序不会在启动期间被调用(而 EclipseWorkbenchPreferenceInitializer会被调用)。

有人可以给我一个提示,该怎么做才能运行吗?

4

1 回答 1

5

在需要这些默认值之前(而不是在应用程序启动时,我猜这是您的期望),您的首选项初始化程序代码不会被调用。

如果您有一个包含一些使用您的首选项名称的 FieldEditor 的首选项页面,则当您转到“首选项”对话框并选择该首选项页面时,将调用您的首选项初始化程序。

类似于以下内容:

public class MyPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

    public void createFieldEditors() {
        Composite parent = getFieldEditorParent();
        addField(new StringFieldEditor(Constants.PREFERENCES.FILE_COMPARE_TOOL_LOCATION, "File compare tool location", parent));
        addField(new StringFieldEditor("xyz", "XYZ Value", parent));
        addField(new BooleanFieldEditor("abc", "Enable the ABC widget", parent));
    }

}

当然,页面的扩展点:

<extension point="org.eclipse.ui.preferencePages">
  <page
        class="whatever.package.MyPreferencePage"
        id="whatever.package.MyPreferencePage"
        name="MyPrefs">
  </page>
</extension>
于 2012-06-15T15:40:08.443 回答