2012-06-15 51 views
3

我想使用Eclipse機制在我的RCP應用程序中設置默認首選項。因此,我擴展的類AbstractPreferenceInitializer設置我的默認首選項:實現AbstractPreferenceInitializer不會在我的Eclipse RCP中調用

public class PreferenceInitializer extends AbstractPreferenceInitializer { 
    @Override 
    public void initializeDefaultPreferences() { 
    IPreferenceStore preferenceStore = PlatformUI.getPreferenceStore(); 
    preferenceStore.setDefault("xyz", xyz); 
    preferenceStore.setDefault("abc", false); 
    } 
} 

然後我定義的擴展點:

<extension point="org.eclipse.core.runtime.preferences"> 
    <initializer class="com.abc.PreferenceInitializer"> 
    </initializer> 
</extension> 

但不幸的是,初始化將不會啓動時調用(而Eclipse的WorkbenchPreferenceInitializer會叫做)。

有人可以給我一個提示,該怎麼做,讓這個運行?

回答

4

您的偏好初始化代碼將不會被調用,直到需要這些默認值(而不是在應用程序啓動時,我猜測是您的期望)。

如果您有一個使用您的首選項名稱包含某些FieldEditor的首選項頁面,則當您轉到首選項對話框並選擇該首選項頁面時,首選項初始化程序將被調用

線沿線的東西:

public class MyPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { 

    public void createFieldEditors() { 
     Composite parent = getFieldEditorParent(); 
     addField(new StringFieldEditor(Constants.PREFERENCES.FILE_COMPARE_TOOL_LOCATION, "File compare tool location", parent)); 
     addField(new StringFieldEditor("xyz", "XYZ Value", parent)); 
     addField(new BooleanFieldEditor("abc", "Enable the ABC widget", parent)); 
    } 

} 

和當然,擴展點的頁:

<extension point="org.eclipse.ui.preferencePages"> 
    <page 
     class="whatever.package.MyPreferencePage" 
     id="whatever.package.MyPreferencePage" 
     name="MyPrefs"> 
    </page> 
</extension>