Joh*_*eri 6 eclipse eclipse-plugin preferences xtext
我正在使用Xtext 2编写一个Eclipse插件.我通过编写自己的RootPreferencePage类来提供自己的首选项:
package org.grammaticalframework.eclipse.ui.editor.preferences;
import org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage;
public class GFLanguageRootPreferencePage extends LanguageRootPreferencePage {
@Override
protected void createFieldEditors() {
addField(new StringFieldEditor("PREF", "&Label:", getFieldEditorParent()));
}
@Override
public void init(IWorkbench workbench) {
getPreferenceStore().setDefault("PREF", "default-value");
}
}
Run Code Online (Sandbox Code Playgroud)
并像往常一样将其绑定在UI模块中:
public Class<? extends org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage> bindLanguageRootPreferencePage() {
return org.grammaticalframework.eclipse.ui.editor.preferences.GFLanguageRootPreferencePage.class;
}
Run Code Online (Sandbox Code Playgroud)
这很好用; 我可以保存首选项,关闭并重新打开Eclipse,再次转到首选项窗口并查看我保存的值.但问题是当我尝试以编程方式检索首选项值时.我使用以下代码:
IPreferencesService prefs = Platform.getPreferencesService();
String s = prefs.getString(QUALIFIER, "PREV", "fallback", null);
Run Code Online (Sandbox Code Playgroud)
这种方法在保留在Eclipse的同一个实例中时工作正常,但在重新启动Eclipse后,我尝试以编程方式检索首选项失败.有趣的是我知道通过检查首选项窗口正确保存了我的首选项.
我想这是这里和这里描述的偏好范围的一个问题,但我无法弄清楚我在偏好值的程序化检索中做错了什么.
UPDATE
我已经注意到,当我setDefault(...)从init()方法中删除调用时,事情完全正常.也就是说,我可以通过UI设置首选项,重新加载Eclipse,并以编程方式检索这些值而不会出现问题.
所以问题现在变成了我需要为我的呼叫找到正确的位置setDefault(...).基于同一篇文章,我扩展了``扩展点如下:
<extension point="org.eclipse.core.runtime.preferences">
<initializer
class="org.grammaticalframework.eclipse.ui.editor.preferences.GFPreferenceInitializer">
</initializer>
</extension>
Run Code Online (Sandbox Code Playgroud)
和实施类:
package org.grammaticalframework.eclipse.ui.editor.preferences;
public class GFPreferenceInitializer extends AbstractPreferenceInitializer {
@Override
public void initializeDefaultPreferences() {
IPreferenceStore store = GFActivator.getInstance().getPreferenceStore();
store.setDefault("PREV", "default-value");
}
}
Run Code Online (Sandbox Code Playgroud)
此代码正在执行,但出于某种原因,当我打开我的首选项窗口并单击"恢复默认值"时,字段只是空白..我尝试设置/初始化的默认值似乎没有进入首选项窗口所以我再次陷入困境!
好吧,我想我已经解决了自己的问题.我需要在init()方法中指定首选项存储,如下所示:
package org.grammaticalframework.eclipse.ui.editor.preferences;
public class GFLanguageRootPreferencePage extends LanguageRootPreferencePage {
...
@Override
public void init(IWorkbench workbench) {
setPreferenceStore(GFActivator.getInstance().getPreferenceStore());
}
}
Run Code Online (Sandbox Code Playgroud)
我真的应该仔细阅读我链接的文章!
| 归档时间: |
|
| 查看次数: |
1300 次 |
| 最近记录: |