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>

しかし残念なことに、イニシャライザは起動時に呼び出されません (Eclipse のイニシャライザは呼び出されWorkbenchPreferenceInitializerます)。

これを実行するにはどうすればよいか、ヒントを教えてもらえますか?

4

1 に答える 1

5

設定初期化子コードは、これらのデフォルト値が必要になるまで呼び出されません (アプリケーションの起動時ではなく、期待どおりだったと思います)。

設定名を使用するいくつかの FieldEditors を含む設定ページを自分で持っている場合、[設定] ダイアログに移動してその設定ページを選択すると、設定初期化子が呼び出されます。

次のようなもの:

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 に答える