FieldEditorPreferencePage

FieldEditorPreferencePage

在Eclipse中执行PreferencePage的最佳方法是什么?

最佳答案

灵感来自this thread

可能有两类偏好:


这些只是编辑器,视图或构建器在需要时获取的数据。
在第一种情况下,最好的方法似乎是使用FieldEditorPreferencePage来显示,输入,验证和存储首选项。
为了获得值,子类可以提供方便的方法来获取首选项存储和查询,并根据给定的ID返回值。
那些会影响已经在运行的编辑器或视图的控件。
需要将已发生的更改通知打开的编辑器和/或视图,以便他们可以相应地更新其视图。
这可以通过遍历FieldEditorPreferencPage.performOk()方法中受影响的编辑器和视图来完成,但这似乎会造成不良的耦合:首选项页面将必须知道如何更新相应的查看器。
另一种可能性是利用FieldEditorPreferencePageIPropertyChangeListener的事实,以便编辑者可以注册对影响其视图的属性更改的兴趣。这种方法的缺点是,当删除编辑器或视图时,必须去除兴趣,否则,将导致异常。
关闭查看器后,首选项页面将更改。


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/

10-09 04:49