2012-08-01 172 views
3

我有一個RCP應用程序,當RCP作爲應用程序運行時,我需要在首選項頁面中將某些值設置爲默認值。我需要隱藏快速視圖欄和某些菜單,這就是爲什麼我需要從首選項頁面設置這些設置的原因。如何在Eclipse RCP應用程序中爲首選項設置默認值

我的應用程序還不是產品,所以我不能使用plugin_customization.ini文件進行更改。

任何人都可以告訴我一種方法來通過偏好頁面或任何其他方式以編程方式更改默認值?

回答

7

您可以使用擴展點org.eclipse.core.runtime.preferences

<extension 
     point="org.eclipse.core.runtime.preferences"> 
     <scope name="SamplePreferencePage" class="com.example.SamlePreferencePage"/> 
     <initializer 
      class="com.example.PreferenceInitializer"> 
     </initializer> 
    </extension> 
+0

我使用這個擴展點,但我不知道偏好名字來設置它的值當我使用setValues(String PreferenceName,布爾值) – Shereen 2012-08-02 09:15:58

+0

如果我想隱藏快速查看酒吧布爾由true我應該寫爲偏好名稱? – Shereen 2012-08-02 09:17:09

+0

這是您的應用程序的首選項;你可以隨心所欲地調用它。稱之爲「HideFastViewBar」。 – stracka 2012-08-02 15:24:50

10

定義擴展點爲您偏好頁面,該頁面的初始化類:

一個例子首選項頁面實現可能看起來像:

public class MyPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { 
    public static final String PREF_USE_METRIC_UNITS = "PREF_USE_METRIC_UNITS"; 
    public static final String PREF_AUTO_UPDATE = "PREF_AUTO_UPDATE"; 
    public static final String PREF_USER_FILES_DIR = "PREF_USER_FILES_DIR"; 
    public static final String PREF_FAVORITE_ANIMAL = "PREF_FAVORITE_ANIMAL"; 

    public MyPreferencePage() { 
     super(GRID); 
    } 

    public void createFieldEditors() { 
     Composite parent = getFieldEditorParent(); 
     addField(new BooleanFieldEditor(PREF_USE_METRIC_UNITS, "Use &metric units", parent)); 
     addField(new BooleanFieldEditor(PREF_AUTO_UPDATE, "&Auto update", parent)); 

     addField(new DirectoryFieldEditor(PREF_USER_FILES_DIR, "User files &path:", parent)); 

     addField(new StringFieldEditor(PREF_FAVORITE_ANIMAL, "Favorite &animal:", parent)); 
    } 

    public void init(IWorkbench workbench) { 
     setPreferenceStore(Plugin.getPlugin().getPreferenceStore()); 
    } 
} 

然後你設置你的AbstractPreferenceInitializer類實際的默認值:

public class MyPreferenceInitializer extends AbstractPreferenceInitializer { 
    @Override 
    public void initializeDefaultPreferences() { 
     IPreferenceStore store = Plugin.getPlugin().getPreferenceStore(); 

     store.setDefault(MyPreferencePage.PREF_USE_METRIC_UNITS, true); 
     store.setDefault(MyPreferencePage.PREF_AUTO_UPDATE, false); 

     String userHome = System.getProperty("user.home"); 
     String defaultPath = userHome + "\\Local Settings\\Temp\\"; 
     store.setDefault(MyPreferencePage.PREF_USER_FILES_DIR, defaultPath); 

     store.setDefault(MyPreferencePage.PREF_FAVORITE_ANIMAL, "platypus"); 
    } 
} 
+0

因爲你的答案是延伸我的,我會給你一個+1;) – aphex 2012-08-03 08:17:42

+0

我喜歡提供的代碼示例。但是「爲您的首選項頁面定義擴展點」的措辭有點含糊。看起來實際上有兩個可以限定的擴展點(org.eclipse.core.runtime.preferences或org.eclipse.ui.preferencePages)。如果你確切地命名了擴展點,答案會更好。幸運的是,我在@aphex的回答中找到了問題部分的答案。我猜這兩個答案在提供一個完整的圖片方面有點互補:-) – Kris 2018-02-02 18:13:46

相關問題