在eclipse中执行PreferencePage的最佳方法是什么?
答案 0 :(得分:5)
灵感来自this thread:
可能有两类偏好:
那些只是数据,编辑器,视图或构建器在需要时可以访问。
在第一种情况下,似乎最好的方法是使用FieldEditorPreferencePage
来显示,输入,验证和存储首选项。
要获取值,子类可以提供方便的方法来获取首选项存储和查询,并返回给定其id的值。
那些会影响正在投放的编辑或视图
打开的编辑和/或视图需要通知发生的变化,以便他们可以相应地更新他们的观点
这可以通过在FieldEditorPreferencPage.performOk()
方法中迭代受影响的编辑器和视图来完成,但这似乎会产生不合需要的耦合:首选项页面必须知道如何更新相应的查看器。
另一种可能性是使用FieldEditorPreferencePage
是IPropertyChangeListener
这一事实,因此编辑可以注册对影响其观点的财产变更感兴趣。这种方法的缺点是,当删除编辑器或视图时必须删除兴趣,否则将引发异常
查看器关闭后,首选项页面会更改。
Bug 143727引用了有关偏好的最新(即“Eclipse3.x”)文章:
org.eclipse.core.runtime.preferences
附带的“badwordchecker”首选页面很有趣:
/*
* @see IWorkbenchPreferencePage#init(IWorkbench)
*/
public void init(IWorkbench workbench) {
//Initialize the preference store we wish to use
setPreferenceStore(BadWordCheckerPlugin.getDefault().getPreferenceStore());
}
/**
* Performs special processing when this page's Restore Defaults button has been pressed.
* Sets the contents of the nameEntry field to
* be the default
*/
protected void performDefaults() {
badWordList.setItems(BadWordCheckerPlugin.getDefault().getDefaultBadWordsPreference());
}
/**
* Method declared on IPreferencePage. Save the
* author name to the preference store.
*/
public boolean performOk() {
BadWordCheckerPlugin.getDefault().setBadWordsPreference(badWordList.getItems());
return super.performOk();
}