PreferencePage或FieldEditorPreferencePage

fas*_*ava 2 java eclipse plugins

在eclipse中做PreferencePage的最佳方法是什么?

Von*_*onC 5

灵感来自这个主题:

可能有两类偏好:

  1. 那些只是编辑器,视图或构建器在需要时访问和获取的数据.
    在第一种情况下,似乎最好的方法是使用a FieldEditorPreferencePage来显示,输入,验证和存储首选项.
    为了获取值,子类可以提供方便的方法来获取首选项存储和查询并返回给定其id的值.

  2. 那些影响已经运行的编辑器或视图.
    需要向打开的编辑者和/或视图通知发生的更改,以便他们可以相应地更新其视图.
    这可以通过迭代FieldEditorPreferencPage.performOk()方法中受影响的编辑器和视图来完成,但这似乎会产生不合需要的耦合:首选项页面必须知道如何更新相应的查看器.
    另一种可能是使用的事实,FieldEditorPreferencePageIPropertyChangeListener在财产的变化,因此编辑人员可以注册兴趣是影响了自己的看法.这种方法的缺点是,当删除编辑器或视图时必须删除兴趣,或者如果在关闭查看器后更改首选项页面,则会引发异常.

错误143727引用了有关首选项的最新(即"Eclipse3.x")文章:

它附带的"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();
}
Run Code Online (Sandbox Code Playgroud)