PreferencePage或FieldEditorPreferencePage

时间:2010-03-19 02:48:04

标签: java eclipse plugins

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

1 个答案:

答案 0 :(得分:5)

灵感来自this thread

可能有两类偏好:

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

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

  3. Bug 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();
    }