我使用PlatformUI
来存储我的首选项遇到了麻烦。我想创建一个peferencesservice,以在我的插件中访问和编辑首选项。我正在从Activator
打电话给我服务的初始化功能,但这没有影响。这是我的功能:
public static void initPreferences() throws NullContributionException, CoreException {
final IPreferenceStore store = PlatformUI.getPreferenceStore();
for (String languageId : LanguageService.getLanguagesIds()) {
store.setDefault(languageId, true);
for (CheckerContainer checker : CheckerService.getCheckers(languageId)) {
String checkerPreferenceId = getPreferencesId(languageId, checker.getId());
store.setDefault(checkerPreferenceId, true);
store.setDefault(checkerPreferenceId + PREF_SEVERITY_ATTRIBUTE, "Error");
}
}
store.needsSaving();
}
我是从激活器中调用它的:
@Override
public void start(final BundleContext bundleContext) throws Exception {
// Initialize all preferences
UserPreferencesService.initPreferences();
Activator.context = bundleContext;
}
均使用debugger和非常fing .metadata
prefs文件均可验证,表明不会考虑通过Eclipse进行修改。
是不良的做法吗?我正在编辑一个这样做的旧3.4蚀插件,但我找不到无法使用偏好的区别。
感谢您的阅读,也许是您的回答,Waldo
是的,这是不好的做法。此优先商店仅适用于工作台。
您应该使用特定于插件的IPreferenceStore
。如果您的激活剂扩展了AbstractUIPlugin
,则可以使此调用AbstractUIPlugin.getPreferenceStore
方法。
要在您的优先商店中初始化默认值,您应该使用org.eclipse.core.runtime.preferences
扩展点来定义initializer
类,其中设置默认值。
注意:needsSaving
方法只是返回对还是错,告诉您是否已更改了首选项 - 它没有设置该标志或保存。
还请注意,默认值未写入首选项文件。