PlatformUI.getPreferenceStore() 什么都不存储
PlatformUI.getPreferenceStore() store nothing
我在使用 PlatformUI
存储我的偏好设置时遇到问题。我想创建一个 PreferencesService 来访问和编辑我的插件中的首选项。我正在从我的 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;
}
使用调试器和 veryfing .metadata
prefs 文件进行的验证表明 Eclipse 未考虑这些修改。
这是一种不好的做法吗?我正在编辑一个旧的 3.4 Eclipse 插件,它是这样做的,但我找不到导致我使用首选项失败的区别。
感谢您的阅读,也许还有您的回答,
沃尔多
是的,这是不好的做法。此首选项商店仅适用于 workbench。
您应该使用特定于您的插件的 IPreferenceStore
。如果您的激活器扩展了 AbstractUIPlugin
,您可以调用 AbstractUIPlugin.getPreferenceStore
方法。
要在您的首选项商店中初始化默认值,您应该使用 org.eclipse.core.runtime.preferences
扩展点来定义一个 initializer
class 来设置默认值。
注意:needsSaving
方法只是 returns true 或 false 来告诉您偏好存储是否已更改 - 它不会设置该标志或进行保存。
另请注意,默认值不会写入首选项文件。
我在使用 PlatformUI
存储我的偏好设置时遇到问题。我想创建一个 PreferencesService 来访问和编辑我的插件中的首选项。我正在从我的 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;
}
使用调试器和 veryfing .metadata
prefs 文件进行的验证表明 Eclipse 未考虑这些修改。
这是一种不好的做法吗?我正在编辑一个旧的 3.4 Eclipse 插件,它是这样做的,但我找不到导致我使用首选项失败的区别。
感谢您的阅读,也许还有您的回答, 沃尔多
是的,这是不好的做法。此首选项商店仅适用于 workbench。
您应该使用特定于您的插件的 IPreferenceStore
。如果您的激活器扩展了 AbstractUIPlugin
,您可以调用 AbstractUIPlugin.getPreferenceStore
方法。
要在您的首选项商店中初始化默认值,您应该使用 org.eclipse.core.runtime.preferences
扩展点来定义一个 initializer
class 来设置默认值。
注意:needsSaving
方法只是 returns true 或 false 来告诉您偏好存储是否已更改 - 它不会设置该标志或进行保存。
另请注意,默认值不会写入首选项文件。