在Eclipse中执行PreferencePage的最佳方法是什么?
最佳答案
灵感来自this thread:
可能有两类偏好:
这些只是编辑器,视图或构建器在需要时获取的数据。
在第一种情况下,最好的方法似乎是使用FieldEditorPreferencePage
来显示,输入,验证和存储首选项。
为了获得值,子类可以提供方便的方法来获取首选项存储和查询,并根据给定的ID返回值。
那些会影响已经在运行的编辑器或视图的控件。
需要将已发生的更改通知打开的编辑器和/或视图,以便他们可以相应地更新其视图。
这可以通过遍历FieldEditorPreferencPage.performOk()
方法中受影响的编辑器和视图来完成,但这似乎会造成不良的耦合:首选项页面将必须知道如何更新相应的查看器。
另一种可能性是利用FieldEditorPreferencePage
是IPropertyChangeListener
的事实,以便编辑者可以注册对影响其视图的属性更改的兴趣。这种方法的缺点是,当删除编辑器或视图时,必须去除兴趣,否则,将导致异常。
关闭查看器后,首选项页面将更改。
Bug 143727参考有关首选项的最新文章(即“ Eclipse3.x”):
How do I use the Preference service?
Define your own global preferences
package 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();
}
关于java - PreferencePage或FieldEditorPreferencePage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2474701/